@@ -1164,6 +1164,39 @@ def test_active_email_list(self):
1164
1164
self .assertCountEqual (result .keys (), ["addresses" ])
1165
1165
self .assertCountEqual (result ["addresses" ], Email .objects .filter (active = True ).values_list ("address" , flat = True ))
1166
1166
1167
+ @override_settings (APP_API_TOKENS = {"ietf.api.views.related_email_list" : ["valid-token" ]})
1168
+ def test_related_email_list (self ):
1169
+ joe = EmailFactory (
address = '[email protected] ' )
1170
+ EmailFactory (
address = '[email protected] ' ,
person = joe .
person )
1171
+ EmailFactory (
address = 'jò[email protected] ' ,
person = joe .
person )
1172
+ url = urlreverse (
"ietf.api.views.related_email_list" ,
kwargs = {
'email' :
'[email protected] ' })
1173
+ # no api key
1174
+ r = self .client .get (url , headers = {})
1175
+ self .assertEqual (r .status_code , 403 )
1176
+ # invalid api key
1177
+ r = self .client .get (url , headers = {"X-Api-Key" : "not-the-valid-token" })
1178
+ self .assertEqual (r .status_code , 403 )
1179
+ # wrong method
1180
+ r = self .client .post (url , headers = {"X-Api-Key" : "valid-token" })
1181
+ self .assertEqual (r .status_code , 405 )
1182
+ # valid
1183
+ r = self .client .get (url , headers = {"X-Api-Key" : "valid-token" })
1184
+ self .assertEqual (r .status_code , 200 )
1185
+ self .assertEqual (r .headers ["Content-Type" ], "application/json" )
1186
+ result = json .loads (r .content )
1187
+ self .assertCountEqual (result .keys (), ["addresses" ])
1188
+ self .
assertCountEqual (
result [
"addresses" ],
joe .
person .
email_set .
exclude (
address = '[email protected] ' ).
values_list (
"address" ,
flat = True ))
1189
+ # non-ascii
1190
+ non_ascii_url = urlreverse (
"ietf.api.views.related_email_list" ,
kwargs = {
'email' :
'jò[email protected] ' })
1191
+ r = self .client .get (non_ascii_url , headers = {"X-Api-Key" : "valid-token" })
1192
+ self .assertEqual (r .status_code , 200 )
1193
+ result = json .loads (r .content )
1194
+ self .
assertTrue (
'[email protected] ' in result [
"addresses" ])
1195
+ # email not found
1196
+ not_found_url = urlreverse (
"ietf.api.views.related_email_list" ,
kwargs = {
'email' :
'[email protected] ' })
1197
+ r = self .client .get (not_found_url , headers = {"X-Api-Key" : "valid-token" })
1198
+ self .assertEqual (r .status_code , 404 )
1199
+
1167
1200
@override_settings (APP_API_TOKENS = {"ietf.api.views.role_holder_addresses" : ["valid-token" ]})
1168
1201
def test_role_holder_addresses (self ):
1169
1202
url = urlreverse ("ietf.api.views.role_holder_addresses" )
0 commit comments