Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1import responses 

2from tests.publisher.endpoint_testing import BaseTestCases 

3 

4 

5class PostReleasePageNotAuth(BaseTestCases.EndpointLoggedOut): 

6 def setUp(self): 

7 snap_name = "test-snap" 

8 endpoint_url = "/{}/releases".format(snap_name) 

9 

10 super().setUp( 

11 snap_name=snap_name, 

12 endpoint_url=endpoint_url, 

13 method_endpoint="POST", 

14 ) 

15 

16 

17class PostDataReleasePage(BaseTestCases.EndpointLoggedIn): 

18 def setUp(self): 

19 snap_name = "test-snap" 

20 endpoint_url = "/{}/releases".format(snap_name) 

21 api_url = "https://dashboard.snapcraft.io/dev/api/snap-release/" 

22 

23 super().setUp( 

24 snap_name=snap_name, 

25 api_url=api_url, 

26 endpoint_url=endpoint_url, 

27 method_api="POST", 

28 method_endpoint="POST", 

29 json={"json": "josn"}, 

30 ) 

31 

32 @responses.activate 

33 def test_page_not_found(self): 

34 payload = {"error_list": []} 

35 responses.add(responses.POST, self.api_url, json=payload, status=404) 

36 

37 response = self.client.post( 

38 self.endpoint_url, 

39 json={ 

40 "name": self.snap_name, 

41 "revision": "1", 

42 "channels": ["stable"], 

43 }, 

44 ) 

45 

46 self.assertEqual(1, len(responses.calls)) 

47 called = responses.calls[0] 

48 self.assertEqual(self.api_url, called.request.url) 

49 self.assertEqual( 

50 self.authorization, called.request.headers.get("Authorization") 

51 ) 

52 

53 assert response.status_code == 404 

54 self.assert_template_used("404.html") 

55 

56 @responses.activate 

57 def test_post_no_data(self): 

58 response = self.client.post(self.endpoint_url, json={}) 

59 

60 assert response.status_code == 400 

61 assert response.get_json() == {"errors": ["No changes were submitted"]} 

62 

63 @responses.activate 

64 def test_post_data(self): 

65 payload = { 

66 "success": True, 

67 "channel_map": [ 

68 { 

69 "info": "specific", 

70 "version": "2.7", 

71 "channel": "stable", 

72 "revision": 1, 

73 }, 

74 {"info": "none", "channel": "candidate"}, 

75 {"info": "tracking", "channel": "beta"}, 

76 {"info": "tracking", "channel": "edge"}, 

77 ], 

78 "opened_channels": ["candidate"], 

79 } 

80 

81 responses.add(responses.POST, self.api_url, json=payload, status=200) 

82 

83 response = self.client.post( 

84 self.endpoint_url, 

85 json={ 

86 "name": self.snap_name, 

87 "revision": "1", 

88 "channels": ["stable"], 

89 }, 

90 ) 

91 

92 self.assertEqual(1, len(responses.calls)) 

93 called = responses.calls[0] 

94 self.assertEqual(self.api_url, called.request.url) 

95 self.assertEqual( 

96 self.authorization, called.request.headers.get("Authorization") 

97 ) 

98 

99 assert response.json == payload 

100 

101 @responses.activate 

102 def test_return_error(self): 

103 payload = {"success": False, "errors": [{"name": ["message"]}]} 

104 

105 responses.add(responses.POST, self.api_url, json=payload, status=400) 

106 

107 response = self.client.post( 

108 self.endpoint_url, 

109 json={ 

110 "name": self.snap_name, 

111 "revision": "1", 

112 "channels": ["stable"], 

113 }, 

114 ) 

115 

116 assert response.json == payload