def test_valid_replacement(self): did = 'did:factom:f26e1c422c657521861ced450442d0c664702f49480aec67805822edfcfee758' chain_id = 'f26e1c422c657521861ced450442d0c664702f49480aec67805822edfcfee758' external_ids = [consts.IDENTITY_CHAIN_TAG, b'Test', b'v1'] key_pairs = [identitykeys.generate_key_pair() for _ in range(3)] public_keys = [pub.to_string() for _, pub in key_pairs] content = {'version': 1, 'keys': public_keys} identity = Identity(did, chain_id) identity.process_creation( entry_hash=b'\0' * 32, external_ids=external_ids, content=json.dumps(content, separators=(',', ':')).encode(), stage='factom', height=123456 ) _, old_pub = key_pairs[-1] signer_priv, signer_pub = key_pairs[-2] new_priv, new_pub = identitykeys.generate_key_pair() message = chain_id.encode() + old_pub.to_string().encode() + new_pub.to_string().encode() external_ids = [ b'ReplaceKey', old_pub.to_string().encode(), new_pub.to_string().encode(), signer_priv.sign(message), signer_pub.to_string().encode() ] result = identity.process_key_replacement(entry_hash=b'\0' * 32, external_ids=external_ids, height=123457) self.assertTrue(result)
def test_valid_input(self): did = 'did:factom:f26e1c422c657521861ced450442d0c664702f49480aec67805822edfcfee758' chain_id = 'f26e1c422c657521861ced450442d0c664702f49480aec67805822edfcfee758' external_ids = [consts.IDENTITY_CHAIN_TAG, b'Test', b'v1'] public_keys = [identitykeys.generate_key_pair()[1].to_string() for _ in range(3)] content = {'version': 1, 'keys': public_keys} identity = Identity(did, chain_id) identity.process_creation( entry_hash= b'\0' * 32, external_ids=external_ids, content=json.dumps(content, separators=(',', ':')).encode(), stage='factom', height=123456 ) self.assertEqual(1, identity.version) for i, external_id in enumerate(external_ids[1:]): self.assertEqual(external_id.decode(), identity.name[i]) for k in public_keys: self.assertIn(k, identity.active_keys) self.assertIn(k, identity.all_keys) for k in identity.active_keys.values(): self.assertIn('id', k) self.assertIn('controller', k) self.assertIn('type', k) self.assertIn('publicKeyHex', k) self.assertIn('activatedHeight', k) self.assertIn('retiredHeight', k) self.assertIn('priority', k) self.assertIn('entryHash', k)
def test_bad_content_json(self): did = 'did:factom:f26e1c422c657521861ced450442d0c664702f49480aec67805822edfcfee758' chain_id = 'f26e1c422c657521861ced450442d0c664702f49480aec67805822edfcfee758' external_ids = [consts.IDENTITY_CHAIN_TAG, b'Test', b'v1'] content = b'BAD{BAD/BAD' identity = Identity(did, chain_id) with self.assertRaises(IdentityNotFoundException): identity.process_creation( entry_hash=b'\0' * 32, external_ids=external_ids, content=content, stage='factom', height=123456 )
def test_bad_version(self): did = 'did:factom:f26e1c422c657521861ced450442d0c664702f49480aec67805822edfcfee758' chain_id = 'f26e1c422c657521861ced450442d0c664702f49480aec67805822edfcfee758' external_ids = [consts.IDENTITY_CHAIN_TAG, b'Test', b'v1'] public_keys = [identitykeys.generate_key_pair()[1].to_string() for _ in range(3)] content = {'version': 'BAD', 'keys': public_keys} identity = Identity(did, chain_id) with self.assertRaises(IdentityNotFoundException): identity.process_creation( entry_hash=b'\0' * 32, external_ids=external_ids, content=json.dumps(content, separators=(',', ':')).encode(), stage='factom', height=123456 )