Onionr/onionr/tests/test_onionrusers.py

91 lines
3.3 KiB
Python
Executable File

#!/usr/bin/env python3
import sys, os
sys.path.append(".")
import unittest, uuid
import json
TEST_DIR = 'testdata/%s-%s' % (uuid.uuid4(), os.path.basename(__file__)) + '/'
print("Test directory:", TEST_DIR)
os.environ["ONIONR_HOME"] = TEST_DIR
import core, onionr
c = core.Core()
import onionrexceptions
from onionrusers import onionrusers
from onionrusers import contactmanager
class OnionrUserTests(unittest.TestCase):
'''
Tests both the onionrusers class and the contactmanager (which inherits it)
'''
def test_users(self):
keypair = c._crypto.generatePubKey()
onionrusers.OnionrUser(c, keypair[0])
return
def test_contact_init_no_save(self):
contact = c._crypto.generatePubKey()[0]
contact = contactmanager.ContactManager(c, contact)
self.assertFalse(contact.publicKey in c.listPeers())
def test_contact_create(self):
contact = c._crypto.generatePubKey()[0]
contact = contactmanager.ContactManager(c, contact, saveUser=True)
self.assertTrue(contact.publicKey in c.listPeers())
def test_contact_set_info(self):
contact = c._crypto.generatePubKey()[0]
contact = contactmanager.ContactManager(c, contact, saveUser=True)
fileLocation = '%s/contacts/%s.json' % (c.dataDir, contact.publicKey)
contact.set_info('alias', 'bob')
self.assertTrue(os.path.exists(fileLocation))
with open(fileLocation, 'r') as data:
data = data.read()
data = json.loads(data)
self.assertEqual(data['alias'], 'bob')
def test_contact_get_info(self):
contact = c._crypto.generatePubKey()[0]
contact = contactmanager.ContactManager(c, contact, saveUser=True)
fileLocation = '%s/contacts/%s.json' % (c.dataDir, contact.publicKey)
with open(fileLocation, 'w') as contactFile:
contactFile.write('{"alias": "bob"}')
self.assertEqual(contact.get_info('alias', forceReload=True), 'bob')
self.assertEqual(contact.get_info('fail', forceReload=True), None)
self.assertEqual(contact.get_info('fail'), None)
def test_encrypt(self):
contactPair = c._crypto.generatePubKey()
contact = contactmanager.ContactManager(c, contactPair[0], saveUser=True)
encrypted = contact.encrypt('test')
decrypted = c._crypto.pubKeyDecrypt(encrypted, privkey=contactPair[1], encodedData=True).decode()
self.assertEqual('test', decrypted)
def test_delete_contact(self):
contact = c._crypto.generatePubKey()[0]
contact = contactmanager.ContactManager(c, contact, saveUser=True)
fileLocation = '%s/contacts/%s.json' % (c.dataDir, contact.publicKey)
self.assertFalse(os.path.exists(fileLocation))
with open(fileLocation, 'w') as contactFile:
contactFile.write('{"alias": "test"}')
self.assertTrue(os.path.exists(fileLocation))
contact.delete_contact()
self.assertFalse(os.path.exists(fileLocation))
try:
contact.get_info('alias')
except onionrexceptions.ContactDeleted:
pass
else:
self.assertTrue(False)
try:
contact.set_info('alias', 'test2')
except onionrexceptions.ContactDeleted:
pass
else:
self.assertTrue(False)
unittest.main()