Coverage for tests/publisher/tests_register_name.py: 100%

88 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-28 22:05 +0000

1import responses 

2from tests.publisher.endpoint_testing import BaseTestCases 

3 

4 

5class GetRegisterNamePageNotAuth(BaseTestCases.EndpointLoggedOut): 

6 def setUp(self): 

7 endpoint_url = "/register-snap" 

8 super().setUp(snap_name=None, endpoint_url=endpoint_url) 

9 

10 

11class GetRegisterNamePage(BaseTestCases.BaseAppTesting): 

12 def setUp(self): 

13 endpoint_url = "/register-snap" 

14 super().setUp(snap_name=None, api_url=None, endpoint_url=endpoint_url) 

15 self.user_url = "https://dashboard.snapcraft.io/dev/api/account" 

16 

17 @responses.activate 

18 def test_register_name_logged_in(self): 

19 self._log_in(self.client) 

20 

21 responses.add(responses.GET, self.user_url, status=200) 

22 

23 response = self.client.get(self.endpoint_url) 

24 

25 assert response.status_code == 200 

26 self.assert_template_used("store/publisher.html") 

27 

28 

29class PostRegisterNamePageNotAuth(BaseTestCases.EndpointLoggedOut): 

30 def setUp(self): 

31 endpoint_url = "/api/register-snap" 

32 

33 super().setUp( 

34 snap_name=None, endpoint_url=endpoint_url, method_endpoint="POST" 

35 ) 

36 

37 

38class PostRegisterNamePage(BaseTestCases.EndpointLoggedIn): 

39 def setUp(self): 

40 endpoint_url = "/api/register-snap" 

41 api_url = "https://dashboard.snapcraft.io/dev/api/register-name/" 

42 

43 data = {"snap_name": "test-snap"} 

44 

45 super().setUp( 

46 snap_name=None, 

47 api_url=api_url, 

48 endpoint_url=endpoint_url, 

49 method_api="POST", 

50 method_endpoint="POST", 

51 data=data, 

52 ) 

53 self.user_url = "https://dashboard.snapcraft.io/dev/api/account" 

54 

55 @responses.activate 

56 def test_post_snap_name(self): 

57 responses.add(responses.POST, self.api_url, json={}, status=200) 

58 

59 response = self.client.post(self.endpoint_url, data=self.data) 

60 

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

62 called = responses.calls[0] 

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

64 self.assertEqual( 

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

66 ) 

67 self.assertEqual(b'{"snap_name": "test-snap"}', called.request.body) 

68 

69 assert response.status_code == 200 

70 

71 @responses.activate 

72 def test_post_store(self): 

73 responses.add(responses.POST, self.api_url, json={}, status=200) 

74 

75 self.data["store"] = "store" 

76 response = self.client.post(self.endpoint_url, data=self.data) 

77 

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

79 called = responses.calls[0] 

80 self.assertEqual( 

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

82 ) 

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

84 self.assertIn(b'"snap_name": "test-snap"', called.request.body) 

85 self.assertIn(b'"store": "store"', called.request.body) 

86 

87 assert response.status_code == 200 

88 

89 @responses.activate 

90 def test_post_private(self): 

91 responses.add(responses.POST, self.api_url, json={}, status=200) 

92 

93 self.data["is_private"] = "private" 

94 response = self.client.post(self.endpoint_url, data=self.data) 

95 

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

97 called = responses.calls[0] 

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

99 self.assertEqual( 

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

101 ) 

102 self.assertIn(b'"snap_name": "test-snap"', called.request.body) 

103 self.assertIn(b'"is_private": true', called.request.body) 

104 

105 assert response.status_code == 200 

106 

107 @responses.activate 

108 def test_name_already_registered(self): 

109 payload = {"error_list": [{"code": "already_registered"}]} 

110 responses.add(responses.POST, self.api_url, json=payload, status=409) 

111 

112 user_payload = {"error_list": [], "stores": []} 

113 responses.add( 

114 responses.GET, self.user_url, json=user_payload, status=200 

115 ) 

116 

117 response = self.client.post(self.endpoint_url, data=self.data) 

118 

119 assert response.status_code == 200 

120 assert ( 

121 response.get_json()["data"]["error_code"] == "already_registered" 

122 ) 

123 

124 @responses.activate 

125 def test_name_reserved(self): 

126 payload = {"error_list": [{"code": "reserved_name"}]} 

127 responses.add(responses.POST, self.api_url, json=payload, status=409) 

128 

129 user_payload = {"error_list": [], "stores": []} 

130 responses.add( 

131 responses.GET, self.user_url, json=user_payload, status=200 

132 ) 

133 

134 response = self.client.post(self.endpoint_url, data=self.data) 

135 

136 assert response.status_code == 200 

137 assert response.get_json()["data"]["error_code"] == "reserved_name" 

138 

139 @responses.activate 

140 def test_claim_dispute(self): 

141 payload = { 

142 "success": False, 

143 "data": { 

144 "snap_name": "test-snap", 

145 "is_private": "private", 

146 "store": "store", 

147 "error_code": "already_claimed", 

148 }, 

149 } 

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

151 

152 response = self.client.post(self.endpoint_url, data=self.data) 

153 

154 assert response.status_code == 200 

155 assert response.get_json()["success"] is True