def test_not_200_ValueError(self): # loop over a lot of status codes except 200 for status in chain(range(0, 200, 20), range(201, 600, 20)): self.get.reset_mock() self.get().status_code = status with self.assertRaises(ValueError): do_api_call("") assert self.get.called
def assert_token_passed(self, tokens, method): for token in tokens: self.set_token(token) expected_header = {'Authorization': "Token token={}".format(token)} do_api_call("", method=method) if method == 'get': self.assertEqual(self.get.call_args[1]['headers'], expected_header) elif method == 'post': self.assertEqual(self.post.call_args[1]['headers'], expected_header) else: raise ValueError("`method` must be one of ['get', 'post']!")
def test_unknown_status_code_logs(self): unknown_codes = set(range(200, 500, 10)) - self.KNOWN_STATUS_CODES logger = logging.getLogger('sipa.model.gerok.user') for status in unknown_codes: self.get.reset_mock() self.get().status_code = status with self.subTest(status=status), \ self.assertLogs(logger, level='WARNING') as cm: do_api_call("") self.assertEqual(len(cm.output), 1) self.assertIn('HTTP status', cm.output.pop())
def test_json_parsed(self): sample_dicts = [ {}, {'foo': 'bar'}, {'foo': 'bar', 'dict': {'baz': 'shizzle'}, 'int': 2}, ] for d in sample_dicts: self.get()._content = json.dumps(d).encode() self.assertEqual(do_api_call(""), d)
def test_json_parsed(self): sample_dicts = [ {}, { 'foo': 'bar' }, { 'foo': 'bar', 'dict': { 'baz': 'shizzle' }, 'int': 2 }, ] for d in sample_dicts: self.get()._content = json.dumps(d).encode() self.assertEqual(do_api_call(""), d)
def test_correct_url_called(self): do_api_call("") # assert that the call only got the positional args `(self.url,)` self.assertEqual(self.get.call_args[0], (self.url, ))
def test_empty_request(self): self.assertEqual(do_api_call(""), "") assert self.get.called
def test_invalid_method(self): for method in ['GET', 'POST', 'nothing_of_both', 'something_else']: with self.assertRaises(ValueError): do_api_call("", method=method, postdata=None) self.get.assert_not_called() self.post.assert_not_called()
def test_post_called(self): do_api_call("", method='post', postdata=None) self.get.assert_not_called() self.assertEqual(self.post.called, True)
def test_correct_url_called(self): do_api_call("") # assert that the call only got the positional args `(self.url,)` self.assertEqual(self.get.call_args[0], (self.url,))
def call_gerok_api(): do_api_call('do_something')
def test_postdata_passed(self): postdata = {'foo': "bar"} do_api_call("", method='post', postdata=postdata) self.assertEqual(self.post.call_args[1]['data'], postdata)