global_hexdump = False
-class UnorderedList(list):
+class UnorderedList(tuple):
def __eq__(self, other):
if not isinstance(other, UnorderedList):
raise AssertionError('unexpected comparison attempt')
return sorted(self) == sorted(other)
+ def __hash__(self):
+ return hash(tuple(sorted(self)))
+
# Use this to assert that each element of a list belongs to a set() of
# acceptable elements.
-class OneOf(list):
+class OneOf(tuple):
def __eq__(self, other):
if not isinstance(other, OneOf):
raise AssertionError('unexpected comparison attempt')
self.create_claim(claim_id, **claim)
- details = ((k, v) for k, v in details.items())
-
return details, mod_msg, expected_claims, unexpected_claims
def remove_client_claims(self, ticket):
claim_id: {
'source_type': claims.CLAIMS_SOURCE_TYPE_AD,
'type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
},
}
claim_id: {
'source_type': claims.CLAIMS_SOURCE_TYPE_AD,
'type': claims.CLAIM_TYPE_STRING,
- 'values': ['user_old'],
+ 'values': ('user_old',),
},
}
expected_claims_mach = {
claim_id: {
'source_type': claims.CLAIMS_SOURCE_TYPE_AD,
'type': claims.CLAIM_TYPE_STRING,
- 'values': ['mach_old'],
+ 'values': ('mach_old',),
},
}
additional_tickets=additional_tickets)
self.check_reply(rep, KRB_TGS_REP)
+ @staticmethod
+ def freeze(m):
+ return frozenset((k, v) for k, v in m.items())
+
@classmethod
def setUpDynamicTestCases(cls):
FILTER = env_get_var_value('FILTER', allow_missing=True)
(details, _,
expected_claims,
unexpected_claims) = self.setup_claims(all_claims)
- creds = self.get_cached_creds(account_type=account_type,
- opts={
- 'additional_details': details,
- })
+ creds = self.get_cached_creds(
+ account_type=account_type,
+ opts={
+ 'additional_details': self.freeze(details),
+ })
self.assertFalse(case, 'unexpected parameters in testcase')
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
'expected': True,
},
],
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_BOOLEAN,
- 'values': [True],
+ 'values': (True,),
'expected': True,
},
],
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_BOOLEAN,
- 'values': [False],
+ 'values': (False,),
'expected': True,
},
],
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': [True],
+ 'values': (True,),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_INT64,
- 'values': [3, 42, -999, 1000, 20000],
+ 'values': (3, 42, -999, 1000, 20000),
'expected': True,
},
],
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_INT64,
- 'values': [3, 42, -999, 1000, 20000],
+ 'values': (3, 42, -999, 1000, 20000),
'expected': True,
},
] * 2, # Create two integer syntax claims.
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_UINT64,
- 'values': [3, 42, -999, 1000],
+ 'values': (3, 42, -999, 1000),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['computer'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': [security_descriptor],
+ 'values': (security_descriptor,),
'expected_values': OneOf([{
'O:BAD:PARAI(A;OICINPIOID;CCDCLCSWRPWPDTLOCRSDRCWDWOGAGXGWGR;;;S-1-0-0)', # Windows
'O:BAD:PARAI(A;OICINPIOID;RPWPCRCCDCLCLORCWOWDSDDTSWGAGRGWGX;;;S-1-0-0)', # Samba
'source_type': 'AD',
'for_classes': ['computer'],
'value_type': claims.CLAIM_TYPE_UINT64,
- 'values': [security_descriptor],
+ 'values': (security_descriptor,),
},
],
'class': 'computer',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo', 'bar'],
+ 'values': ('foo', 'bar'),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo', 'bar'],
+ 'values': ('foo', 'bar'),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': [binary_dn, binary_dn, binary_dn],
+ 'values': (binary_dn, binary_dn, binary_dn),
},
],
'class': 'computer',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo', 'bar'],
+ 'values': ('foo', 'bar'),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['19700101000000.0Z'],
+ 'values': ('19700101000000.0Z',),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo', 'bar', 'baz'],
+ 'values': ('foo', 'bar', 'baz'),
'expected': True,
},
],
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_INT64,
- 'values': ['foo'],
+ 'values': ('foo',),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': 0,
- 'values': ['foo'],
+ 'values': ('foo',),
},
],
'class': 'user',
'single_valued': True,
'source_type': 'AD',
'for_classes': ['user'],
- 'values': ['foo'],
+ 'values': ('foo',),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
'expected': True,
},
] * 2, # Create two string syntax claims.
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo', 'bar', 'baz'],
+ 'values': ('foo', 'bar', 'baz'),
'expected': True,
},
{
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_BOOLEAN,
- 'values': [True],
+ 'values': (True,),
'expected': True,
},
],
'source_type': 'ad',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
'expected': True,
},
],
'source_type': '<unknown>',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
},
],
'class': 'user',
'single_valued': True,
'source_type': 'AD',
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['user'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
},
],
'class': 'computer',
'source_type': 'AD',
'for_classes': ['user', 'computer'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
'expected': True,
},
],
'source_type': 'AD',
'for_classes': ['top'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
},
],
'class': 'user',
'source_type': 'AD',
'for_classes': ['organizationalPerson'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
},
],
'class': 'user',
'value_type': claims.CLAIM_TYPE_STRING,
# a large value that should cause the claim to be
# compressed.
- 'values': ['a' * 10000],
+ 'values': ('a' * 10000,),
'expected': True,
},
],
'source_type': 'AD',
'for_classes': ['computer'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
'expected': True,
'mod_values': ['bar'],
},
'source_type': 'AD',
'for_classes': ['computer'],
'value_type': claims.CLAIM_TYPE_STRING,
- 'values': ['foo'],
+ 'values': ('foo',),
'expected': True,
'mod_values': ['bar'],
},