diff --git a/poppy/transport/validators/schemas/background_jobs.py b/poppy/transport/validators/schemas/background_jobs.py index bec9654c..9b446dc8 100644 --- a/poppy/transport/validators/schemas/background_jobs.py +++ b/poppy/transport/validators/schemas/background_jobs.py @@ -18,12 +18,13 @@ from poppy.transport.validators import schema_base class BackgroundJobSchema(schema_base.SchemaBase): - """JSON Schema validation for /admin/provider/akamai/background_jobs""" + """JSON Schema validation for /admin/provider/akamai/background_job""" schema = { 'background_jobs': { 'POST': { 'type': [{ + 'type': 'object', 'additionalProperties': False, 'properties': { 'job_type': { @@ -38,6 +39,7 @@ class BackgroundJobSchema(schema_base.SchemaBase): } }, { + 'type': 'object', 'additionalProperties': False, 'properties': { 'job_type': { diff --git a/poppy/transport/validators/schemas/service_status.py b/poppy/transport/validators/schemas/service_status.py index 1e6e1218..51fac4b5 100644 --- a/poppy/transport/validators/schemas/service_status.py +++ b/poppy/transport/validators/schemas/service_status.py @@ -20,12 +20,13 @@ from poppy.transport.validators import schema_base class ServiceStatusSchema(schema_base.SchemaBase): - """JSON Schema validation for /admin/services/{service_id}/status.""" + """JSON Schema validation for /admin/services/status.""" schema = { 'service_status': { 'POST': { 'type': [{ + 'type': 'object', 'additionalProperties': False, 'properties': { 'status': { diff --git a/tests/functional/transport/pecan/controllers/test_admin.py b/tests/functional/transport/pecan/controllers/test_admin.py index 47aa5444..ab0fd555 100644 --- a/tests/functional/transport/pecan/controllers/test_admin.py +++ b/tests/functional/transport/pecan/controllers/test_admin.py @@ -86,3 +86,88 @@ class AdminControllerTest(base.FunctionalTest): expect_errors=True ) self.assertEqual(400, response.status_code) + + def test_post_background_job_negative(self): + response = self.app.post( + '/v1.0/admin/provider/akamai/background_job', + headers={ + 'Content-Type': 'application/json', + 'X-Project-ID': self.project_id + }, + params=json.dumps([]), + expect_errors=True + ) + self.assertEqual(400, response.status_code) + + def test_post_service_status_negative(self): + response = self.app.post( + '/v1.0/admin/services/status', + headers={ + 'Content-Type': 'application/json', + 'X-Project-ID': self.project_id + }, + params=json.dumps([]), + expect_errors=True + ) + self.assertEqual(400, response.status_code) + + def test_post_migrate_domain_invalid_domain_name(self): + payload = { + "project_id": self.project_id, + "service_id": "abcdef", + "domain_name": "invalid", + "new_cert": "scdn1.secure6.raxcdn.com.edgekey.net", + "cert_status": "create_in_progress" + } + + # post with bad data + response = self.app.post( + '/v1.0/admin/provider/akamai/service', + params=json.dumps(payload), + headers={ + 'Content-Type': 'application/json', + 'X-Project-ID': self.project_id + }, + expect_errors=True + ) + self.assertEqual(400, response.status_code) + + def test_post_migrate_domain_non_existant_service(self): + payload = { + "project_id": self.project_id, + "service_id": "does_not_exist", + "domain_name": "www.test.com", + "new_cert": "scdn1.secure6.raxcdn.com", + "cert_status": "create_in_progress" + } + + response = self.app.post( + '/v1.0/admin/provider/akamai/service', + params=json.dumps(payload), + headers={ + 'Content-Type': 'application/json', + 'X-Project-ID': self.project_id + }, + expect_errors=True + ) + self.assertEqual(404, response.status_code) + + def test_post_migrate_domain_new_cert_with_edge_key(self): + payload = { + "project_id": self.project_id, + "service_id": "does_not_exist", + "domain_name": "www.test.com", + "new_cert": "scdn1.secure6.raxcdn.com.edgekey.net", + "cert_status": "create_in_progress" + } + + response = self.app.post( + '/v1.0/admin/provider/akamai/service', + params=json.dumps(payload), + headers={ + 'Content-Type': 'application/json', + 'X-Project-ID': self.project_id + }, + expect_errors=True + ) + self.assertEqual(404, response.status_code)