2019-05-14 15:50:30 -04:00
|
|
|
import shutil
|
|
|
|
import tempfile
|
|
|
|
from random import choices
|
|
|
|
from string import ascii_letters, ascii_uppercase, digits
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
from faker import Faker
|
|
|
|
from faker.providers import BaseProvider
|
|
|
|
from nio.crypto import OlmAccount
|
|
|
|
from nio.store import SqliteStore
|
|
|
|
|
|
|
|
from pantalaimon.store import ClientInfo, PanStore
|
|
|
|
|
|
|
|
faker = Faker()
|
|
|
|
|
|
|
|
|
|
|
|
class Provider(BaseProvider):
|
|
|
|
def mx_id(self):
|
|
|
|
return "@{}:{}".format(faker.user_name(), faker.hostname())
|
|
|
|
|
|
|
|
def device_id(self):
|
|
|
|
return "".join(choices(ascii_uppercase, k=10))
|
|
|
|
|
|
|
|
def access_token(self):
|
|
|
|
return "MDA" + "".join(choices(digits + ascii_letters, k=272))
|
|
|
|
|
|
|
|
def client(self):
|
|
|
|
return ClientInfo(faker.mx_id(), faker.access_token())
|
|
|
|
|
|
|
|
|
|
|
|
faker.add_provider(Provider)
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def access_token():
|
|
|
|
return faker.access_token()
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def client():
|
|
|
|
return faker.client()
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def tempdir():
|
|
|
|
newpath = tempfile.mkdtemp()
|
|
|
|
yield newpath
|
|
|
|
shutil.rmtree(newpath)
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def panstore(tempdir):
|
|
|
|
for _ in range(10):
|
|
|
|
store = SqliteStore(
|
|
|
|
faker.mx_id(),
|
|
|
|
faker.device_id(),
|
|
|
|
tempdir,
|
|
|
|
"",
|
|
|
|
"pan.db"
|
|
|
|
)
|
|
|
|
account = OlmAccount()
|
|
|
|
store.save_account(account)
|
|
|
|
|
|
|
|
store = PanStore(tempdir, "pan.db")
|
|
|
|
return store
|
2019-06-06 05:14:40 -04:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def panstore_with_users(panstore):
|
|
|
|
accounts = panstore.load_all_users()
|
|
|
|
user_id, device_id = accounts[0]
|
|
|
|
server = "example"
|
|
|
|
|
|
|
|
panstore.save_server_user(server, user_id)
|
|
|
|
|
|
|
|
server2 = "localhost"
|
|
|
|
user_id2, device_id2 = accounts[1]
|
|
|
|
panstore.save_server_user(server2, user_id2)
|
|
|
|
|
|
|
|
return panstore
|