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

45 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 PostRegisterNameJsonNotAuth(BaseTestCases.EndpointLoggedOut): 

6 def setUp(self): 

7 endpoint_url = "/register-snap/json" 

8 

9 super().setUp( 

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

11 ) 

12 

13 

14class PostRegisterNameJson(BaseTestCases.EndpointLoggedIn): 

15 def setUp(self): 

16 endpoint_url = "/register-snap/json" 

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

18 

19 data = {"snap-name": "test-snap"} 

20 

21 super().setUp( 

22 snap_name=None, 

23 api_url=api_url, 

24 endpoint_url=endpoint_url, 

25 method_api="POST", 

26 method_endpoint="POST", 

27 data=data, 

28 ) 

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

30 

31 @responses.activate 

32 def test_post_no_data(self): 

33 response = self.client.post(self.endpoint_url) 

34 

35 self.assert400(response) 

36 self.assertEqual(len(response.json["errors"]), 1) 

37 

38 @responses.activate 

39 def test_post_snap_name(self): 

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

41 

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

43 

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

45 called = responses.calls[0] 

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

47 self.assertEqual( 

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

49 ) 

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

51 

52 self.assert200(response) 

53 self.assertEqual(response.json["code"], "created") 

54 

55 @responses.activate 

56 def test_name_already_registered(self): 

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

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

59 

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

61 errors = response.json["errors"] 

62 self.assertStatus(response, 409) 

63 self.assertEqual(len(errors), 1) 

64 self.assertEqual(errors[0]["code"], "already_registered") 

65 

66 @responses.activate 

67 def test_name_already_owned(self): 

68 payload = {"error_list": [{"code": "already_owned"}]} 

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

70 

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

72 

73 self.assert200(response) 

74 self.assertEqual(response.json["code"], "already_owned")