Skip to content
Snippets Groups Projects
Verified Commit d63688e6 authored by Martin Weise's avatar Martin Weise
Browse files
parent 21eddf7e
No related branches found
No related tags found
2 merge requests!395Library,!394Grafana
This commit is part of merge request !394. Comments created here will be created in the context of that merge request.
Showing with 372 additions and 33 deletions
......@@ -423,7 +423,7 @@ test-dashboard-service:
script:
- "pip install pipenv"
- "pipenv install gunicorn && pipenv install --dev --system --deploy"
- cd ./dbrepo-dashboard-service/ && coverage run --rcfile=.coveragerc -m pytest tests/test_app.py && coverage html && coverage xml && coverage report > ./coverage.txt
- cd ./dbrepo-dashboard-service/ && coverage run --rcfile=.coveragerc -m pytest tests/test_integration_app.py && coverage html && coverage xml && coverage report > ./coverage.txt
- "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
artifacts:
when: always
......@@ -435,6 +435,33 @@ test-dashboard-service:
junit: ./dbrepo-dashboard-service/coverage.xml
coverage: '/TOTAL.*?([0-9]{1,3})%/'
test-dashboard-service-init:
image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
stage: test
only:
- merge_requests
- master
variables:
PIPENV_PIPFILE: "./dbrepo-dashboard-service/init/Pipfile"
needs:
- build-dashboard-service
dependencies:
- build-dashboard-service
script:
- "pip install pipenv"
- "pipenv install gunicorn && pipenv install --dev --system --deploy"
- cd ./dbrepo-dashboard-service/init/ && coverage run --rcfile=.coveragerc -m pytest tests/test_app.py && coverage html && coverage xml && coverage report > ./coverage.txt
- "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
artifacts:
when: always
paths:
- ./dbrepo-dashboard-service/init/coverage.xml
- ./dbrepo-dashboard-service/init/coverage.txt
expire_in: 1 days
reports:
junit: ./dbrepo-dashboard-service/init/coverage.xml
coverage: '/TOTAL.*?([0-9]{1,3})%/'
test-search-service-init:
image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
stage: test
......
[report]
omit =
# omit tests
./tests/*
[html]
directory = htmlcov
\ No newline at end of file
......@@ -21,6 +21,7 @@ grafana-client = "*"
[dev-packages]
coverage = "*"
pytest = "*"
testcontainers = "*"
requests-mock = "*"
[requires]
......
{
"_meta": {
"hash": {
"sha256": "5831946cd8df6a4f94bb53b4b390eebcc0dba5722f65688d41d438b7e19ea5b9"
"sha256": "911a375e6d52635530a1278e4186660b395093e16a092a223fd7050c6241bedc"
},
"pipfile-spec": 6,
"requires": {
......@@ -221,7 +221,7 @@
"sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87",
"sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"
],
"markers": "python_version >= '3.8'",
"markers": "platform_python_implementation != 'PyPy'",
"version": "==1.17.1"
},
"charset-normalizer": {
......@@ -375,7 +375,8 @@
"hashes": [
"sha256:5f541bb5f944276d381e9c4509ffac1036bc7488848d8aaee1aef9184766832b"
],
"path": "./lib/dbrepo-1.8.0.tar.gz"
"path": "./lib/dbrepo-1.8.0.tar.gz",
"version": "==1.8.0"
},
"flasgger": {
"hashes": [
......@@ -390,7 +391,6 @@
"sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==2.3.3"
},
"flask-cors": {
......@@ -415,7 +415,6 @@
"sha256:8085d6757505b6f3291a2638c84d207e8f0ad0de662d1f46aa2f77e658a0c976"
],
"index": "pypi",
"markers": "python_version >= '3.9' and python_version < '4'",
"version": "==4.7.1"
},
"frozenlist": {
......@@ -522,7 +521,6 @@
"sha256:8cb61bb2a87ec07bca10974df276b9a1a95bfdb63f3a696f065692ffc9b8c389"
],
"index": "pypi",
"markers": "python_version >= '3.7'",
"version": "==4.3.2"
},
"gunicorn": {
......@@ -531,7 +529,6 @@
"sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec"
],
"index": "pypi",
"markers": "python_version >= '3.7'",
"version": "==23.0.0"
},
"h11": {
......@@ -552,11 +549,11 @@
},
"iniconfig": {
"hashes": [
"sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3",
"sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"
"sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7",
"sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"
],
"markers": "python_version >= '3.7'",
"version": "==2.0.0"
"markers": "python_version >= '3.8'",
"version": "==2.1.0"
},
"itsdangerous": {
"hashes": [
......@@ -697,7 +694,6 @@
"sha256:61c9170f92e736b530655e75374681d4fcca9cfa8763ab42be57353b2b203494"
],
"index": "pypi",
"markers": "python_version >= '3.6'",
"version": "==1.3.1"
},
"markupsafe": {
......@@ -939,7 +935,7 @@
"sha256:f486038e44caa08dbd97275a9a35a283a8f1d2f0ee60ac260a1790e76660833c",
"sha256:f7de08cbe5551911886d1ab60de58448c6df0f67d9feb7d1fb21e9875ef95e91"
],
"markers": "python_version >= '3.10'",
"markers": "python_version == '3.11'",
"version": "==2.2.4"
},
"packaging": {
......@@ -1148,7 +1144,6 @@
"sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==2.10.6"
},
"pydantic-core": {
......@@ -1271,7 +1266,6 @@
"sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==8.3.5"
},
"python-dateutil": {
......@@ -1279,7 +1273,7 @@
"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==2.9.0.post0"
},
"python-dotenv": {
......@@ -1288,7 +1282,6 @@
"sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==1.0.1"
},
"pytz": {
......@@ -1455,7 +1448,7 @@
"sha256:fbc4e6452cc48c3e1398fe930349e2ec9ad76a2c00e729f3e797700c2f0646e6",
"sha256:fc73fc2889a01a43737c7a7c7fb9ee13aa56065b22abbed0e787cc58a3747808"
],
"markers": "python_version >= '3.7'",
"markers": "python_version < '3.12' and (platform_python_implementation != 'CPython' or python_full_version > '3.7.10') and (platform_system == 'Darwin' or platform_system == 'Windows' or platform_system == 'Linux') and (platform_machine == 'x86_64' or platform_machine == 's390x' or platform_machine == 'aarch64' or platform_machine == 'armv7l' or platform_machine == 'ppc64le' or platform_machine == 'ppc64' or platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'arm64' or platform_machine == 'ARM64' or platform_machine == 'x86' or platform_machine == 'i686') and (platform_python_implementation == 'CPython' or platform_python_implementation == 'PyPy')",
"version": "==1.4.2"
},
"referencing": {
......@@ -1588,7 +1581,7 @@
"sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
"sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.17.0"
},
"tinydb": {
......@@ -2014,9 +2007,16 @@
"sha256:f81fe93dc1b8e5673f33443c0786c14b77e36f1025973b85e07c70353e46882b"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
"version": "==7.7.0"
},
"docker": {
"hashes": [
"sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c",
"sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0"
],
"markers": "python_version >= '3.8'",
"version": "==7.1.0"
},
"idna": {
"hashes": [
"sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9",
......@@ -2027,11 +2027,11 @@
},
"iniconfig": {
"hashes": [
"sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3",
"sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"
"sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7",
"sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"
],
"markers": "python_version >= '3.7'",
"version": "==2.0.0"
"markers": "python_version >= '3.8'",
"version": "==2.1.0"
},
"packaging": {
"hashes": [
......@@ -2055,9 +2055,16 @@
"sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==8.3.5"
},
"python-dotenv": {
"hashes": [
"sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca",
"sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"
],
"index": "pypi",
"version": "==1.0.1"
},
"requests": {
"hashes": [
"sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760",
......@@ -2072,9 +2079,24 @@
"sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"
],
"index": "pypi",
"markers": "python_version >= '3.5'",
"version": "==1.12.1"
},
"testcontainers": {
"hashes": [
"sha256:348c72d369d0bd52b57ab4f07a965ae9562837098c28f0522b969b064b779f10",
"sha256:36bd2b58d91f2fc7ac4f4a73c6ec00e5e60c259c10f208dbfe3161029889be92"
],
"index": "pypi",
"version": "==4.9.2"
},
"typing-extensions": {
"hashes": [
"sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d",
"sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"
],
"markers": "python_version >= '3.8'",
"version": "==4.12.2"
},
"urllib3": {
"hashes": [
"sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df",
......@@ -2082,6 +2104,91 @@
],
"markers": "python_version >= '3.9'",
"version": "==2.3.0"
},
"wrapt": {
"hashes": [
"sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f",
"sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c",
"sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a",
"sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b",
"sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555",
"sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c",
"sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b",
"sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6",
"sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8",
"sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662",
"sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061",
"sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998",
"sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb",
"sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62",
"sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984",
"sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392",
"sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2",
"sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306",
"sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7",
"sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3",
"sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9",
"sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6",
"sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192",
"sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317",
"sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f",
"sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda",
"sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563",
"sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a",
"sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f",
"sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d",
"sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9",
"sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8",
"sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82",
"sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9",
"sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845",
"sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82",
"sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125",
"sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504",
"sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b",
"sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7",
"sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc",
"sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6",
"sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40",
"sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a",
"sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3",
"sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a",
"sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72",
"sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681",
"sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438",
"sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae",
"sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2",
"sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb",
"sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5",
"sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a",
"sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3",
"sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8",
"sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2",
"sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22",
"sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72",
"sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061",
"sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f",
"sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9",
"sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04",
"sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98",
"sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9",
"sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f",
"sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b",
"sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925",
"sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6",
"sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0",
"sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9",
"sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c",
"sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991",
"sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6",
"sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000",
"sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb",
"sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119",
"sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b",
"sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58"
],
"markers": "python_version >= '3.8'",
"version": "==1.17.2"
}
}
}
import logging
import os
from clients.grafana_client import GrafanaClient
from dbrepo.api.dto import Database
from clients.grafana_client import GrafanaClient
from panel import get_panels
base_url = os.getenv('BASE_URL', 'http://localhost')
......@@ -36,7 +36,7 @@ def find(uid: str):
return grafana.dashboard.get_dashboard(uid)
def create(database_name: str, owner_username: str, uid: str = '') -> dict:
def create(database_name: str, uid: str = '') -> dict:
grafana = GrafanaClient().connect()
dashboard = dict(uid=uid,
title=f'{database_name} Overview',
......@@ -65,7 +65,7 @@ def update(database: Database) -> None:
find(database.dashboard_uid)
except Exception:
logging.warning(f'Failed to find dashboard with uid: {database.dashboard_uid}')
create(database.name, database.owner.username, database.dashboard_uid)
create(database.name, database.dashboard_uid)
dashboard = find(database.dashboard_uid)['dashboard']
# update metadata
if not database.is_dashboard_enabled and 'managed' in dashboard['tags']:
......
......@@ -40,5 +40,6 @@ def cleanup(request, session):
"""
logging.info("[fixture] clean dashboards")
grafana = GrafanaClient().connect()
dashboards = grafana.folder.get_folder('')
print()
for dashboard in grafana.search.search_dashboards():
grafana.dashboard.delete_dashboard(dashboard['uid'])
logging.debug(f"[fixture] deleted dashboard {dashboard['uid']}")
import unittest
import requests_mock
from dbrepo.api.dto import Database, Table, Constraints, Column, ColumnType, ConceptBrief, UnitBrief, \
UserBrief, ContainerBrief, ImageBrief, DatabaseBrief
from dbrepo.api.exceptions import NotExistsError
from app import fetch_databases
req = Database(id="209acf92-5c9b-4633-ad99-113c86f6e948",
name="Test",
internal_name="test_tuw1",
owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"),
contact=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"),
exchange_name="dbrepo",
is_public=True,
is_schema_public=True,
is_dashboard_enabled=True,
container=ContainerBrief(id="7efe8b27-6cdc-4387-80e3-92ee28f4a7c5",
name="MariaDB",
internal_name="mariadb",
image=ImageBrief(id="f97791b4-baf4-4b18-8f7d-3084818e6549",
name="mariadb",
version="11.1.3",
default=True)),
tables=[Table(id="f94a6164-cad4-4873-a9fd-3fe5313b2e95",
database_id="209acf92-5c9b-4633-ad99-113c86f6e948",
name="Data",
internal_name="data",
owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"),
constraints=Constraints(uniques=[], foreign_keys=[], checks=[], primary_key=[]),
is_versioned=False,
queue_name="dbrepo",
routing_key="dbrepo.1.1",
is_public=True,
is_schema_public=True,
columns=[Column(id="7bef7e68-88f1-438e-9b94-0a77afd21471",
database_id="209acf92-5c9b-4633-ad99-113c86f6e948",
table_id="f94a6164-cad4-4873-a9fd-3fe5313b2e95",
name="ID",
ord=0,
internal_name="id",
type=ColumnType.BIGINT,
is_null_allowed=False,
size=20,
d=0,
concept=ConceptBrief(id="fb32ecf6-1f68-49b4-85ee-04e76263cbef",
uri="http://www.wikidata.org/entity/Q2221906"),
unit=UnitBrief(id="a67d735e-32ef-4917-b412-fe099c6757a1",
uri="http://www.ontology-of-units-of-measure.org/resource/om-2/degreeCelsius"),
val_min=0,
val_max=10)]
)])
class AppUnitTest(unittest.TestCase):
def test_fetch_databases_succeeds(self):
with requests_mock.Mocker() as mock:
# mock
mock.get('/api/database',
json=[DatabaseBrief(id='209acf92-5c9b-4633-ad99-113c86f6e948',
name="Test",
internal_name="test_tuw1",
owner_id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502",
is_public=True,
is_schema_public=True,
contact=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502",
username="foo")).model_dump()])
mock.get(f'/api/database/{req.id}', json=req.model_dump())
# test
response = fetch_databases()
self.assertEqual(1, len(response))
def test_fetch_databases_empty_succeeds(self):
with requests_mock.Mocker() as mock:
# mock
mock.get('/api/database', json=[])
# test
response = fetch_databases()
self.assertEqual(0, len(response))
def test_fetch_databases_not_found_fails(self):
with requests_mock.Mocker() as mock:
# mock
mock.get('/api/database',
json=[DatabaseBrief(id='209acf92-5c9b-4633-ad99-113c86f6e948',
name="Test",
internal_name="test_tuw1",
owner_id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502",
is_public=True,
is_schema_public=True,
contact=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502",
username="foo")).model_dump()])
mock.get(f'/api/database/{req.id}', status_code=404)
# test
try:
fetch_databases()
except NotExistsError:
pass
\ No newline at end of file
import unittest
from grafana_client.client import GrafanaClientError
import dashboard
from clients.grafana_client import GrafanaClient
class DashboardIntegrationTest(unittest.TestCase):
DASHBOARD_UID = 'covdb1'
def test_find_succeeds(self):
# mock
GrafanaClient().connect().dashboard.update_dashboard(dict(folderUid='',
overwrite=False,
dashboard=dict(uid=self.DASHBOARD_UID,
title=f'Mock',
tags=['managed'],
timezone='browser',
refresh='30m',
preload=True,
panels=[])))
# test
response = dashboard.find(self.DASHBOARD_UID)
self.assertEqual(self.DASHBOARD_UID, response['dashboard']['uid'])
def test_find_not_found_fails(self):
# test
try:
dashboard.find('idonotexist')
except GrafanaClientError:
pass
def test_create_succeeds(self):
# test
dashboard.create('some_database', 'foobar')
def test_create_with_uid_succeeds(self):
# test
response = dashboard.create('some_database', self.DASHBOARD_UID)
self.assertEqual(self.DASHBOARD_UID, response['uid'])
def test_create_uid_exists_fails(self):
# mock
GrafanaClient().connect().dashboard.update_dashboard(dict(folderUid='',
overwrite=False,
dashboard=dict(uid=self.DASHBOARD_UID,
title=f'Mock',
tags=['managed'],
timezone='browser',
refresh='30m',
preload=True,
panels=[])))
# test
try:
dashboard.create('some_database', self.DASHBOARD_UID)
except GrafanaClientError:
pass
def test_delete_succeeds(self):
# mock
GrafanaClient().connect().dashboard.update_dashboard(dict(folderUid='',
overwrite=False,
dashboard=dict(uid=self.DASHBOARD_UID,
title=f'Mock',
tags=['managed'],
timezone='browser',
refresh='30m',
preload=True,
panels=[])))
# test
dashboard.delete(self.DASHBOARD_UID)
def test_delete_not_exists_fails(self):
# test
try:
dashboard.delete('idonotexist')
except GrafanaClientError:
pass
def test_update_succeeds(self):
# mock
GrafanaClient().connect().dashboard.update_dashboard(dict(folderUid='',
overwrite=False,
dashboard=dict(uid=self.DASHBOARD_UID,
title=f'Mock',
tags=['managed'],
timezone='browser',
refresh='30m',
preload=True,
panels=[])))
# test
dashboard.delete(self.DASHBOARD_UID)
......@@ -53,7 +53,7 @@ req = Database(id="209acf92-5c9b-4633-ad99-113c86f6e948",
)])
class JwtTest(unittest.TestCase):
class AppIntegrationTest(unittest.TestCase):
def token(self, roles: [str], iat: int = int(time.time())):
claims = {
......
......@@ -16,6 +16,7 @@ req = Database(id="209acf92-5c9b-4633-ad99-113c86f6e948",
exchange_name="dbrepo",
is_public=True,
is_schema_public=True,
is_dashboard_enabled=True,
container=ContainerBrief(id="7efe8b27-6cdc-4387-80e3-92ee28f4a7c5",
name="MariaDB",
internal_name="mariadb",
......
......@@ -23,6 +23,7 @@ class QueryUnitTest(unittest.TestCase):
internal_name='test_abcd',
is_public=True,
is_schema_public=True,
is_dashboard_enabled=True,
tables=[Table(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc",
name="Some Table",
description="Test Table",
......
......@@ -22,6 +22,7 @@ class ViewUnitTest(unittest.TestCase):
internal_name='test_abcd',
is_public=True,
is_schema_public=True,
is_dashboard_enabled=True,
tables=[Table(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc",
name="Some Table",
description="Test Table",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment