diff --git a/.gitignore b/.gitignore index d1ca852..3595135 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,8 @@ __pycache__ .DS_Store -.vscode/ \ No newline at end of file +.vscode/ +.coverage +.noseids +nosetests.xml +tests/report +tests/tmp.db \ No newline at end of file diff --git a/Pipfile b/Pipfile index 598ef00..f63f750 100644 --- a/Pipfile +++ b/Pipfile @@ -12,6 +12,7 @@ pyyaml = ">=4.2b1" [dev-packages] black = "*" nose = "*" +coverage = "*" [pipenv] allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock index f801761..a17abe8 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "2c47563650e5d11681821cf029d00a92e405987c02eb1b0870a950330841c5c7" + "sha256": "e23347a7d680cf62879fd5c1acfd6431c4d56ff46c30533478629e220623e585" }, "pipfile-spec": 6, "requires": {}, @@ -237,6 +237,41 @@ ], "version": "==7.0" }, + "coverage": { + "hashes": [ + "sha256:029c69deaeeeae1b15bc6c59f0ffa28aa8473721c614a23f2c2976dec245cd12", + "sha256:02abbbebc6e9d5abe13cd28b5e963dedb6ffb51c146c916d17b18f141acd9947", + "sha256:1bbfe5b82a3921d285e999c6d256c1e16b31c554c29da62d326f86c173d30337", + "sha256:210c02f923df33a8d0e461c86fdcbbb17228ff4f6d92609fc06370a98d283c2d", + "sha256:2d0807ba935f540d20b49d5bf1c0237b90ce81e133402feda906e540003f2f7a", + "sha256:35d7a013874a7c927ce997350d314144ffc5465faf787bb4e46e6c4f381ef562", + "sha256:3636f9d0dcb01aed4180ef2e57a4e34bb4cac3ecd203c2a23db8526d86ab2fb4", + "sha256:42f4be770af2455a75e4640f033a82c62f3fb0d7a074123266e143269d7010ef", + "sha256:48440b25ba6cda72d4c638f3a9efa827b5b87b489c96ab5f4ff597d976413156", + "sha256:4dac8dfd1acf6a3ac657475dfdc66c621f291b1b7422a939cc33c13ac5356473", + "sha256:4e8474771c69c2991d5eab65764289a7dd450bbea050bc0ebb42b678d8222b42", + "sha256:551f10ddfeff56a1325e5a34eff304c5892aa981fd810babb98bfee77ee2fb17", + "sha256:5b104982f1809c1577912519eb249f17d9d7e66304ad026666cb60a5ef73309c", + "sha256:5c62aef73dfc87bfcca32cee149a1a7a602bc74bac72223236b0023543511c88", + "sha256:633151f8d1ad9467b9f7e90854a7f46ed8f2919e8bc7d98d737833e8938fc081", + "sha256:772207b9e2d5bf3f9d283b88915723e4e92d9a62c83f44ec92b9bd0cd685541b", + "sha256:7d5e02f647cd727afc2659ec14d4d1cc0508c47e6cfb07aea33d7aa9ca94d288", + "sha256:a9798a4111abb0f94584000ba2a2c74841f2cfe5f9254709756367aabbae0541", + "sha256:b38ea741ab9e35bfa7015c93c93bbd6a1623428f97a67083fc8ebd366238b91f", + "sha256:b6a5478c904236543c0347db8a05fac6fc0bd574c870e7970faa88e1d9890044", + "sha256:c6248bfc1de36a3844685a2e10ba17c18119ba6252547f921062a323fb31bff1", + "sha256:c705ab445936457359b1424ef25ccc0098b0491b26064677c39f1d14a539f056", + "sha256:d95a363d663ceee647291131dbd213af258df24f41350246842481ec3709bd33", + "sha256:e27265eb80cdc5dab55a40ef6f890e04ecc618649ad3da5265f128b141f93f78", + "sha256:ebc276c9cb5d917bd2ae959f84ffc279acafa9c9b50b0fa436ebb70bbe2166ea", + "sha256:f4d229866d030863d0fe3bf297d6d11e6133ca15bbb41ed2534a8b9a3d6bd061", + "sha256:f95675bd88b51474d4fe5165f3266f419ce754ffadfb97f10323931fa9ac95e5", + "sha256:f95bc54fb6d61b9f9ff09c4ae8ff6a3f5edc937cda3ca36fc937302a7c152bf1", + "sha256:fd0f6be53de40683584e5331c341e65a679dbe5ec489a0697cec7c2ef1a48cda" + ], + "index": "pypi", + "version": "==5.0a4" + }, "nose": { "hashes": [ "sha256:9ff7c6cc443f8c51994b34a667bbcf45afd6d945be7477b52e97516fd17c53ac", diff --git a/bumper/__init__.py b/bumper/__init__.py index 6438226..d7a02ed 100644 --- a/bumper/__init__.py +++ b/bumper/__init__.py @@ -13,6 +13,7 @@ import os import logging from base64 import b64decode, b64encode from tinydb import TinyDB, Query +from tinydb.storages import MemoryStorage bumper_users_var = contextvars.ContextVar("bumper_users", default=[]) bumper_clients_var = contextvars.ContextVar("bumper_clients", default=[]) @@ -24,6 +25,7 @@ server_key = "./certs/key.pem" use_auth = False token_validity_seconds = 3600 # 1 hour +db = None # Logs bumperlog = logging.getLogger("bumper") @@ -41,11 +43,19 @@ xmppserverlog = logging.getLogger("xmppserver") # xmppserverlog.setLevel(logging.INFO) +def __init__(self, db=None): + if db: + self.db = db + + def get_milli_time(timetoconvert): return int(round(timetoconvert * 1000)) def db_file(): + if db: + return db + if platform.system() == "Windows": return os.path.join(os.getenv("APPDATA"), "bumper.db") else: diff --git a/tests/test_bumper.py b/tests/test_bumper.py new file mode 100644 index 0000000..084b7c1 --- /dev/null +++ b/tests/test_bumper.py @@ -0,0 +1,14 @@ +from nose.tools import * +from tinydb.storages import MemoryStorage +from tinydb import TinyDB, Query +import bumper + + +def test_useradd(): + btest = bumper + btest.db = "tests/tmp.db" + btest.user_add("testuser") + + db = TinyDB("tests/tmp.db") + users = db.table("users").search(Query().userid == "testuser") + assert_equals(len(users), 1)