def test_get_saml_request_without_country(self): saml_request_xml, saml_request_encoded = self.load_saml_request() view = ServiceProviderRequestView() view.request = self.factory.post(self.url, {'SAMLRequest': saml_request_encoded}) with self.assertRaisesMessage(MultiValueDictKeyError, 'country_param'): view.get_saml_request('country_param', None)
def test_create_light_request_our_issuer_set(self): saml_request_xml, _saml_request_encoded = self.load_saml_request() view = ServiceProviderRequestView() view.saml_request = SAMLRequest(parse_xml(saml_request_xml), 'ca', 'xyz') light_request = view.create_light_request('test-saml-request-issuer', 'test-light-request-issuer') self.assertEqual(light_request.issuer, 'test-light-request-issuer')
def test_create_light_request_wrong_issuer(self): saml_request_xml, _saml_request_encoded = self.load_saml_request() view = ServiceProviderRequestView() view.saml_request = SAMLRequest(parse_xml(saml_request_xml), 'ca', 'xyz') with self.assertRaisesMessage(SecurityError, 'Invalid SAML request issuer'): view.create_light_request('wrong-saml-issuer', 'test-light-request-issuer')
def test_adjust_requested_attributes(self): view = ServiceProviderRequestView() attributes = {} # type: Dict[str, List[str]] view.adjust_requested_attributes(attributes, set()) self.assertEqual( attributes, { EIDAS_NATURAL_PERSON_PREFIX + i: [] for i in ('PersonIdentifier', 'CurrentFamilyName', 'CurrentGivenName', 'DateOfBirth') })
def test_get_saml_request_invalid_signature(self): saml_request_xml, saml_request_encoded = self.load_saml_request( signed=True) view = ServiceProviderRequestView() view.request = self.factory.post(self.url, { 'SAMLRequest': saml_request_encoded, 'country_param': 'ca' }) self.assertRaises(SecurityError, view.get_saml_request, 'country_param', WRONG_CERT_FILE)
def test_adjust_requested_attributes_without_filter(self): view = ServiceProviderRequestView() attributes = {'unknown': []} # type: Dict[str, List[str]] view.adjust_requested_attributes(attributes, set()) expected = { EIDAS_NATURAL_PERSON_PREFIX + i: [] for i in ('PersonIdentifier', 'CurrentFamilyName', 'CurrentGivenName', 'DateOfBirth') } # type: Dict[str, List[str]] expected['unknown'] = [] self.assertEqual(attributes, expected)
def test_get_saml_request_valid_signature(self): saml_request_xml, saml_request_encoded = self.load_saml_request( signed=True) view = ServiceProviderRequestView() view.request = self.factory.post(self.url, { 'SAMLRequest': saml_request_encoded, 'country_param': 'ca' }) saml_request = view.get_saml_request('country_param', CERT_FILE) self.assertXMLEqual( dump_xml(saml_request.document).decode('utf-8'), saml_request_xml)
def test_get_saml_request_without_relay_state(self): saml_request_xml, saml_request_encoded = self.load_saml_request() view = ServiceProviderRequestView() view.request = self.factory.post(self.url, { 'SAMLRequest': saml_request_encoded, 'country_param': 'ca' }) saml_request = view.get_saml_request('country_param', None) self.assertXMLEqual( dump_xml(saml_request.document).decode('utf-8'), saml_request_xml) self.assertEqual(saml_request.citizen_country_code, 'CA') self.assertEqual(saml_request.relay_state, None)
def test_adjust_requested_attributes_with_filter_nothing_unssuported(self): view = ServiceProviderRequestView() allowed = {EIDAS_NATURAL_PERSON_PREFIX + 'CurrentAddress'} attributes = { EIDAS_NATURAL_PERSON_PREFIX + 'CurrentAddress': [], } # type: Dict[str, List[str]] view.adjust_requested_attributes(attributes, allowed) expected = { EIDAS_NATURAL_PERSON_PREFIX + i: [] for i in ('PersonIdentifier', 'CurrentFamilyName', 'CurrentGivenName', 'DateOfBirth', 'CurrentAddress') } # type: Dict[str, List[str]] self.assertEqual(attributes, expected)
def test_create_light_token(self, uuid_mock: MagicMock): view = ServiceProviderRequestView() light_request_data = LIGHT_REQUEST_DICT.copy() view.light_request = LightRequest(**light_request_data) token, encoded_token = view.create_light_token('test-token-issuer', 'sha256', 'test-secret') self.assertEqual(token.id, 'T0uuid4') self.assertEqual(token.issuer, 'test-token-issuer') self.assertEqual(token.created, datetime(2017, 12, 11, 16, 12, 5)) self.assertEqual( token.encode('sha256', 'test-secret').decode('ascii'), encoded_token) self.assertEqual(uuid_mock.mock_calls, [call()])
def test_get_saml_request_without_saml_request(self): view = ServiceProviderRequestView() view.request = self.factory.post(self.url, {'country_param': 'ca'}) with self.assertRaisesMessage(ParseError, 'Document is empty'): view.get_saml_request('country_param', None)