1010
1111from importlib import import_module
1212from pathlib import Path
13+ from random import randrange
1314
1415from django .apps import apps
1516from django .conf import settings
@@ -1072,15 +1073,29 @@ def test_ingest_email(
10721073 self .assertEqual (r .status_code , 400 )
10731074 self .assertFalse (any (m .called for m in mocks ))
10741075
1075- # test that valid requests call handlers appropriately
1076+ # bad destination
10761077 message_b64 = base64 .b64encode (b"This is a message" ).decode ()
1078+ r = self .client .post (
1079+ url ,
1080+ {"dest" : "not-a-destination" , "message" : message_b64 },
1081+ content_type = "application/json" ,
1082+ headers = {"X-Api-Key" : "valid-token" },
1083+ )
1084+ self .assertEqual (r .status_code , 200 )
1085+ self .assertEqual (r .headers ["Content-Type" ], "application/json" )
1086+ self .assertEqual (json .loads (r .content ), {"result" : "bad_dest" })
1087+ self .assertFalse (any (m .called for m in mocks ))
1088+
1089+ # test that valid requests call handlers appropriately
10771090 r = self .client .post (
10781091 url ,
10791092 {"dest" : "iana-review" , "message" : message_b64 },
10801093 content_type = "application/json" ,
10811094 headers = {"X-Api-Key" : "valid-token" },
10821095 )
10831096 self .assertEqual (r .status_code , 200 )
1097+ self .assertEqual (r .headers ["Content-Type" ], "application/json" )
1098+ self .assertEqual (json .loads (r .content ), {"result" : "ok" })
10841099 self .assertTrue (mock_iana_ingest .called )
10851100 self .assertEqual (mock_iana_ingest .call_args , mock .call (b"This is a message" ))
10861101 self .assertFalse (any (m .called for m in (mocks - {mock_iana_ingest })))
@@ -1093,20 +1108,44 @@ def test_ingest_email(
10931108 headers = {"X-Api-Key" : "valid-token" },
10941109 )
10951110 self .assertEqual (r .status_code , 200 )
1111+ self .assertEqual (r .headers ["Content-Type" ], "application/json" )
1112+ self .assertEqual (json .loads (r .content ), {"result" : "ok" })
10961113 self .assertTrue (mock_ipr_ingest .called )
10971114 self .assertEqual (mock_ipr_ingest .call_args , mock .call (b"This is a message" ))
10981115 self .assertFalse (any (m .called for m in (mocks - {mock_ipr_ingest })))
10991116 mock_ipr_ingest .reset_mock ()
11001117
1118+ # bad nomcom-feedback dest
1119+ for bad_nomcom_dest in [
1120+ "nomcom-feedback" , # no suffix
1121+ "nomcom-feedback-" , # no year
1122+ "nomcom-feedback-squid" , # not a year,
1123+ "nomcom-feedback-2024-2025" , # also not a year
1124+ ]:
1125+ r = self .client .post (
1126+ url ,
1127+ {"dest" : bad_nomcom_dest , "message" : message_b64 },
1128+ content_type = "application/json" ,
1129+ headers = {"X-Api-Key" : "valid-token" },
1130+ )
1131+ self .assertEqual (r .status_code , 200 )
1132+ self .assertEqual (r .headers ["Content-Type" ], "application/json" )
1133+ self .assertEqual (json .loads (r .content ), {"result" : "bad_dest" })
1134+ self .assertFalse (any (m .called for m in mocks ))
1135+
1136+ # good nomcom-feedback dest
1137+ random_year = randrange (100000 )
11011138 r = self .client .post (
11021139 url ,
1103- {"dest" : "nomcom-feedback" , "message" : message_b64 , "year" : 2024 }, # arbitrary year
1140+ {"dest" : f "nomcom-feedback- { random_year } " , "message" : message_b64 },
11041141 content_type = "application/json" ,
11051142 headers = {"X-Api-Key" : "valid-token" },
11061143 )
11071144 self .assertEqual (r .status_code , 200 )
1145+ self .assertEqual (r .headers ["Content-Type" ], "application/json" )
1146+ self .assertEqual (json .loads (r .content ), {"result" : "ok" })
11081147 self .assertTrue (mock_nomcom_ingest .called )
1109- self .assertEqual (mock_nomcom_ingest .call_args , mock .call (b"This is a message" , 2024 ))
1148+ self .assertEqual (mock_nomcom_ingest .call_args , mock .call (b"This is a message" , random_year ))
11101149 self .assertFalse (any (m .called for m in (mocks - {mock_nomcom_ingest })))
11111150 mock_nomcom_ingest .reset_mock ()
11121151
@@ -1118,7 +1157,9 @@ def test_ingest_email(
11181157 content_type = "application/json" ,
11191158 headers = {"X-Api-Key" : "valid-token" },
11201159 )
1121- self .assertEqual (r .status_code , 400 )
1160+ self .assertEqual (r .status_code , 200 )
1161+ self .assertEqual (r .headers ["Content-Type" ], "application/json" )
1162+ self .assertEqual (json .loads (r .content ), {"result" : "bad_msg" })
11221163 self .assertTrue (mock_iana_ingest .called )
11231164 self .assertEqual (mock_iana_ingest .call_args , mock .call (b"This is a message" ))
11241165 self .assertFalse (any (m .called for m in (mocks - {mock_iana_ingest })))
@@ -1138,7 +1179,9 @@ def test_ingest_email(
11381179 content_type = "application/json" ,
11391180 headers = {"X-Api-Key" : "valid-token" },
11401181 )
1141- self .assertEqual (r .status_code , 400 )
1182+ self .assertEqual (r .status_code , 200 )
1183+ self .assertEqual (r .headers ["Content-Type" ], "application/json" )
1184+ self .assertEqual (json .loads (r .content ), {"result" : "bad_msg" })
11421185 self .assertTrue (mock_iana_ingest .called )
11431186 self .assertEqual (mock_iana_ingest .call_args , mock .call (b"This is a message" ))
11441187 self .assertFalse (any (m .called for m in (mocks - {mock_iana_ingest })))
@@ -1167,7 +1210,9 @@ def test_ingest_email(
11671210 content_type = "application/json" ,
11681211 headers = {"X-Api-Key" : "valid-token" },
11691212 )
1170- self .assertEqual (r .status_code , 400 )
1213+ self .assertEqual (r .status_code , 200 )
1214+ self .assertEqual (r .headers ["Content-Type" ], "application/json" )
1215+ self .assertEqual (json .loads (r .content ), {"result" : "bad_msg" })
11711216 self .assertTrue (mock_iana_ingest .called )
11721217 self .assertEqual (mock_iana_ingest .call_args , mock .call (b"This is a message" ))
11731218 self .assertFalse (any (m .called for m in (mocks - {mock_iana_ingest })))
@@ -1192,7 +1237,9 @@ def test_ingest_email(
11921237 content_type = "application/json" ,
11931238 headers = {"X-Api-Key" : "valid-token" },
11941239 )
1195- self .assertEqual (r .status_code , 400 )
1240+ self .assertEqual (r .status_code , 200 )
1241+ self .assertEqual (r .headers ["Content-Type" ], "application/json" )
1242+ self .assertEqual (json .loads (r .content ), {"result" : "bad_msg" })
11961243 self .assertTrue (mock_iana_ingest .called )
11971244 self .assertEqual (mock_iana_ingest .call_args , mock .call (b"This is a message" ))
11981245 self .assertFalse (any (m .called for m in (mocks - {mock_iana_ingest })))
0 commit comments