From 422a28cd8d9549ad4d0bac044c16dfa71cdff1fb Mon Sep 17 00:00:00 2001 From: Brian Martin Date: Fri, 7 Jun 2019 02:00:42 -0400 Subject: [PATCH] fix tests fix tests broken by lack of certs - pytest.ini provides environment variables that load tests/test_certs --- .gitignore | 2 ++ .travis.yml | 2 +- Pipfile | 1 + Pipfile.lock | 9 ++++++++- appveyor.yml | 2 +- tests/pytest.ini | 5 +++++ tests/test_certs/bumper.crt | 26 ++++++++++++++++++++++++++ tests/test_certs/bumper.key | 27 +++++++++++++++++++++++++++ tests/test_certs/ca.crt | 19 +++++++++++++++++++ tests/test_certs/ca.key | 27 +++++++++++++++++++++++++++ tests/test_confserver.py | 3 +-- tests/test_mqttserver.py | 33 +++++++++++++-------------------- tests/tests.md | 6 +++--- 13 files changed, 134 insertions(+), 28 deletions(-) create mode 100644 tests/pytest.ini create mode 100644 tests/test_certs/bumper.crt create mode 100644 tests/test_certs/bumper.key create mode 100644 tests/test_certs/ca.crt create mode 100644 tests/test_certs/ca.key diff --git a/.gitignore b/.gitignore index 1b7c074..9e4d4a9 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,8 @@ __pycache__ # Ignore items in test (report, cache, etc), except files starting with test tests/* !tests/test* +!tests/test_certs +!tests/pytest.ini # Ignore logs/data/certs logs/ diff --git a/.travis.yml b/.travis.yml index 3b82981..1b952c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ install: - pip install pipenv - pipenv install --dev -script: pipenv run python -m pytest --cov=./ +script: pipenv run python -m pytest --cov=./ tests after_success: - codecov \ No newline at end of file diff --git a/Pipfile b/Pipfile index 0da7f53..bfb75b6 100644 --- a/Pipfile +++ b/Pipfile @@ -21,6 +21,7 @@ pytest-cov = "*" testfixtures = "*" codecov = "*" autoflake = "*" +pytest-env = "*" [pipenv] allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock index 0d2d406..05354a2 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "077603b06fdb2e79c639d5006db173afd97762d435e05e987a3c9b2ba6e6fedf" + "sha256": "309c2ca578f67a8663325695e4d283f7e3f604c7cec451bf57e71af7dcdb7294" }, "pipfile-spec": 6, "requires": {}, @@ -531,6 +531,13 @@ "index": "pypi", "version": "==2.7.1" }, + "pytest-env": { + "hashes": [ + "sha256:7e94956aef7f2764f3c147d216ce066bf6c42948bb9e293169b1b1c880a580c2" + ], + "index": "pypi", + "version": "==0.6.2" + }, "requests": { "hashes": [ "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", diff --git a/appveyor.yml b/appveyor.yml index cd58fa4..56cc65c 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -19,7 +19,7 @@ test_script: # Note that you must use the environment variable %PYTHON% to refer to # the interpreter you're using - Appveyor does not do anything special # to put the Python version you want to use on PATH. - - "pipenv run python -m pytest --cov=./" + - "pipenv run python -m pytest --cov=./ tests" after_test: - "pipenv run python -m codecov" \ No newline at end of file diff --git a/tests/pytest.ini b/tests/pytest.ini new file mode 100644 index 0000000..773fbe0 --- /dev/null +++ b/tests/pytest.ini @@ -0,0 +1,5 @@ +[pytest] +env = + BUMPER_CA=tests/test_certs/ca.crt + BUMPER_CERT=tests/test_certs/bumper.crt + BUMPER_KEY=tests/test_certs/bumper.key diff --git a/tests/test_certs/bumper.crt b/tests/test_certs/bumper.crt new file mode 100644 index 0000000..c80e131 --- /dev/null +++ b/tests/test_certs/bumper.crt @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE----- +MIIEXDCCA0SgAwIBAgICBnowDQYJKoZIhvcNAQELBQAwJTEPMA0GA1UEChMGQnVt +cGVyMRIwEAYDVQQDEwlCdW1wZXIgQ0EwHhcNMTkwNjA2MTMwMTE3WhcNMjkwNjA2 +MTMwMTE3WjApMQ8wDQYDVQQKEwZCdW1wZXIxFjAUBgNVBAMTDUJ1bXBlciBTZXJ2 +ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDN94pW5U+IJ70BQRKO +5Va2Inuef9AMvTm11pZMStvIskuzCi+fiIXhrPyKXRNbg21MX9eTrbEfc8t1sBKU +3rYdZ+JteE+9f4pJjHXEyJSMiPZcmGKC3CbSZyuPgw9asLch6FENrwDcxEV7HbJd +oINOjwVqXXPdsSRk2GPuvHjvlwC0h0vt/fErQhlD8U3TIIRDtCfg0BSQUuLXBfJh +R1aksl2nwWQTu62akWTxlZ7hQnkk1WldjIqQarjyaY7Uh0L0/kRpnbhmnW085gzc +E2bi0YwZ7WPwAwPvEszJr30piPtt71JzPPvPUdIcsTj2HotWyAT1ljdxfaKvWgI3 +HemrAgMBAAGjggGQMIIBjDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB +BQUHAwIGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMiQCLdfA6g8 +0xTW2wROUJ42R06hMB8GA1UdIwQYMBaAFKYPByFyuubjTQKzczNsX045VPDbMIIB +CwYDVR0RBIIBAjCB/4ILZWNvdmFjcy5jb22CDSouZWNvdmFjcy5jb22CC2Vjb3Vz +ZXIubmV0gg0qLmVjb3VzZXIubmV0ggtlY292YWNzLm5ldIINKi5lY292YWNzLm5l +dIIIbWFjYm9vazGCCWxvY2FsaG9zdIcEfwAAAYcQAAAAAAAAAAAAAAAAAAAAAYcQ +/oAAAAAAAAAAAAAAAAAAAYcQ/oAAAAAAAAAE2n0e5bOcu4cECgABKIcQ/oAAAAAA +AABAPHz//ktLWIcQ/oAAAAAAAAD+dglg8MXdSIcQ/oAAAAAAAAALkYrhchk/YIcQ +/oAAAAAAAAAY1ZBa52Ist4cECgABCocEfwAAATANBgkqhkiG9w0BAQsFAAOCAQEA +QSFKoR3LxCk0N1eaNm44WF7ho57l1XhqQKWojljsJYWoc+LwcWamdyfTJ5M1o07/ +yIMh16VRFnjr1NPTk9WmLCcy5VN0oP24XAF9VeX5Q2Rkj8j3e7RmRn5jn0BH6sxk +X/a9GMuEqSDYi6j9ggi9AEdAM8tyfcEkXEP3pdVW29je8F0u7Hia42zGUjGwjndl +2Q8mYBKr0ViG1UV7bKAEJl/WvnOTxpp8ZSTLr6RSleGZ7JvCGpISPzNgeIuPRKOT +D77LiGnDdKgJnuwx266tuKV5AN4B3okG/AqbmFtB/LFfNE2769g94pG6jpVZpSum +kq2jok6bnc1fdGkO0ou15w== +-----END CERTIFICATE----- diff --git a/tests/test_certs/bumper.key b/tests/test_certs/bumper.key new file mode 100644 index 0000000..9dfc1df --- /dev/null +++ b/tests/test_certs/bumper.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAzfeKVuVPiCe9AUESjuVWtiJ7nn/QDL05tdaWTErbyLJLswov +n4iF4az8il0TW4NtTF/Xk62xH3PLdbASlN62HWfibXhPvX+KSYx1xMiUjIj2XJhi +gtwm0mcrj4MPWrC3IehRDa8A3MRFex2yXaCDTo8Fal1z3bEkZNhj7rx475cAtIdL +7f3xK0IZQ/FN0yCEQ7Qn4NAUkFLi1wXyYUdWpLJdp8FkE7utmpFk8ZWe4UJ5JNVp +XYyKkGq48mmO1IdC9P5EaZ24Zp1tPOYM3BNm4tGMGe1j8AMD7xLMya99KYj7be9S +czz7z1HSHLE49h6LVsgE9ZY3cX2ir1oCNx3pqwIDAQABAoIBADpMVLXf1jEdvlu6 +hXw44eBPxlnIp6TTcqBLiuMxVSBrhw24Vl57kBmekyS+z5nZi3hQsH42baoPZol7 +Ouc0WqvcGbUOltN2ZDgJL9RxScq1gbYX09piYgKv/R5z5EaxOkS4syiCXmYej+QX +NcNWiZQU212N8hvP5hM9RJvwcPKvcpQIrW5NdcMvhok+kd/abJcIzXhLXEyLcrRJ +XZh6cCesUZQnZWPVecM+bc/Wt9U5pbw/PNTTiQSFW6wrjCOXVKA57p/zmeb3EWFd +V/rlho+QXLBo9I0DLZKScCfMHgVoguK5Ud7drGiB5rPlgPAv0sFW7fhUd1j7hX7H +l4uDrqECgYEA+6xJgJzJp//6eR3wNiSp/4Y8vY+WCtWNCOwhJbw1a8co5Sex0vAk +0y3mye+4rOgRbfXhhpPm+y+EnHbXlVk8Ux37OfxHviewCiRbkjRU3uycE60ZFtLr +rdqA9FNwutfz3AJqJ/zjVoMneeO7h/GkIAHqxOJHAACV/+lObrSMO0MCgYEA0YIV +M032bk+q9zgfd0IY1ZdUhUS2QyQhMY380F+Dym69Xv2FmG+zeynJT5jxrZs3kmcN +X9jnscTIMGO70EHq2sI/h9IFfqr/7iTlbwgpYeKEPYqWkmuetiKziVOL/Uf4USPd +bQiWRIaQpSZFXUCjVrKL8nGdxhA73iOuQKLmjXkCgYEA2mHxlex2/5Sbn6Ve31yJ +NvUgl8yUgeo0a12alcfvAwrabZ44K7W9/pGCBhBBy6fEGAqYG9MTRztAcxSclTfN +pMILUZGcH2EI3IQYAZHvY1ElTd2SO7/iSgWkiF4vH7JsJKjjvLcv/c3o31fBToFb +zXpcYWOIAHSBtIKaUG3SkUkCgYBiJq4l9f1gWqR+42Uiau3ViusG8FTvCYsfeySY +vlawzMadLOqcqqAMMFxmlQGMUq5rQSor4CNTzhv3R5Iik+8iA2TeDY+Tcyspd1Gh +fdJdUFChwD6gZBjbvVAdIu3vf/sekE3ZGe/ENMKpDE/syy56nHUh5QaEVvClNlQZ +ZffbCQKBgHM2fk3Nlsjk7UCVb8P2hZdX4gx83OJDJPfIfpu/Sf5vPDpmeADI0L30 +wlMLo+px1bYBqP6sNx0E1iaBces+WqALnR1tIypItVJmZF7eGeWmJ/KJX1FwtYec +D0cElOusX7pIo6s3lTw4KMxPOMPYRt75zlboVEi+z4cNOCXjf49B +-----END RSA PRIVATE KEY----- diff --git a/tests/test_certs/ca.crt b/tests/test_certs/ca.crt new file mode 100644 index 0000000..b346818 --- /dev/null +++ b/tests/test_certs/ca.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDKTCCAhGgAwIBAgICBnUwDQYJKoZIhvcNAQELBQAwJTEPMA0GA1UEChMGQnVt +cGVyMRIwEAYDVQQDEwlCdW1wZXIgQ0EwHhcNMTkwNjA2MTMwMTE3WhcNMjkwNjA2 +MTMwMTE3WjAlMQ8wDQYDVQQKEwZCdW1wZXIxEjAQBgNVBAMTCUJ1bXBlciBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPOE/zW15yRS7jZhlF0K1s8c +8tN5tYWVieeGCbmdk89vtTA/doYbvbP0ut95OUSS8YEDP98UdqzoTXpYqNehnk5q +VjRyHyXxv2KekhxmTmv+f5OXns8fCgoNlOWAugAlXgk+LGy7non+RLNQ5/vh8E/C +IE0lbxelptkOMirboFPP4LIFqHMjERlC6m63LBftVjRCjDzoWtN9XNCquan27fBd +5/I3wdEBdDcGA7heGPXKrkzyaiZUncHQD3oqbn05ScUFvSJAs7bz4Qdslkna7zK1 +AAJoXEBAjWTTau8xp4Fp1qzloMMh0RrqCBgeBlGeL6OcqvMUNRrFNnuDxEXXuTsC +AwEAAaNjMGEwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFKYPByFyuubjTQKzczNsX045VPDbMB8GA1UdIwQYMBaAFKYPByFyuubjTQKz +czNsX045VPDbMA0GCSqGSIb3DQEBCwUAA4IBAQCy0dzBuANBlmL58XtvwvrSxhJr +oBscfqeYRvWaUkSAbVX4aH7UsUQWDiLtJZdLsWxMLl0LqbDo+t3I8kpSxOAkJ+Dn +zkLAL2ze0ivZEYkLqGXhO+lEK8YcFWJxkgIA/aykmI7suQyv/1x67mTpCVbxMjbI +iVv11L2o9Ilu/ZLIlRg5G3vnTz7Eql3JMFUN+hHzEzuNTyl9JkSUIZJLQyqg3u4Y +NIGD3nxFiNM1LL17Baz2EjfloAoSyaPGZUzKyRT2BUzHCs2vBNnbTN+XRBHJGZX/ +VU76YW8l/f6OPzP6XR3noI6Rpm5OpTOrQTTqmYkcb3QwhBD3I4Aqyjs/qxIT +-----END CERTIFICATE----- diff --git a/tests/test_certs/ca.key b/tests/test_certs/ca.key new file mode 100644 index 0000000..cd7f03a --- /dev/null +++ b/tests/test_certs/ca.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEA84T/NbXnJFLuNmGUXQrWzxzy03m1hZWJ54YJuZ2Tz2+1MD92 +hhu9s/S633k5RJLxgQM/3xR2rOhNelio16GeTmpWNHIfJfG/Yp6SHGZOa/5/k5ee +zx8KCg2U5YC6ACVeCT4sbLueif5Es1Dn++HwT8IgTSVvF6Wm2Q4yKtugU8/gsgWo +cyMRGULqbrcsF+1WNEKMPOha031c0Kq5qfbt8F3n8jfB0QF0NwYDuF4Y9cquTPJq +JlSdwdAPeipufTlJxQW9IkCztvPhB2yWSdrvMrUAAmhcQECNZNNq7zGngWnWrOWg +wyHRGuoIGB4GUZ4vo5yq8xQ1GsU2e4PERde5OwIDAQABAoIBAQCUveGcjvUWDMmP +0d5rTlmSvB3d6fNkGsjW79o00/katSK4y6q7k2o15v/VzBecuRxmLvPucHNkfagF +WO4Yd5FYWD87XZGE/bpmpHCehCbWc+a84dmQrWbWaSFPZWc2+5wKjT1ZVOgrZXHV +DVAFXCYKsYpFVN4cVYQqBC/EWc3+IkQXcw8POLNwa0ml6ZyFZOcmpik/5o+EbCH2 +KL+Rqqi1iKnMKdR9HG9yg7PCk140/Zn0Z5ROWpGehFy1xNlh/+DO9Fjbkm+Zj3sU +/X3UfRRe1Gtbt8z68fZxLqjJfBMujc+J5kSVMn0MH3vXfCLTSktGaxZmHC5xhk36 +59QzpQ7hAoGBAPdvFoaD9jJ8bF3nwIJ2uxYAhH/y9IYb4rW4FN1Dz/fBJuIZ8JO9 +NBDHX1JK1NzgjTE0mqZ0C5UQTNR9FMBVe0iTFDpndL6YcOtU0LIyHeePNGqnVWMp +SjjrjtjSO0Uug7YKSuLOrfMtKZyN0t19KDllThoMZlxSoiTL1Jzor0BJAoGBAPvz +N4kp8t+ngCl/BoHVEKjhtYe90m0VQflwVfl+myJwIVjtEJliAn2ZZ4uKeTqY1EGE +cAKwikpxI3yDVetM/hrivOEcULbk1SwhcmtTaaGCAw6iLm32suPcEROnSQF/FVyj +BxyvHyrSG7FRh6f4YcMg3G6W7VxE4IYVgoVdLPVjAoGBAKBOnK1x+aQj8KG2cIcW +HYfXtgCfi8UHdA5/wSTJtoex4FtEqxVM09q7EQrj6J1h7pgemMOXE5n0AZL5puQl +fcY7ZDOiq4SAh0gwnzWUOsO3iCJBX5TrP2c5VkcrjbL4u+TJLlNbzF9stzTyvdc6 +K0FkXQGLXxYZg2uLk6hFKKXhAoGAODCN+jE40Vhx5M9HjD0QchmkepmDDIDpLdA3 +3GS4BH4tcb+tLAgHtis4RI6lasQa0mHO+UqWDPQeje5cgxWwth5LMYk3FxMB1829 +zuHTdQmh1OmmoS+bxeWWiWONjJ/jC73wIB2OPeaN9oXQU025v+LcRm2ykhlqWX0C +luuo0zECgYEA6FI0/2L+3prIQ6ravX2sWNMEFeWMEUg/ld8lHcOZ+amAuLzMvrPO +oSVb3JQ+OQbpVsorNBjWqQwbUKTJ3zU9/ievyptCs3G39aQ2wUsDdYKfpkxnfKFe +ZgU5YfwB54rgkQc4vCheTnWo/JuhyB5cgvtjtKOdtMKhXfwpX0bFA/w= +-----END RSA PRIVATE KEY----- diff --git a/tests/test_confserver.py b/tests/test_confserver.py index 3c85115..14ff483 100644 --- a/tests/test_confserver.py +++ b/tests/test_confserver.py @@ -725,7 +725,6 @@ async def test_lg_logs(aiohttp_client): confserver.helperbot.send_command = mock.MagicMock( return_value=async_return(command_getstatus_resp) ) - # Test GetGlobalDeviceList postbody = { @@ -800,7 +799,7 @@ async def test_devmgr(aiohttp_client): text = await resp.text() test_resp = json.loads(text) assert test_resp["ret"] == "ok" - assert test_resp["unRead"] == False + assert test_resp["unRead"] == False # Test BotCommand bumper.bot_add("sn_1234", "did_1234", "dev_1234", "res_1234", "eco-ng") diff --git a/tests/test_mqttserver.py b/tests/test_mqttserver.py index 24ef16f..cf2232b 100644 --- a/tests/test_mqttserver.py +++ b/tests/test_mqttserver.py @@ -18,13 +18,6 @@ async def test_helperbot_message(): mqtt_address = ("127.0.0.1", 8883) mqtt_server = bumper.MQTTServer(mqtt_address) await mqtt_server.broker_coro() - #broker = mqtt_server.broker - #mqtt_address = ("127.0.0.1", 8883) - #mqtt_server = bumper.MQTTServer(mqtt_address) - #broker = hbmqtt.broker.Broker( - # mqtt_server.default_config, plugin_namespace="hbmqtt.test.plugins" - #) - #await broker.start() # Test broadcast message mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) @@ -140,12 +133,12 @@ async def test_helperbot_expire_message(): mqtt_address = ("127.0.0.1", 8883) mqtt_server = bumper.MQTTServer(mqtt_address) await mqtt_server.broker_coro() - #mqtt_address = ("127.0.0.1", 8883) - #mqtt_server = bumper.MQTTServer(mqtt_address) - #broker = hbmqtt.broker.Broker( + # mqtt_address = ("127.0.0.1", 8883) + # mqtt_server = bumper.MQTTServer(mqtt_address) + # broker = hbmqtt.broker.Broker( # mqtt_server.default_config, plugin_namespace="hbmqtt.test.plugins" - #) - #await broker.start() + # ) + # await broker.start() # Test broadcast message mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) @@ -209,12 +202,12 @@ async def test_helperbot_sendcommand(): mqtt_address = ("127.0.0.1", 8883) mqtt_server = bumper.MQTTServer(mqtt_address) await mqtt_server.broker_coro() - #mqtt_address = ("127.0.0.1", 8883) - #mqtt_server = bumper.MQTTServer(mqtt_address) - #broker = hbmqtt.broker.Broker( + # mqtt_address = ("127.0.0.1", 8883) + # mqtt_server = bumper.MQTTServer(mqtt_address) + # broker = hbmqtt.broker.Broker( # mqtt_server.default_config, plugin_namespace="hbmqtt.test.plugins" - #) - #await broker.start() + # ) + # await broker.start() mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) await mqtt_helperbot.start_helper_bot() @@ -334,7 +327,7 @@ async def test_mqttserver(): mqtt_helperbot.Client._connected_state._value == True ) # Check helperbot is connected await mqtt_helperbot.Client.disconnect() - + # Test client connect bumper.user_add("user_123") # Add user to db bumper.client_add("user_123", "ecouser.net", "resource_123") # Add client to db @@ -365,7 +358,7 @@ async def test_mqttserver(): fake_bot.Client._connected_state._value == True ) # Check fake_bot is connected await fake_bot.Client.disconnect() - + await asyncio.sleep(0.1) - await mqtt_server.broker.shutdown() \ No newline at end of file + await mqtt_server.broker.shutdown() diff --git a/tests/tests.md b/tests/tests.md index c485135..c4cbdaf 100644 --- a/tests/tests.md +++ b/tests/tests.md @@ -5,12 +5,12 @@ Bumper uses pytest for the majority of test cases. Install requirements using ` Enter pipenv shell `pipenv shell` ### Run tests -`python -m pytest` +`python -m pytest tests` ### Run tests with coverage -`python -m pytest --cov=bumper tests/` +`python -m pytest --cov=./ tests` ### Run tests with coverage html report -`python -m pytest --cov=bumper tests/ --cov-report html:tests/report` +`python -m pytest --cov=./ tests --cov-report html:tests/report` The report will be output into tests/report/index.html for further analysis. \ No newline at end of file