Skip to content
Snippets Groups Projects
Commit 0ae51770 authored by Roang's avatar Roang
Browse files

Add environ package to integration tests

This makes it easiert to manage environment variables in the tests.
With this we can configure them from tox.
parent 37fedde2
Branches
No related tags found
No related merge requests found
import os
import unittest
from urllib.parse import urljoin
import environ
import requests
_DEFAULT_BASE_URL = 'http://hubapp'
_DEFAULT_ADMIN_USERNAME = 'admin'
_DEFAULT_ADMIN_PASSWORD = 'password'
test_env = environ.FileAwareEnv(
SERVE_API=(bool, False),
SERVE_BACKOFFICE=(bool, False),
SERVE_FRONTEND=(bool, False),
BASE_URL=(str, 'http://hubapp'),
DJANGO_CREATE_ADMIN_USERNAME=(
str,
'admin',
),
DJANGO_CREATE_ADMIN_PASSWORD=(str, 'password'),
API_BASE_URL=(str, '/api'),
BACKOFFICE_BASE_URL=(str, '/backoffice'),
PLAINUI_BASE_URL=(str, ''),
)
class BaseUrlSession(requests.Session):
......@@ -28,7 +39,7 @@ class HubTestCase(unittest.TestCase):
super().__init__(*args, **kwargs)
# get base URL from environment variable
self.base_url = os.getenv('BASE_URL', _DEFAULT_BASE_URL)
self.base_url = test_env('BASE_URL')
# ensure base_url ends with a slash
if not self.base_url.endswith('/'):
......@@ -38,11 +49,11 @@ class HubTestCase(unittest.TestCase):
def setUp(self, *args, **kwargs):
super().setUp(*args, **kwargs)
if self.require_api and os.getenv('SERVE_API') not in ['y', 'Y', 'yes']:
if self.require_api and not test_env('SERVE_API'):
self.skipTest('environment: SERVE_API=no')
if self.require_backoffice and os.getenv('SERVE_BACKOFFICE') not in ['y', 'Y', 'yes']:
if self.require_backoffice and not test_env('SERVE_BACKOFFICE'):
self.skipTest('environment: SERVE_BACKOFFICE=no')
if self.require_frontend and os.getenv('SERVE_FRONTEND') not in ['y', 'Y', 'yes']:
if self.require_frontend and not test_env('SERVE_FRONTEND'):
self.skipTest('environment: SERVE_FRONTEND=no')
def tearDown(self, *args, **kwargs):
......@@ -73,11 +84,7 @@ class HubApiTestCase(HubTestCase):
try:
session = BaseUrlSession(base_url=self.base_url)
login_success = self.api_login(
session,
username=os.getenv('DJANGO_CREATE_ADMIN_USERNAME', _DEFAULT_ADMIN_USERNAME),
password=os.getenv('DJANGO_CREATE_ADMIN_PASSWORD', _DEFAULT_ADMIN_PASSWORD),
)
login_success = self.api_login(session, username=test_env('DJANGO_CREATE_ADMIN_USERNAME'), password=test_env('DJANGO_CREATE_ADMIN_PASSWORD'))
if login_success:
self._admin_session = session
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment