Skip to content

Commit

Permalink
feat: Create validation sets endpoints (#4802)
Browse files Browse the repository at this point in the history
  • Loading branch information
steverydz authored Aug 13, 2024
1 parent a1b06d1 commit 976fb09
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 1 deletion.
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ canonicalwebteam.discourse==5.6.1
canonicalwebteam.blog==6.4.2
canonicalwebteam.search==1.3.0
canonicalwebteam.image-template==1.3.1
canonicalwebteam.store-api==4.13.2
canonicalwebteam.store-api==4.14.0
canonicalwebteam.launchpad==0.9.0
canonicalwebteam.store-base==0.5.0
django-openid-auth==0.17
Expand Down
19 changes: 19 additions & 0 deletions tests/store/tests_validation_sets.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from unittest.mock import patch


class GetValidationSetsTest:
@patch("webapp.store.get_validation_sets")
def test_get_validation_sets(self, mock_get_validation_sets):
mock_get_validation_sets.return_value = {"assertions": []}
response = self.client.get("/api/validation-sets")
data = response.json
self.assertEqual(response.status_code, 200)
self.assertIsNotNone(data["data"])

@patch("webapp.store.get_validation_set")
def test_get_validation_set(self, mock_get_validation_set):
mock_get_validation_set.return_value = {"assertions": []}
response = self.client.get("/api/validation-sets/validation-set-id")
data = response.json
self.assertEqual(response.status_code, 200)
self.assertIsNotNone(data["data"])
65 changes: 65 additions & 0 deletions webapp/store/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,71 @@ def store_blueprint(store_query=None):
)
snap_details_views(store, api)

def format_validation_set(validation_set):
return validation_set["headers"]

@store.route("/api/validation-sets")
@login_required
def get_validation_sets():
res = {}

try:
validation_sets = publisher_api.get_validation_sets(flask.session)
res["success"] = True

if len(validation_sets["assertions"]) > 0:
res["data"] = [
format_validation_set(item)
for item in validation_sets["assertions"]
]
else:
res["data"] = []

response = flask.make_response(res, 200)
response.cache_control.max_age = "3600"
except StoreApiError as error_list:
error_messages = [
f"{error.get('message', 'An error occurred')}"
for error in error_list.errors
]

res["message"] = " ".join(error_messages)
res["success"] = False
response = flask.make_response(res, 500)

return response

@store.route("/api/validation-sets/<validation_set_id>")
@login_required
def get_validation_set(validation_set_id):
res = {}

try:
validation_set = publisher_api.get_validation_set(
flask.session, validation_set_id
)
res["success"] = True

if len(validation_set["assertions"]) > 0:
res["data"] = format_validation_set(
validation_set["assertions"][0]
)
else:
res["data"] = {}
response = flask.make_response(res, 200)
response.cache_control.max_age = "3600"
except StoreApiError as error_list:
error_messages = [
f"{error.get('message', 'An error occurred')}"
for error in error_list.errors
]

res["message"] = " ".join(error_messages)
res["success"] = False
response = flask.make_response(res, 500)

return response

@store.route("/discover")
def discover():
return flask.redirect(flask.url_for(".homepage"))
Expand Down

0 comments on commit 976fb09

Please sign in to comment.