mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-23 00:41:35 -05:00
My local build was not always getting the optional requirement for the jsonschema uri format checker (rfc3987). The requirement has been added to the requirements_for_test file. I changed the tests to validate the response schema from the post_notifications tests, this way we can tell if we are breaking the contract. This showed that the email_from was not returning the entire email address but just the username, that has been corrected here. Removed the response schema validation tests since they are not being testing in the post notification tests.
236 lines
7.5 KiB
Python
236 lines
7.5 KiB
Python
from app.models import NOTIFICATION_STATUS_TYPES, TEMPLATE_TYPES
|
|
from app.schema_validation.definitions import (uuid, personalisation, letter_personalisation)
|
|
|
|
|
|
template = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "template schema",
|
|
"type": "object",
|
|
"title": "notification content",
|
|
"properties": {
|
|
"id": uuid,
|
|
"version": {"type": "integer"},
|
|
"uri": {"type": "string", "format": "uri"}
|
|
},
|
|
"required": ["id", "version", "uri"]
|
|
}
|
|
|
|
get_notification_response = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "GET notification response schema",
|
|
"type": "object",
|
|
"title": "response v2/notification",
|
|
"properties": {
|
|
"id": uuid,
|
|
"reference": {"type": ["string", "null"]},
|
|
"email_address": {"type": ["string", "null"]},
|
|
"phone_number": {"type": ["string", "null"]},
|
|
"line_1": {"type": ["string", "null"]},
|
|
"line_2": {"type": ["string", "null"]},
|
|
"line_3": {"type": ["string", "null"]},
|
|
"line_4": {"type": ["string", "null"]},
|
|
"line_5": {"type": ["string", "null"]},
|
|
"line_6": {"type": ["string", "null"]},
|
|
"postcode": {"type": ["string", "null"]},
|
|
"type": {"enum": ["sms", "letter", "email"]},
|
|
"status": {"type": "string"},
|
|
"template": template,
|
|
"body": {"type": "string"},
|
|
"subject": {"type": ["string", "null"]},
|
|
"created_at": {"type": "string"},
|
|
"sent_at": {"type": ["string", "null"]},
|
|
"completed_at": {"type": ["string", "null"]},
|
|
"scheduled_for": {"type": ["string", "null"]}
|
|
},
|
|
"required": [
|
|
# technically, all keys are required since we always have all of them
|
|
"id", "reference", "email_address", "phone_number",
|
|
"line_1", "line_2", "line_3", "line_4", "line_5", "line_6", "postcode",
|
|
"type", "status", "template", "body", "created_at", "sent_at", "completed_at"
|
|
]
|
|
}
|
|
|
|
get_notifications_request = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "schema for query parameters allowed when getting list of notifications",
|
|
"type": "object",
|
|
"properties": {
|
|
"reference": {"type": "string"},
|
|
"status": {
|
|
"type": "array",
|
|
"items": {
|
|
"enum": NOTIFICATION_STATUS_TYPES
|
|
}
|
|
},
|
|
"template_type": {
|
|
"type": "array",
|
|
"items": {
|
|
"enum": TEMPLATE_TYPES
|
|
}
|
|
},
|
|
"older_than": uuid
|
|
},
|
|
"additionalProperties": False,
|
|
}
|
|
|
|
get_notifications_response = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "GET list of notifications response schema",
|
|
"type": "object",
|
|
"properties": {
|
|
"notifications": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"ref": get_notification_response
|
|
}
|
|
},
|
|
"links": {
|
|
"type": "object",
|
|
"properties": {
|
|
"current": {
|
|
"type": "string"
|
|
},
|
|
"next": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": False,
|
|
"required": ["current"]
|
|
}
|
|
},
|
|
"additionalProperties": False,
|
|
"required": ["notifications", "links"]
|
|
}
|
|
|
|
post_sms_request = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "POST sms notification schema",
|
|
"type": "object",
|
|
"title": "POST v2/notifications/sms",
|
|
"properties": {
|
|
"reference": {"type": "string"},
|
|
"phone_number": {"type": "string", "format": "phone_number"},
|
|
"template_id": uuid,
|
|
"personalisation": personalisation,
|
|
"scheduled_for": {"type": ["string", "null"], "format": "datetime"}
|
|
},
|
|
"required": ["phone_number", "template_id"]
|
|
}
|
|
|
|
sms_content = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "content schema for SMS notification response schema",
|
|
"type": "object",
|
|
"title": "notification content",
|
|
"properties": {
|
|
"body": {"type": "string"},
|
|
"from_number": {"type": "string"}
|
|
},
|
|
"required": ["body", "from_number"]
|
|
}
|
|
|
|
post_sms_response = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "POST sms notification response schema",
|
|
"type": "object",
|
|
"title": "response v2/notifications/sms",
|
|
"properties": {
|
|
"id": uuid,
|
|
"reference": {"type": ["string", "null"]},
|
|
"content": sms_content,
|
|
"uri": {"type": "string", "format": "uri"},
|
|
"template": template,
|
|
"scheduled_for": {"type": ["string", "null"]}
|
|
},
|
|
"required": ["id", "content", "uri", "template"]
|
|
}
|
|
|
|
|
|
post_email_request = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "POST email notification schema",
|
|
"type": "object",
|
|
"title": "POST v2/notifications/email",
|
|
"properties": {
|
|
"reference": {"type": "string"},
|
|
"email_address": {"type": "string", "format": "email_address"},
|
|
"template_id": uuid,
|
|
"personalisation": personalisation,
|
|
"scheduled_for": {"type": ["string", "null"], "format": "datetime"}
|
|
},
|
|
"required": ["email_address", "template_id"]
|
|
}
|
|
|
|
email_content = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "Email content for POST email notification",
|
|
"type": "object",
|
|
"title": "notification email content",
|
|
"properties": {
|
|
"from_email": {"type": "string", "format": "email_address"},
|
|
"body": {"type": "string"},
|
|
"subject": {"type": "string"}
|
|
},
|
|
"required": ["body", "from_email", "subject"]
|
|
}
|
|
|
|
post_email_response = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "POST email notification response schema",
|
|
"type": "object",
|
|
"title": "response v2/notifications/email",
|
|
"properties": {
|
|
"id": uuid,
|
|
"reference": {"type": ["string", "null"]},
|
|
"content": email_content,
|
|
"uri": {"type": "string", "format": "uri"},
|
|
"template": template,
|
|
"scheduled_for": {"type": ["string", "null"]}
|
|
},
|
|
"required": ["id", "content", "uri", "template"]
|
|
}
|
|
|
|
|
|
post_letter_request = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "POST letter notification schema",
|
|
"type": "object",
|
|
"title": "POST v2/notifications/letter",
|
|
"properties": {
|
|
"reference": {"type": "string"},
|
|
"template_id": uuid,
|
|
"personalisation": letter_personalisation
|
|
},
|
|
"required": ["template_id", "personalisation"]
|
|
}
|
|
|
|
letter_content = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "Letter content for POST letter notification",
|
|
"type": "object",
|
|
"title": "notification letter content",
|
|
"properties": {
|
|
"body": {"type": "string"},
|
|
"subject": {"type": "string"}
|
|
},
|
|
"required": ["body", "subject"]
|
|
}
|
|
|
|
post_letter_response = {
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"description": "POST sms notification response schema",
|
|
"type": "object",
|
|
"title": "response v2/notifications/letter",
|
|
"properties": {
|
|
"id": uuid,
|
|
"reference": {"type": ["string", "null"]},
|
|
"content": letter_content,
|
|
"uri": {"type": "string", "format": "uri"},
|
|
"template": template,
|
|
# letters cannot be scheduled
|
|
"scheduled_for": {"type": "null"}
|
|
},
|
|
"required": ["id", "content", "uri", "template"]
|
|
}
|