Coverage for webapp/endpoints/validation_sets.py: 31%

45 statements  

« prev     ^ index     » next       coverage.py v7.10.2, created at 2025-08-05 22:06 +0000

1import flask 

2 

3from canonicalwebteam.exceptions import StoreApiError 

4from canonicalwebteam.store_api.dashboard import Dashboard 

5 

6from webapp.decorators import login_required 

7from webapp.helpers import api_session 

8 

9dashboard = Dashboard(api_session) 

10 

11validation_sets = flask.Blueprint( 

12 "validation-sets", 

13 __name__, 

14) 

15 

16 

17def format_validation_set(validation_set): 

18 return validation_set["headers"] 

19 

20 

21@validation_sets.route("/api/validation-sets") 

22@login_required 

23def get_validation_sets(): 

24 res = {} 

25 

26 try: 

27 validation_sets_data = dashboard.get_validation_sets(flask.session) 

28 res["success"] = True 

29 

30 if len(validation_sets_data["assertions"]) > 0: 

31 res["data"] = [ 

32 format_validation_set(item) 

33 for item in validation_sets_data["assertions"] 

34 ] 

35 else: 

36 res["data"] = [] 

37 

38 response = flask.make_response(res, 200) 

39 response.cache_control.max_age = "3600" 

40 except StoreApiError as error_list: 

41 error_messages = [ 

42 f"{error.get('message', 'An error occurred')}" 

43 for error in error_list.errors 

44 ] 

45 

46 res["message"] = " ".join(error_messages) 

47 res["success"] = False 

48 response = flask.make_response(res, 500) 

49 

50 return response 

51 

52 

53@validation_sets.route("/api/validation-sets/<validation_set_id>") 

54@login_required 

55def get_validation_set(validation_set_id): 

56 res = {} 

57 

58 try: 

59 validation_set = dashboard.get_validation_set( 

60 flask.session, validation_set_id 

61 ) 

62 res["success"] = True 

63 

64 if len(validation_set["assertions"]) > 0: 

65 res["data"] = [ 

66 format_validation_set(item) 

67 for item in validation_set["assertions"] 

68 ] 

69 else: 

70 res["data"] = [] 

71 

72 response = flask.make_response(res, 200) 

73 response.cache_control.max_age = "3600" 

74 except StoreApiError as error_list: 

75 error_messages = [ 

76 f"{error.get('message', 'An error occurred')}" 

77 for error in error_list.errors 

78 ] 

79 

80 res["message"] = " ".join(error_messages) 

81 res["success"] = False 

82 response = flask.make_response(res, 500) 

83 

84 return response