Skip to content
This repository has been archived by the owner on Sep 26, 2019. It is now read-only.

Commit

Permalink
Merge "Enforce schema for admin endpoints"
Browse files Browse the repository at this point in the history
  • Loading branch information
Jenkins authored and openstack-gerrit committed Aug 25, 2016
2 parents 052eced + ef61e85 commit 15f2093
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 2 deletions.
4 changes: 3 additions & 1 deletion poppy/transport/validators/schemas/background_jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@

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': {
Expand All @@ -38,6 +39,7 @@ class BackgroundJobSchema(schema_base.SchemaBase):
}
},
{
'type': 'object',
'additionalProperties': False,
'properties': {
'job_type': {
Expand Down
3 changes: 2 additions & 1 deletion poppy/transport/validators/schemas/service_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@

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': {
Expand Down
85 changes: 85 additions & 0 deletions tests/functional/transport/pecan/controllers/test_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,88 @@ def test_get_akamai_settings_negative(self):
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)

0 comments on commit 15f2093

Please sign in to comment.