diff options
author | Roland Hedberg <roland.hedberg@adm.umu.se> | 2015-06-25 15:21:19 +0200 |
---|---|---|
committer | Roland Hedberg <roland.hedberg@adm.umu.se> | 2015-06-25 15:21:19 +0200 |
commit | b7f618bde5b24c6e0a6c1b40c3748af8b56defaf (patch) | |
tree | b423d3dcc87c3b66ff727360c1f520d2e408264a | |
parent | 00cdcad20a500a586a85646119e0d0ff1b1e94ac (diff) | |
download | pysaml2-b7f618bde5b24c6e0a6c1b40c3748af8b56defaf.tar.gz |
All tests now pass in 2.7 and 3.4 .
-rw-r--r-- | .travis.yml | 4 | ||||
-rwxr-xr-x | setup.py | 6 | ||||
-rw-r--r-- | src/saml2/attribute_converter.py | 4 | ||||
-rw-r--r-- | src/saml2/config.py | 2 | ||||
-rw-r--r-- | src/saml2/httpbase.py | 2 | ||||
-rw-r--r-- | tests/test_19_attribute_converter.py | 7 | ||||
-rw-r--r-- | tests/test_37_entity_categories.py | 39 | ||||
-rw-r--r-- | tests/test_50_server.py | 36 | ||||
-rw-r--r-- | tests/test_69_discovery.py | 2 | ||||
-rw-r--r-- | tox.ini | 10 |
10 files changed, 64 insertions, 48 deletions
diff --git a/.travis.yml b/.travis.yml index e29ffa0c..81db0fd5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,9 @@ language: python +env: + - TOX_ENV=py27 + - TOX_ENV=py34 + services: - mongodb @@ -45,12 +45,6 @@ tests_require = [ #'pytest-coverage', ] - -# only for Python 2.6 -if sys.version_info < (2, 7): - install_requires.append('argparse') - install_requires.append('importlib') - setup( name='pysaml2', version='3.0.0', diff --git a/src/saml2/attribute_converter.py b/src/saml2/attribute_converter.py index a6e4161b..de68f22a 100644 --- a/src/saml2/attribute_converter.py +++ b/src/saml2/attribute_converter.py @@ -480,10 +480,10 @@ class AttributeConverter(object): """ attributes = [] for key, value in attrvals.items(): - key = key.lower() + lkey = key.lower() try: attributes.append(factory(saml.Attribute, - name=self._to[key], + name=self._to[lkey], name_format=self.name_format, friendly_name=key, attribute_value=do_ava(value))) diff --git a/src/saml2/config.py b/src/saml2/config.py index 9cd36f6d..0fa4fe32 100644 --- a/src/saml2/config.py +++ b/src/saml2/config.py @@ -399,7 +399,7 @@ class Config(object): disable_validation = False mds = MetadataStore( - ONTS.values(), acs, self, ca_certs, + list(ONTS.values()), acs, self, ca_certs, disable_ssl_certificate_validation=disable_validation) mds.imp(metadata_conf) diff --git a/src/saml2/httpbase.py b/src/saml2/httpbase.py index 5998df28..91c227d9 100644 --- a/src/saml2/httpbase.py +++ b/src/saml2/httpbase.py @@ -199,7 +199,7 @@ class HTTPBase(object): name=std_attr["name"]) except ValueError: pass - elif morsel["expires"] < utc_now(): + elif morsel["expires"] and morsel["expires"] < utc_now(): try: self.cookiejar.clear(domain=std_attr["domain"], path=std_attr["path"], diff --git a/tests/test_19_attribute_converter.py b/tests/test_19_attribute_converter.py index daccd05e..86d4cf84 100644 --- a/tests/test_19_attribute_converter.py +++ b/tests/test_19_attribute_converter.py @@ -80,7 +80,7 @@ class TestAC(): assert a1.friendly_name == "givenName" assert a1.name == 'urn:mace:dir:attribute-def:givenName' assert a1.name_format == BASIC_NF - elif a0.friendly_name == 'givenname': + elif a0.friendly_name == 'givenName': assert a0.name == 'urn:mace:dir:attribute-def:givenName' assert a0.name_format == BASIC_NF assert a1.friendly_name == "sn" @@ -103,13 +103,14 @@ class TestAC(): assert a1.friendly_name == "givenName" assert a1.name == 'urn:oid:2.5.4.42' assert a1.name_format == URI_NF - elif a0.friendly_name == 'givenname': + elif a0.friendly_name == 'givenName': assert a0.name == 'urn:oid:2.5.4.42' assert a0.name_format == URI_NF assert a1.friendly_name == "surname" assert a1.name == 'urn:oid:2.5.4.4' assert a1.name_format == URI_NF else: + print(a0.friendly_name) assert False def test_to_local_name(self): @@ -227,5 +228,5 @@ def test_schac(): if __name__ == "__main__": t = TestAC() t.setup_class() - t.test_to_local_name_from_basic() + t.test_to_attrstat_1() #test_schac() diff --git a/tests/test_37_entity_categories.py b/tests/test_37_entity_categories.py index 7f59a460..f49c1036 100644 --- a/tests/test_37_entity_categories.py +++ b/tests/test_37_entity_categories.py @@ -35,7 +35,8 @@ __author__ = 'rolandh' MDS = MetadataStore(ONTS.values(), ATTRCONV, sec_config, disable_ssl_certificate_validation=True) -MDS.imp([{"class": "saml2.mdstore.MetaDataMD", "metadata": [(full_path("swamid.md"), )]}]) +MDS.imp([{"class": "saml2.mdstore.MetaDataMD", + "metadata": [(full_path("swamid.md"),)]}]) def _eq(l1, l2): @@ -46,7 +47,7 @@ def test_filter_ava(): policy = Policy({ "default": { "lifetime": {"minutes": 15}, - #"attribute_restrictions": None # means all I have + # "attribute_restrictions": None # means all I have "entity_categories": ["swamid"] } }) @@ -64,7 +65,7 @@ def test_filter_ava2(): policy = Policy({ "default": { "lifetime": {"minutes": 15}, - #"attribute_restrictions": None # means all I have + # "attribute_restrictions": None # means all I have "entity_categories": ["refeds", "edugain"] } }) @@ -84,14 +85,15 @@ def test_filter_ava3(): policy = Policy({ "default": { "lifetime": {"minutes": 15}, - #"attribute_restrictions": None # means all I have + # "attribute_restrictions": None # means all I have "entity_categories": ["swamid"] } }) - mds = MetadataStore(ONTS.values(), ATTRCONV, sec_config, + mds = MetadataStore(list(ONTS.values()), ATTRCONV, sec_config, disable_ssl_certificate_validation=True) - mds.imp([{"class": "saml2.mdstore.MetaDataFile", "metadata": [(full_path("entity_cat_sfs_hei.xml"), )]}]) + mds.imp([{"class": "saml2.mdstore.MetaDataFile", + "metadata": [(full_path("entity_cat_sfs_hei.xml"),)]}]) ava = {"givenName": ["Derek"], "sn": ["Jeter"], "mail": ["derek@nyy.mlb.com"], "c": ["USA"], @@ -107,14 +109,15 @@ def test_filter_ava4(): policy = Policy({ "default": { "lifetime": {"minutes": 15}, - #"attribute_restrictions": None # means all I have + # "attribute_restrictions": None # means all I have "entity_categories": ["swamid"] } }) - mds = MetadataStore(ONTS.values(), ATTRCONV, sec_config, + mds = MetadataStore(list(ONTS.values()), ATTRCONV, sec_config, disable_ssl_certificate_validation=True) - mds.imp([{"class": "saml2.mdstore.MetaDataFile", "metadata": [(full_path("entity_cat_re_nren.xml"), )]}]) + mds.imp([{"class": "saml2.mdstore.MetaDataFile", + "metadata": [(full_path("entity_cat_re_nren.xml"),)]}]) ava = {"givenName": ["Derek"], "sn": ["Jeter"], "mail": ["derek@nyy.mlb.com"], "c": ["USA"], @@ -123,22 +126,24 @@ def test_filter_ava4(): ava = policy.filter(ava, "urn:mace:example.com:saml:roland:sp", mds) - assert _eq(list(ava.keys()), ['eduPersonTargetedID', "givenName", "c", "mail", - "sn"]) + assert _eq(list(ava.keys()), + ['eduPersonTargetedID', "givenName", "c", "mail", + "sn"]) def test_filter_ava5(): policy = Policy({ "default": { "lifetime": {"minutes": 15}, - #"attribute_restrictions": None # means all I have + # "attribute_restrictions": None # means all I have "entity_categories": ["swamid"] } }) - mds = MetadataStore(ONTS.values(), ATTRCONV, sec_config, + mds = MetadataStore(list(ONTS.values()), ATTRCONV, sec_config, disable_ssl_certificate_validation=True) - mds.imp([{"class": "saml2.mdstore.MetaDataFile", "metadata": [(full_path("entity_cat_re.xml"), )]}]) + mds.imp([{"class": "saml2.mdstore.MetaDataFile", + "metadata": [(full_path("entity_cat_re.xml"),)]}]) ava = {"givenName": ["Derek"], "sn": ["Jeter"], "mail": ["derek@nyy.mlb.com"], "c": ["USA"], @@ -162,7 +167,9 @@ def test_idp_policy_filter(): idp.metadata) print(ava) - assert list(ava.keys()) == ["eduPersonTargetedID"] # because no entity category + assert list(ava.keys()) == [ + "eduPersonTargetedID"] # because no entity category + if __name__ == "__main__": - test_idp_policy_filter() + test_filter_ava3() diff --git a/tests/test_50_server.py b/tests/test_50_server.py index e7e2ad88..c43d489b 100644 --- a/tests/test_50_server.py +++ b/tests/test_50_server.py @@ -107,7 +107,8 @@ class TestServer1(): ava = ava = get_ava(assertion[0]) assert ava ==\ - {'mail': ['derek@nyy.mlb.com'], 'givenname': ['Derek'], 'surname': ['Jeter'], 'title': ['The man']} + {'mail': ['derek@nyy.mlb.com'], 'givenName': ['Derek'], + 'surName': ['Jeter'], 'title': ['The man']} def verify_encrypted_assertion(self, assertion, decr_text): @@ -295,7 +296,6 @@ class TestServer1(): assert resp.status assert resp.status.status_code.value == samlp.STATUS_SUCCESS assert resp.assertion - assert resp.assertion assertion = resp.assertion print(assertion) assert assertion.authn_statement @@ -307,7 +307,7 @@ class TestServer1(): # Pick out one attribute attr = None for attr in attribute_statement[0].attribute: - if attr.friendly_name == "givenname": + if attr.friendly_name == "givenName": break assert len(attr.attribute_value) == 1 assert attr.name == "urn:oid:2.5.4.42" @@ -546,22 +546,21 @@ class TestServer1(): sresponse = response_from_string(signed_resp) - valid = self.server.sec.verify_signature(signed_resp, - self.server.config.cert_file, - node_name='urn:oasis:names:tc:SAML:2.0:protocol:Response', - node_id=sresponse.id, - id_attr="") + valid = self.server.sec.verify_signature( + signed_resp, self.server.config.cert_file, + node_name='urn:oasis:names:tc:SAML:2.0:protocol:Response', + node_id=sresponse.id, id_attr="") + assert valid - valid = self.server.sec.verify_signature(signed_resp, - self.server.config.cert_file, - node_name='urn:oasis:names:tc:SAML:2.0:assertion:Assertion', - node_id=sresponse.assertion[0].id, - id_attr="") + valid = self.server.sec.verify_signature( + signed_resp, self.server.config.cert_file, + node_name='urn:oasis:names:tc:SAML:2.0:assertion:Assertion', + node_id=sresponse.assertion[0].id, id_attr="") assert valid - _, key_file = make_temp(str(cert_key_str).encode('ascii'), decode=False) + _, key_file = make_temp(cert_key_str, decode=False) decr_text = self.server.sec.decrypt(signed_resp, key_file) @@ -569,8 +568,9 @@ class TestServer1(): assert resp.assertion[0].advice.encrypted_assertion[0].extension_elements - assertion = extension_elements_to_elements(resp.assertion[0].advice.encrypted_assertion[0].extension_elements, - [saml, samlp]) + assertion = extension_elements_to_elements( + resp.assertion[0].advice.encrypted_assertion[0].extension_elements, + [saml, samlp]) self.verify_assertion(assertion) @@ -653,7 +653,7 @@ class TestServer1(): id_attr="") assert valid - _, key_file = make_temp(str(cert_key_str).encode('ascii'), decode=False) + _, key_file = make_temp(cert_key_str, decode=False) decr_text = self.server.sec.decrypt(signed_resp, key_file) @@ -1266,4 +1266,4 @@ class TestServerLogout(): if __name__ == "__main__": ts = TestServer1() ts.setup_class() - ts.test_encrypted_signed_response_4() + ts.test_encrypted_signed_response_1() diff --git a/tests/test_69_discovery.py b/tests/test_69_discovery.py index 6b1d4243..a74cffae 100644 --- a/tests/test_69_discovery.py +++ b/tests/test_69_discovery.py @@ -69,4 +69,4 @@ def test_construct_deconstruct_response(): if __name__ == "__main__": - test_construct_deconstruct_request() + test_verify() diff --git a/tox.ini b/tox.ini new file mode 100644 index 00000000..880383b3 --- /dev/null +++ b/tox.ini @@ -0,0 +1,10 @@ +[tox] +envlist = py27,py34 + +[testenv] +basepython = + py27: python2.7 + py34: python3.4 + +deps = + pytest |