class HeadersUnitTestCase(SimpleTestCase): request = RequestFactory() def setUp(self): self.auth = SignatureAuthentication() def test_special_header_names(self): for special in ['Content-Type', 'CONTENT-TYPE', 'content-type']: canon = self.auth.header_canonical(special) self.assertEqual('CONTENT-TYPE', canon) for special in ['Content-Length', 'CONTENT-LENGTH', 'content-length']: canon = self.auth.header_canonical(special) self.assertEqual('CONTENT-LENGTH', canon) def test_header_names(self): headers = ['X-Api-Key', 'Authentication', 'date', 'X-Something-Else'] for header in headers: canon = self.auth.header_canonical(header) expected = 'HTTP_%s' % header.upper().replace('-', '_') self.assertEqual(expected, canon) def test_build_signature_for_date(self): req = self.request.get(ENDPOINT, {}, HTTP_X_DATE="some date") dict_to_sign = self.auth.build_dict_to_sign(req, ['date']) self.assertTrue('date' in dict_to_sign.keys()) def test_build_signature_for_date_and_other(self): req = self.request.get(ENDPOINT, {}, HTTP_X_ACCEPT="*/*", HTTP_X_DATE="some date") dict_to_sign = self.auth.build_dict_to_sign(req, ['accept', 'date']) self.assertTrue('date' in dict_to_sign.keys()) self.assertTrue('accept' in dict_to_sign.keys()) def test_build_signature_for_request_line(self): req = self.request.get(ENDPOINT, {}, HTTP_X_DATE="some date") dict_to_sign = self.auth.build_dict_to_sign( req, ['(request-target)', 'date']) self.assertTrue('date' in dict_to_sign.keys()) self.assertTrue('(request-target)' not in dict_to_sign.keys())