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

6 def setUp(self): 

7 snap_name = "test-snap" 

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

9 

10 super().setUp(snap_name=snap_name, endpoint_url=endpoint_url) 

11 

12 

13class GetPubliciseBadgesPage(BaseTestCases.EndpointLoggedInErrorHandling): 

14 snap_payload = { 

15 "snap-id": "id", 

16 "name": "snapName", 

17 "default-track": "test", 

18 "snap": { 

19 "title": "Snap Title", 

20 "summary": "This is a summary", 

21 "description": "this is a description", 

22 "media": [], 

23 "license": "license", 

24 "publisher": { 

25 "display-name": "Toto", 

26 "username": "toto", 

27 "validation": True, 

28 }, 

29 "categories": [], 

30 "trending": False, 

31 }, 

32 "channel-map": [], 

33 } 

34 

35 def setUp(self): 

36 snap_name = "test-snap" 

37 

38 api_url = "https://dashboard.snapcraft.io/dev/api/snaps/info/{}" 

39 api_url = api_url.format(snap_name) 

40 self.public_api_url = "".join( 

41 [ 

42 "https://api.snapcraft.io/v2/", 

43 "snaps/info/", 

44 snap_name, 

45 "?fields=title%2Csummary%2Cdescription%2Clicense%2Ccontact%2C", 

46 "website%2Cpublisher%2Cmedia%2Cdownload%2Cversion%2C", 

47 "created-at%2Cconfinement%2Ccategories%2Ctrending%2Cunlisted", 

48 "%2Clinks", 

49 ] 

50 ) 

51 

52 endpoint_url = "/{}/publicise/badges".format(snap_name) 

53 

54 super().setUp( 

55 snap_name=snap_name, 

56 endpoint_url=endpoint_url, 

57 method_endpoint="GET", 

58 api_url=api_url, 

59 method_api="GET", 

60 ) 

61 

62 @responses.activate 

63 def test_page_not_found(self): 

64 payload = {"error_list": []} 

65 responses.add(responses.GET, self.api_url, json=payload, status=404) 

66 

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

68 

69 self.check_call_by_api_url(responses.calls) 

70 

71 self.assertEqual(response.status_code, 404) 

72 self.assert_template_used("404.html") 

73 

74 @responses.activate 

75 def test_publicise_logged_in(self): 

76 snap_name = "test-snap" 

77 

78 payload = { 

79 "snap_id": "id", 

80 "title": "test snap", 

81 "private": False, 

82 "snap_name": snap_name, 

83 "keywords": [], 

84 "media": [], 

85 "publisher": {"display-name": "test"}, 

86 } 

87 

88 responses.add(responses.GET, self.api_url, json=payload, status=200) 

89 responses.add( 

90 responses.GET, 

91 self.public_api_url, 

92 json=self.snap_payload, 

93 status=200, 

94 ) 

95 

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

97 

98 self.check_call_by_api_url(responses.calls) 

99 

100 self.assertEqual(response.status_code, 200) 

101 self.assert_template_used("publisher/publicise/github_badges.html") 

102 

103 self.assert_context("snap_id", "id") 

104 self.assert_context("snap_title", "test snap") 

105 self.assert_context("snap_name", snap_name) 

106 

107 @responses.activate 

108 def test_publicise_private_snap(self): 

109 snap_name = "test-snap" 

110 

111 payload = { 

112 "snap_id": "id", 

113 "title": "test snap", 

114 "private": True, 

115 "snap_name": snap_name, 

116 "keywords": [], 

117 "media": [], 

118 } 

119 

120 responses.add(responses.GET, self.api_url, json=payload, status=200) 

121 

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

123 

124 self.check_call_by_api_url(responses.calls) 

125 

126 self.assertEqual(response.status_code, 404) 

127 self.assert_template_used("404.html")