summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Hedberg <roland.hedberg@adm.umu.se>2015-06-25 15:21:19 +0200
committerRoland Hedberg <roland.hedberg@adm.umu.se>2015-06-25 15:21:19 +0200
commitb7f618bde5b24c6e0a6c1b40c3748af8b56defaf (patch)
treeb423d3dcc87c3b66ff727360c1f520d2e408264a
parent00cdcad20a500a586a85646119e0d0ff1b1e94ac (diff)
downloadpysaml2-b7f618bde5b24c6e0a6c1b40c3748af8b56defaf.tar.gz
All tests now pass in 2.7 and 3.4 .
-rw-r--r--.travis.yml4
-rwxr-xr-xsetup.py6
-rw-r--r--src/saml2/attribute_converter.py4
-rw-r--r--src/saml2/config.py2
-rw-r--r--src/saml2/httpbase.py2
-rw-r--r--tests/test_19_attribute_converter.py7
-rw-r--r--tests/test_37_entity_categories.py39
-rw-r--r--tests/test_50_server.py36
-rw-r--r--tests/test_69_discovery.py2
-rw-r--r--tox.ini10
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
diff --git a/setup.py b/setup.py
index c5a28a7e..281e773c 100755
--- a/setup.py
+++ b/setup.py
@@ -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