def test_setupKeeper(): """ Test setting up keep directory """ print("Testing setupKeeper") seed = ( b'\x0c\xaa\xc9\xc6G\x11\xf6nn\xd7\x1b7\xdc^i\xc5\x12O\xe9>\xe1$F\xe1' b'\xa4z\xd4\xb6P\xdd\x86\x1d') prikey = ( b'\xd9\xc8<$\x03\xb9%\x03c\xb3*6g\xa7m\xd8\x8d\x08j\xd4^4\x88\xcac\xba\xd1\xe9' b'\xd9\xe6\x99%') baseDirPath = setupTmpBaseDir() assert baseDirPath.startswith("/tmp/bluepea") assert baseDirPath.endswith("test") keepDirPath = os.path.join(baseDirPath, "bluepea/keep") os.makedirs(keepDirPath) assert os.path.exists(keepDirPath) keeper = keeping.setupKeeper(baseDirPath=keepDirPath, seed=seed, prikey=prikey) assert keeper == keeping.gKeeper assert keeper.baseDirPath == keeping.gKeepDirPath cleanupTmpBaseDir(keepDirPath) assert not os.path.exists(keepDirPath) print("Done Test")
def test_Keeper(): """ Test Keeper class """ print("Testing Keeper Class") baseDirPath = setupTmpBaseDir() assert baseDirPath.startswith("/tmp/bluepea") assert baseDirPath.endswith("test") keepDirPath = os.path.join(baseDirPath, "bluepea/keep") os.makedirs(keepDirPath) assert os.path.exists(keepDirPath) seed = ( b'\x0c\xaa\xc9\xc6G\x11\xf6nn\xd7\x1b7\xdc^i\xc5\x12O\xe9>\xe1$F\xe1' b'\xa4z\xd4\xb6P\xdd\x86\x1d') prikey = ( b'\xd9\xc8<$\x03\xb9%\x03c\xb3*6g\xa7m\xd8\x8d\x08j\xd4^4\x88\xcac\xba\xd1\xe9' b'\xd9\xe6\x99%') keeper = keeping.Keeper(baseDirPath=keepDirPath, seed=seed, prikey=prikey) assert keeper.baseDirPath == keepDirPath assert keeper.filePath.endswith("/bluepea/keep/key.server.json") assert keeper.seed == seed assert keeper.sigkey == ( b'\x0c\xaa\xc9\xc6G\x11\xf6nn\xd7\x1b7\xdc^i\xc5\x12O\xe9>\xe1$F\xe1' b'\xa4z\xd4\xb6P\xdd\x86\x1d^\xaeX\xa9\xa2\xfa/\x8f)\x7fG\xee\xec\x85!/BQiM' b"\xbfG\x11O\xd0\x02\xf8\xdf\x06'\xd7\x8f") assert keeper.sigkey[:32] == keeper.seed assert keeper.verkey == ( b'^\xaeX\xa9\xa2\xfa/\x8f)\x7fG\xee\xec\x85!/BQiM\xbfG\x11O\xd0\x02\xf8\xdf' b"\x06'\xd7\x8f") keys = keeper.loadAllRoles(keeper.baseDirPath) assert "server" in keys assert keys['server'][ 'seed'] == '0caac9c64711f66e6ed71b37dc5e69c5124fe93ee12446e1a47ad4b650dd861d' assert keys['server'][ 'sigkey'] == '0caac9c64711f66e6ed71b37dc5e69c5124fe93ee12446e1a47ad4b650dd861d5eae58a9a2fa2f8f297f47eeec85212f4251694dbf47114fd002f8df0627d78f' assert keys['server'][ 'verkey'] == '5eae58a9a2fa2f8f297f47eeec85212f4251694dbf47114fd002f8df0627d78f' assert keys['server'][ 'prikey'] == 'd9c83c2403b9250363b32a3667a76dd88d086ad45e3488ca63bad1e9d9e69925' assert keys['server'][ 'pubkey'] == '1ea6d2c98888fff8e45b5b5dd55643dc825cda3538b72e0a5db9ecee007d3f72' assert keyToKey64u( keeper.pubkey) == "HqbSyYiI__jkW1td1VZD3IJc2jU4ty4KXbns7gB9P3I=" keeper.clearBaseDir() assert not os.path.exists(keepDirPath) cleanupTmpBaseDir(os.path.dirname(keepDirPath)) assert not os.path.exists(os.path.dirname(keepDirPath)) print("Done Test")
def test_setupDbEnv(): """ """ print("Testing Setup DB Env") baseDirPath = setupTmpBaseDir() assert baseDirPath.startswith("/tmp/bluepea") assert baseDirPath.endswith("test") dbDirPath = os.path.join(baseDirPath, "bluepea/db") os.makedirs(dbDirPath) assert os.path.exists(dbDirPath) env = dbing.setupDbEnv(baseDirPath=dbDirPath) assert env.path() == dbDirPath assert dbing.gDbDirPath == dbDirPath assert dbing.gDbEnv is env data = ODict() dbCore = dbing.gDbEnv.open_db( b'core') # open named sub db named 'core' within env with dbing.gDbEnv.begin(db=dbCore, write=True) as txn: # txn is a Transaction object data["name"] = "John Smith" data["city"] = "Alta" datab = json.dumps(data, indent=2).encode("utf-8") txn.put(b'person0', datab) # keys and values are bytes d0b = txn.get(b'person0') assert d0b == datab data["name"] = "Betty Smith" data["city"] = "Snowbird" datab = json.dumps(data, indent=2).encode("utf-8") txn.put(b'person1', datab) # keys and values are bytes d1b = txn.get(b'person1') assert d1b == datab d0b = txn.get(b'person0') # re-fetch person0 assert d0b != datab data = json.loads(d0b.decode('utf-8'), object_pairs_hook=ODict) assert data['name'] == "John Smith" assert data['city'] == "Alta" cleanupTmpBaseDir(dbDirPath) assert not os.path.exists(dbDirPath) print("Done Test")
def test_setupPrime(): """ Test prime setup """ print("Testing setup") dt = datetime.datetime(2000, 1, 1, tzinfo=datetime.timezone.utc) stamp = timing.iso8601(dt, aware=True) assert stamp == "2000-01-01T00:00:00+00:00" baseDirPath = setupTmpBaseDir() assert baseDirPath.startswith("/tmp/bluepea") assert baseDirPath.endswith("test") keepDirPath = os.path.join(baseDirPath, "bluepea/keep") os.makedirs(keepDirPath) assert os.path.exists(keepDirPath) seed = (b'\x0c\xaa\xc9\xc6G\x11\xf6nn\xd7\x1b7\xdc^i\xc5\x12O\xe9>\xe1$F\xe1' b'\xa4z\xd4\xb6P\xdd\x86\x1d') prikey = (b'\xd9\xc8<$\x03\xb9%\x03c\xb3*6g\xa7m\xd8\x8d\x08j\xd4^4\x88\xcac\xba\xd1\xe9' b'\xd9\xe6\x99%') dbDirPath = os.path.join(baseDirPath, "bluepea/db") os.makedirs(dbDirPath) assert os.path.exists(dbDirPath) priming.setup(keepDirPath=keepDirPath, seed=seed, prikey=prikey, dbDirPath=dbDirPath, changed=stamp) assert keeping.gKeepDirPath == keepDirPath assert dbing.gDbDirPath == dbDirPath keeper = keeping.gKeeper dat, ser, sig = dbing.getSelfSigned(keeper.did) assert dat assert dat['did'] == keeper.did assert dat['changed'] == stamp cleanupTmpBaseDir(baseDirPath) assert not os.path.exists(baseDirPath) print("Done Test")
def test_setupKeep(): """ Test setting up keep directory """ print("Testing setupKeep") baseDirPath = setupTmpBaseDir() assert baseDirPath.startswith("/tmp/bluepea") assert baseDirPath.endswith("test") keepDirPath = os.path.join(baseDirPath, "bluepea/keep") os.makedirs(keepDirPath) assert os.path.exists(keepDirPath) gKeepDirPath = keeping.setupKeep(baseDirPath=keepDirPath) assert gKeepDirPath == keepDirPath assert gKeepDirPath == keeping.gKeepDirPath cleanupTmpBaseDir(keepDirPath) assert not os.path.exists(keepDirPath) print("Done Test")
def test_dumpLoadKeys(): """ """ print("Testing dump load keys") baseDirPath = setupTmpBaseDir() assert baseDirPath.startswith("/tmp/bluepea") assert baseDirPath.endswith("test") keyDirPath = os.path.join(baseDirPath, "keys") os.makedirs(keyDirPath) assert os.path.exists(keyDirPath) keyFilePath = os.path.join(keyDirPath, "signer.json") assert keyFilePath.endswith("keys/signer.json") # random seed used to generate private signing key #seed = libnacl.randombytes(libnacl.crypto_sign_SEEDBYTES) seed = ( b'PTi\x15\xd5\xd3`\xf1u\x15}^r\x9bfH\x02l\xc6\x1b\x1d\x1c\x0b9\xd7{\xc0_' b'\xf2K\x93`') # creates signing/verification key pair verkey, sigkey = libnacl.crypto_sign_seed_keypair(seed) assert seed == sigkey[:32] assert verkey == ( b'B\xdd\xbb}8V\xa0\xd6lk\xcf\x15\xad9\x1e\xa7\xa1\xfe\xe0p<\xb6\xbex' b'\xb0s\x8d\xd6\xf5\xa5\xe8Q') assert sigkey == ( b'PTi\x15\xd5\xd3`\xf1u\x15}^r\x9bfH\x02l\xc6\x1b\x1d\x1c\x0b9\xd7{\xc0_' b'\xf2K\x93`B\xdd\xbb}8V\xa0\xd6lk\xcf\x15\xad9\x1e\xa7\xa1\xfe\xe0p<\xb6\xbex' b'\xb0s\x8d\xd6\xf5\xa5\xe8Q') keyData = ODict(seed=binascii.hexlify(seed).decode('utf-8'), sigkey=binascii.hexlify(sigkey).decode('utf-8'), verkey=binascii.hexlify(verkey).decode('utf-8')) assert keyData == ODict([ ('seed', '50546915d5d360f175157d5e729b6648026cc61b1d1c0b39d77bc05ff24b9360'), ('sigkey', ('50546915d5d360f175157d5e729b6648026cc61b1d1c0b39d77bc05ff24b93604' '2ddbb7d3856a0d66c6bcf15ad391ea7a1fee0703cb6be78b0738dd6f5a5e851')), ('verkey', '42ddbb7d3856a0d66c6bcf15ad391ea7a1fee0703cb6be78b0738dd6f5a5e851') ]) keeping.dumpKeys(keyData, keyFilePath) assert os.path.exists(keyFilePath) mode = stat.filemode(os.stat(keyFilePath).st_mode) assert mode == "-rw-------" keyDataFiled = keeping.loadKeys(keyFilePath) assert keyData == keyDataFiled sd = binascii.unhexlify(keyDataFiled['seed'].encode('utf-8')) assert sd == seed sk = binascii.unhexlify(keyDataFiled['sigkey'].encode('utf-8')) assert sk == sigkey vk = binascii.unhexlify(keyDataFiled['verkey'].encode('utf-8')) assert vk == verkey cleanupTmpBaseDir(baseDirPath) assert not os.path.exists(keyFilePath) print("Done Test")