Coverage for tests/api/test_marketo_api.py: 100%

67 statements  

« prev     ^ index     » next       coverage.py v7.14.1, created at 2026-06-15 22:43 +0000

1# Standard library 

2import os 

3import unittest 

4 

5# Packages 

6import responses 

7 

8# Local modules 

9import webapp.api.marketo as marketo_api 

10 

11responses.mock.assert_all_requests_are_fired = True 

12 

13 

14class Marketo(unittest.TestCase): 

15 @responses.activate 

16 def test_auth(self): 

17 marketo_auth_url = "".join( 

18 [ 

19 "https://066-eov-335.mktorest.com/", 

20 "identity/oauth/token?", 

21 "grant_type=client_credentials&client_id=fake_id", 

22 "&client_secret=fake_secret", 

23 ] 

24 ) 

25 

26 marketo_auth_payload = {"access_token": "test"} 

27 

28 responses.add( 

29 responses.GET, 

30 marketo_auth_url, 

31 json=marketo_auth_payload, 

32 status=200, 

33 ) 

34 

35 marketo_leads_url = "".join( 

36 [ 

37 "https://066-eov-335.mktorest.com/", 

38 "rest/v1/leads.json?", 

39 "access_token=test&filterType=email", 

40 "&filterValues=testing@testing.com&fields=id", 

41 ] 

42 ) 

43 

44 marketo_leads_payload = {"result": [{"id": "test"}]} 

45 

46 responses.add( 

47 responses.GET, 

48 marketo_leads_url, 

49 json=marketo_leads_payload, 

50 status=200, 

51 ) 

52 

53 os.environ["MARKETO_CLIENT_ID"] = "fake_id" 

54 os.environ["MARKETO_CLIENT_SECRET"] = "fake_secret" 

55 marketo = marketo_api.Marketo() 

56 user = marketo.get_user("testing@testing.com") 

57 

58 self.assertEqual(user, {"id": "test"}) 

59 

60 @responses.activate 

61 def test_get_user(self): 

62 marketo_leads_url = "".join( 

63 [ 

64 "https://066-eov-335.mktorest.com/", 

65 "rest/v1/leads.json?", 

66 "access_token=test&filterType=email", 

67 "&filterValues=testing@testing.com&fields=id", 

68 ] 

69 ) 

70 

71 marketo_leads_payload = {"result": [{"id": "test"}]} 

72 

73 responses.add( 

74 responses.GET, 

75 marketo_leads_url, 

76 json=marketo_leads_payload, 

77 status=200, 

78 ) 

79 

80 marketo = marketo_api.Marketo() 

81 marketo.token = "test" 

82 user = marketo.get_user("testing@testing.com") 

83 

84 self.assertEqual(user, {"id": "test"}) 

85 

86 @responses.activate 

87 def test_get_newsletter_subscription(self): 

88 marketo_lead_url = "".join( 

89 [ 

90 "https://066-eov-335.mktorest.com/", 

91 "rest/v1/lead/test.json?", 

92 "access_token=test&fields=id,email,snapcraftnewsletter", 

93 ] 

94 ) 

95 

96 marketo_lead_payload = {"result": [{"snapcraftnewsletter": True}]} 

97 

98 responses.add( 

99 responses.GET, 

100 marketo_lead_url, 

101 json=marketo_lead_payload, 

102 status=200, 

103 ) 

104 

105 marketo = marketo_api.Marketo() 

106 marketo.token = "test" 

107 subscription = marketo.get_newsletter_subscription("test") 

108 

109 self.assertEqual(subscription, {"snapcraftnewsletter": True}) 

110 

111 @responses.activate 

112 def test_get_newsletter_subscription_bad_response(self): 

113 marketo_lead_url = "".join( 

114 [ 

115 "https://066-eov-335.mktorest.com/", 

116 "rest/v1/lead/test.json?", 

117 "access_token=test&fields=id,email,snapcraftnewsletter", 

118 ] 

119 ) 

120 

121 marketo_lead_payload = {"badkey": "bad"} 

122 

123 responses.add( 

124 responses.GET, 

125 marketo_lead_url, 

126 json=marketo_lead_payload, 

127 status=200, 

128 ) 

129 

130 marketo = marketo_api.Marketo() 

131 marketo.token = "test" 

132 subscription = marketo.get_newsletter_subscription("test") 

133 

134 self.assertEqual(subscription, {}) 

135 

136 @responses.activate 

137 def test_set_newsletter_subscription(self): 

138 marketo_set_subscription_url = "".join( 

139 [ 

140 "https://066-eov-335.mktorest.com/", 

141 "rest/v1/leads.json?", 

142 "access_token=test", 

143 ] 

144 ) 

145 

146 responses.add( 

147 responses.POST, 

148 marketo_set_subscription_url, 

149 json={}, 

150 status=200, 

151 ) 

152 

153 marketo = marketo_api.Marketo() 

154 marketo.token = "test" 

155 response = marketo.set_newsletter_subscription("test", True) 

156 

157 self.assertEqual(response, {}) 

158 

159 @responses.activate 

160 def test_token_refresh(self): 

161 marketo_leads_url = "".join( 

162 [ 

163 "https://066-eov-335.mktorest.com/", 

164 "rest/v1/leads.json?", 

165 "access_token=test&filterType=email", 

166 "&filterValues=testing@testing.com&fields=id", 

167 ] 

168 ) 

169 

170 marketo_leads_payload = {"result": [{"id": "test"}]} 

171 

172 responses.add(responses.GET, marketo_leads_url, status=602) 

173 

174 marketo_auth_url = "".join( 

175 [ 

176 "https://066-eov-335.mktorest.com/", 

177 "identity/oauth/token?", 

178 "grant_type=client_credentials&client_id=fake_id", 

179 "&client_secret=fake_secret", 

180 ] 

181 ) 

182 

183 marketo_auth_payload = {"access_token": "refreshed_token"} 

184 

185 responses.add( 

186 responses.GET, 

187 marketo_auth_url, 

188 json=marketo_auth_payload, 

189 status=200, 

190 ) 

191 

192 responses.add( 

193 responses.GET, 

194 marketo_leads_url, 

195 json=marketo_leads_payload, 

196 status=200, 

197 ) 

198 

199 marketo = marketo_api.Marketo() 

200 marketo.token = "test" 

201 marketo.get_user("testing@testing.com") 

202 

203 self.assertEqual(marketo.token, "refreshed_token")