def test_authn_request_http_redirect_right_signature(self): xml_message = generate_authn_request() pkey = open(os.path.join(DATA_DIR, 'sp.key'), 'rb').read() query_string = sign_http_redirect(xml_message, pkey, req_type='SAMLRequest') self.assertEqual(len(self.idp_server.ticket), 0) self.assertEqual(len(self.idp_server.responses), 0) response = self.test_client.get('/sso-test?{}'.format(query_string), follow_redirects=True) self.assertEqual(response.status_code, 200) response_text = response.get_data(as_text=True) self.assertIn( '<form class="Form Form--spaced u-margin-bottom-l " name="login" method="post" action="/login">', response_text) self.assertEqual(len(self.idp_server.ticket), 1) self.assertEqual(len(self.idp_server.responses), 0) key = list(self.idp_server.ticket.keys())[0] xmlstr = SAMLTree(self.idp_server.ticket[key]._xml_doc) xml_message = ET.fromstring(xml_message) xml_message = SAMLTree(xml_message) self.assertEqual(xml_message.id, xmlstr.id)
def test_deserialization(self): xml = """\ <root> <child1>some data</child1> <child2 AnAttribute="more data"></child2> <SpecialChild3> <Item AnotherAttribute="foo"></Item> <Item EvenAnotherAttribute="bar"></Item> </SpecialChild3> </root>""" xml_doc = objectify.fromstring(xml) saml_tree = SAMLTree(xml_doc, multi_occur_tags={'Item'}) self.assertEqual(saml_tree.child1.text, 'some data') self.assertEqual(saml_tree.child1.tag, 'child1') self.assertEqual(saml_tree.child2.an_attribute, 'more data') self.assertEqual(len(saml_tree.special_child3.item), 2) self.assertEqual(saml_tree.special_child3.tag, 'special_child3') self.assertEqual(saml_tree.special_child3.item[0].another_attribute, 'foo') self.assertEqual(saml_tree.special_child3.item[1].even_another_attribute, 'bar')