aboutsummaryrefslogtreecommitdiffstats
path: root/moonv4/moon_utilities
diff options
context:
space:
mode:
authorRHE <rebirthmonkey@gmail.com>2017-11-28 16:05:46 +0100
committerRHE <rebirthmonkey@gmail.com>2017-11-28 16:05:46 +0100
commitd72e7ce30ebc098a6832b32d1a1155b1a7efd51c (patch)
treef138415024cb759cac099202546376ed632c1137 /moonv4/moon_utilities
parentea4391a6ba0d2616a44f11b4ccdb2e1b4a3d2f2c (diff)
moon_utilities python unit test
Change-Id: Ia3e52d778ce2aba7f6ae1df727606dd40d3be480 Signed-off-by: RHE <rebirthmonkey@gmail.com>
Diffstat (limited to 'moonv4/moon_utilities')
-rw-r--r--moonv4/moon_utilities/README.md (renamed from moonv4/moon_utilities/README.rst)9
-rw-r--r--moonv4/moon_utilities/build.sh38
-rw-r--r--moonv4/moon_utilities/setup.py2
-rw-r--r--moonv4/moon_utilities/tests/README.md12
-rw-r--r--moonv4/moon_utilities/tests/unit_python/Dockerfile7
-rw-r--r--moonv4/moon_utilities/tests/unit_python/conftest.py202
-rw-r--r--moonv4/moon_utilities/tests/unit_python/requirements.txt10
-rw-r--r--moonv4/moon_utilities/tests/unit_python/run_tests.sh8
-rw-r--r--moonv4/moon_utilities/tests/unit_python/test_cache.py6
9 files changed, 252 insertions, 42 deletions
diff --git a/moonv4/moon_utilities/README.rst b/moonv4/moon_utilities/README.md
index ded4e99a..b658a864 100644
--- a/moonv4/moon_utilities/README.rst
+++ b/moonv4/moon_utilities/README.md
@@ -1,9 +1,12 @@
-Core module for the Moon project
-================================
-
+# Moon Python Utilities Package
This package contains the core module for the Moon project
It is designed to provide authorization features to all OpenStack components.
For any other information, refer to the parent project:
https://git.opnfv.org/moon
+
+moon_utilities is a common Python lib for other Moon Python packages
+
+
+
diff --git a/moonv4/moon_utilities/build.sh b/moonv4/moon_utilities/build.sh
deleted file mode 100644
index 4a86e5af..00000000
--- a/moonv4/moon_utilities/build.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env bash
-
-VERSION=moon_utilities-$(grep __version__ moon_utilities/__init__.py | cut -d "\"" -f 2)
-
-python3 setup.py sdist bdist_wheel
-
-rm dist/*.asc 2>/dev/null
-
-gpg --detach-sign -u "A0A96E75" -a dist/${VERSION}-py3-none-any.whl
-gpg --detach-sign -u "A0A96E75" -a dist/${VERSION}.tar.gz
-
-if [ "$1" = "upload" ]; then
- twine upload dist/${VERSION}-py3-none-any.whl dist/${VERSION}-py3-none-any.whl.asc
- twine upload dist/${VERSION}.tar.gz dist/${VERSION}.tar.gz.asc
- rm -f ../moon_orchestrator/dist/moon_utilities*
- rm -f ../moon_interface/dist/moon_utilities*
- rm -f ../moon_manager/dist/moon_utilities*
- rm -f ../moon_authz/dist/moon_utilities*
- rm -f ../moon_wrapper/dist/moon_utilities*
-fi
-
-if [ "$1" = "copy" ]; then
- mkdir -p ../moon_orchestrator/dist/ 2>/dev/null
- rm -f ../moon_orchestrator/dist/moon_utilities*
- cp -v dist/${VERSION}-py3-none-any.whl ../moon_orchestrator/dist/
- mkdir -p ../moon_interface/dist/ 2>/dev/null
- rm -f ../moon_interface/dist/moon_utilities*
- cp -v dist/${VERSION}-py3-none-any.whl ../moon_interface/dist/
- mkdir -p ../moon_manager/dist/ 2>/dev/null
- rm -f ../moon_manager/dist/moon_utilities*
- cp -v dist/${VERSION}-py3-none-any.whl ../moon_manager/dist/
- mkdir -p ../moon_authz/dist/ 2>/dev/null
- rm -f ../moon_authz/dist/moon_utilities*
- cp -v dist/${VERSION}-py3-none-any.whl ../moon_authz/dist/
- mkdir -p ../moon_wrapper/dist/ 2>/dev/null
- rm -f ../moon_wrapper/dist/moon_utilities*
- cp -v dist/${VERSION}-py3-none-any.whl ../moon_wrapper/dist/
-fi
diff --git a/moonv4/moon_utilities/setup.py b/moonv4/moon_utilities/setup.py
index 6c9ffd3d..cd7a2577 100644
--- a/moonv4/moon_utilities/setup.py
+++ b/moonv4/moon_utilities/setup.py
@@ -23,7 +23,7 @@ setup(
description="Some utilities for all the Moon components",
- long_description=open('README.rst').read(),
+ long_description=open('README.md').read(),
install_requires=required,
diff --git a/moonv4/moon_utilities/tests/README.md b/moonv4/moon_utilities/tests/README.md
new file mode 100644
index 00000000..ddb4f55d
--- /dev/null
+++ b/moonv4/moon_utilities/tests/README.md
@@ -0,0 +1,12 @@
+# Tests
+
+## Python Unit Test for moon_utilities
+- build the moon_utilities package
+- launch Docker for Python unit tests
+ - `cd moon_utilities`
+ - `docker run --volume $(pwd):/data moon_utilities_test`
+- upload moon_utilities to PIP
+
+
+
+
diff --git a/moonv4/moon_utilities/tests/unit_python/Dockerfile b/moonv4/moon_utilities/tests/unit_python/Dockerfile
new file mode 100644
index 00000000..681edcd7
--- /dev/null
+++ b/moonv4/moon_utilities/tests/unit_python/Dockerfile
@@ -0,0 +1,7 @@
+FROM python:3
+
+RUN pip install pytest requests_mock requests --upgrade
+ADD requirements.txt /root
+RUN pip install -r /root/requirements.txt --upgrade
+
+CMD ["sh", "/data/tests/unit_python/run_tests.sh"] \ No newline at end of file
diff --git a/moonv4/moon_utilities/tests/unit_python/conftest.py b/moonv4/moon_utilities/tests/unit_python/conftest.py
new file mode 100644
index 00000000..177a406e
--- /dev/null
+++ b/moonv4/moon_utilities/tests/unit_python/conftest.py
@@ -0,0 +1,202 @@
+import base64
+import json
+import logging
+import pytest
+import requests_mock
+
+CONF = {
+ "openstack": {
+ "keystone": {
+ "url": "http://keystone:5000/v3",
+ "user": "admin",
+ "check_token": False,
+ "password": "p4ssw0rd",
+ "domain": "default",
+ "certificate": False,
+ "project": "admin"
+ }
+ },
+ "components": {
+ "wrapper": {
+ "bind": "0.0.0.0",
+ "port": 8080,
+ "container": "wukongsun/moon_wrapper:v4.3",
+ "timeout": 5,
+ "hostname": "wrapper"
+ },
+ "manager": {
+ "bind": "0.0.0.0",
+ "port": 8082,
+ "container": "wukongsun/moon_manager:v4.3",
+ "hostname": "manager"
+ },
+ "port_start": 31001,
+ "orchestrator": {
+ "bind": "0.0.0.0",
+ "port": 8083,
+ "container": "wukongsun/moon_orchestrator:v4.3",
+ "hostname": "interface"
+ },
+ "interface": {
+ "bind": "0.0.0.0",
+ "port": 8080,
+ "container": "wukongsun/moon_interface:v4.3",
+ "hostname": "interface"
+ }
+ },
+ "plugins": {
+ "session": {
+ "port": 8082,
+ "container": "asteroide/session:latest"
+ },
+ "authz": {
+ "port": 8081,
+ "container": "wukongsun/moon_authz:v4.3"
+ }
+ },
+ "logging": {
+ "handlers": {
+ "file": {
+ "filename": "/tmp/moon.log",
+ "class": "logging.handlers.RotatingFileHandler",
+ "level": "DEBUG",
+ "formatter": "custom",
+ "backupCount": 3,
+ "maxBytes": 1048576
+ },
+ "console": {
+ "class": "logging.StreamHandler",
+ "formatter": "brief",
+ "level": "INFO",
+ "stream": "ext://sys.stdout"
+ }
+ },
+ "formatters": {
+ "brief": {
+ "format": "%(levelname)s %(name)s %(message)-30s"
+ },
+ "custom": {
+ "format": "%(asctime)-15s %(levelname)s %(name)s %(message)s"
+ }
+ },
+ "root": {
+ "handlers": [
+ "console"
+ ],
+ "level": "ERROR"
+ },
+ "version": 1,
+ "loggers": {
+ "moon": {
+ "handlers": [
+ "console",
+ "file"
+ ],
+ "propagate": False,
+ "level": "DEBUG"
+ }
+ }
+ },
+ "slave": {
+ "name": None,
+ "master": {
+ "url": None,
+ "login": None,
+ "password": None
+ }
+ },
+ "docker": {
+ "url": "tcp://172.88.88.1:2376",
+ "network": "moon"
+ },
+ "database": {
+ "url": "sqlite:///database.db",
+ # "url": "mysql+pymysql://moon:p4sswOrd1@db/moon",
+ "driver": "sql"
+ },
+ "messenger": {
+ "url": "rabbit://moon:p4sswOrd1@messenger:5672/moon"
+ }
+}
+
+COMPONENTS = (
+ "logging",
+ "openstack/keystone",
+ "database",
+ "slave",
+ "components/manager",
+)
+
+
+def get_b64_conf(component=None):
+ if component in CONF:
+ return base64.b64encode(
+ json.dumps(
+ CONF[component]).encode('utf-8')+b"\n").decode('utf-8')
+ elif component == "components":
+ return base64.b64encode(
+ json.dumps(CONF["components"]).encode('utf-8')+b"\n").decode('utf-8')
+ elif not component:
+ return base64.b64encode(
+ json.dumps(CONF).encode('utf-8')+b"\n").decode('utf-8')
+ elif "/" in component:
+ key1, _, key2 = component.partition("/")
+ return base64.b64encode(
+ json.dumps(
+ CONF[key1][key2]).encode('utf-8')+b"\n").decode('utf-8')
+
+
+@pytest.fixture(autouse=True)
+def no_requests(monkeypatch):
+ """ Modify the response from Requests module
+ """
+ with requests_mock.Mocker(real_http=True) as m:
+ for component in COMPONENTS:
+ m.register_uri(
+ 'GET', 'http://consul:8500/v1/kv/{}'.format(component),
+ json=[{'Key': component, 'Value': get_b64_conf(component)}]
+ )
+ m.register_uri(
+ 'GET', 'http://consul:8500/v1/kv/components?recurse=true',
+ json=[{'Key': "components", 'Value': get_b64_conf("components")}]
+ )
+ m.register_uri(
+ 'POST', 'http://keystone:5000/v3/auth/tokens',
+ headers={'X-Subject-Token': "111111111"}
+ )
+ m.register_uri(
+ 'DELETE', 'http://keystone:5000/v3/auth/tokens',
+ headers={'X-Subject-Token': "111111111"}
+ )
+ m.register_uri(
+ 'POST', 'http://keystone:5000/v3/users?name=testuser&domain_id=default',
+ json={"users": {}}
+ )
+ m.register_uri(
+ 'GET', 'http://keystone:5000/v3/users?name=testuser&domain_id=default',
+ json={"users": {}}
+ )
+ m.register_uri(
+ 'POST', 'http://keystone:5000/v3/users/',
+ json={"users": [{
+ "id": "1111111111111"
+ }]}
+ )
+ print("End registering URI")
+ # from moon_db.db_manager import init_engine, run
+ # engine = init_engine()
+ # print("engine={}".format(engine))
+ # run("upgrade", logging.getLogger("db_manager"), engine)
+ # print("End populating the DB.")
+ yield m
+
+
+# @pytest.fixture(autouse=True, scope="session")
+# def manage_database():
+# from moon_db.db_manager import init_engine, run
+# engine = init_engine()
+# run("upgrade", logging.getLogger("db_manager"), engine)
+# yield
+# print("Will close the DB")
+
+
diff --git a/moonv4/moon_utilities/tests/unit_python/requirements.txt b/moonv4/moon_utilities/tests/unit_python/requirements.txt
new file mode 100644
index 00000000..b611b008
--- /dev/null
+++ b/moonv4/moon_utilities/tests/unit_python/requirements.txt
@@ -0,0 +1,10 @@
+kombu !=4.0.1,!=4.0.0
+oslo.messaging
+oslo.config
+oslo.log
+vine
+werkzeug
+flask
+requests
+pytest
+requests_mock \ No newline at end of file
diff --git a/moonv4/moon_utilities/tests/unit_python/run_tests.sh b/moonv4/moon_utilities/tests/unit_python/run_tests.sh
new file mode 100644
index 00000000..527e3dc4
--- /dev/null
+++ b/moonv4/moon_utilities/tests/unit_python/run_tests.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+cd /data
+pip3 install -r tests/unit_python/requirements.txt --upgrade
+pip3 install .
+
+cd /data/tests/unit_python
+pytest .
diff --git a/moonv4/moon_utilities/tests/unit_python/test_cache.py b/moonv4/moon_utilities/tests/unit_python/test_cache.py
new file mode 100644
index 00000000..5ecacfcf
--- /dev/null
+++ b/moonv4/moon_utilities/tests/unit_python/test_cache.py
@@ -0,0 +1,6 @@
+
+def test_cache():
+ from moon_utilities import cache
+ c = cache.Cache()
+ r = c.authz_requests()
+ assert isinstance(r, dict)