diff --git a/features/environment.py b/features/environment.py index de1c8a92..2467e2dc 100644 --- a/features/environment.py +++ b/features/environment.py @@ -1,10 +1,9 @@ import logging import os import sys -from backdrop.core.log_handler import get_log_file_handler from features.support.splinter_client import SplinterClient -from features.support.stagecraft import StagecraftService +from features.support.stagecraft import stop_stagecraft_service_if_running sys.path.append( os.path.join(os.path.dirname(__file__), '..') @@ -42,24 +41,17 @@ def before_scenario(context, _): def after_scenario(context, scenario): + stop_stagecraft_service_if_running(context) context.client.after_scenario(scenario) for handler in context.after_handlers: try: handler() except Exception as e: log.exception(e) - if server_running(context): - context.mock_stagecraft_server.stop() - context.mock_stagecraft_server = None - - -def server_running(context): - return 'mock_stagecraft_server' in context and \ - context.mock_stagecraft_server and \ - context.mock_stagecraft_server.running def after_feature(context, _): + stop_stagecraft_service_if_running(context) context.client.spin_down() diff --git a/features/steps/api_common.py b/features/steps/api_common.py index d32bc89d..bd32cb69 100644 --- a/features/steps/api_common.py +++ b/features/steps/api_common.py @@ -1,6 +1,4 @@ -from behave import * -from hamcrest import * -from features.support.stagecraft import StagecraftService +from features.support.stagecraft import create_or_update_stagecraft_service TEST_STAGECRAFT_PORT = 3204 @@ -24,25 +22,14 @@ def ensure_data_set_exists(context, data_set_name, settings={}): response.update(settings) - url_response_dict = { + routes = { ('GET', u'data-sets/{}'.format(data_set_name)): response, ('GET', u'data-sets'): [response], ('GET', u'data-sets?data-group={}&data-type={}'.format( response['data_group'], response['data_type'])): [response], } - if 'mock_stagecraft_server' in context and context.mock_stagecraft_server: - context.mock_stagecraft_server.stop() - context.mock_stagecraft_server = StagecraftService( - TEST_STAGECRAFT_PORT, url_response_dict) - context.mock_stagecraft_server.start() + create_or_update_stagecraft_service( + context, TEST_STAGECRAFT_PORT, routes) context.data_set = data_set_name - data_set_data = { - '_id': data_set_name, - 'name': data_set_name, - 'data_group': data_set_name, - 'data_type': data_set_name, - 'bearer_token': "%s-bearer-token" % data_set_name - } - context.client.storage()["data_sets"].save(data_set_data) diff --git a/features/steps/read_api.py b/features/steps/read_api.py index 37169901..eb41a5e7 100644 --- a/features/steps/read_api.py +++ b/features/steps/read_api.py @@ -1,15 +1,13 @@ import os import re -from behave import * +from behave import given, when, then, step_matcher from flask import json -from hamcrest import * -from hamcrest import matches_regexp +from hamcrest import assert_that, is_, matches_regexp, has_length, equal_to, \ + has_item, has_entries, has_entry from dateutil import parser import datetime -import re import pytz from api_common import ensure_data_set_exists -from features.support.stagecraft import StagecraftService FIXTURE_PATH = os.path.join(os.path.dirname(__file__), '..', 'fixtures') @@ -76,11 +74,7 @@ def step(context, data_set_name): @given('Stagecraft is running') def step(context): - if 'mock_stagecraft_server' in context and context.mock_stagecraft_server: - context.mock_stagecraft_server.stop() - context.mock_stagecraft_server = StagecraftService( - TEST_STAGECRAFT_PORT, {}) - context.mock_stagecraft_server.start() + create_or_update_stagecraft_service(context, TEST_STAGECRAFT_PORT, {}) @when('I go to "{query}"') diff --git a/features/support/authentication.py b/features/support/authentication.py index e331bc14..e50509e8 100644 --- a/features/support/authentication.py +++ b/features/support/authentication.py @@ -1,18 +1,32 @@ +from stagecraft import create_or_update_stagecraft_service +TEST_STAGECRAFT_PORT = 3204 + +def _get_user_routes(email, data): + return { + ('GET', u'users/{}'.format(email)): data, + ('GET', u'users'): [data], + } def ensure_user_has_permissions(context, email, data_sets): user_data = { - "_id": email, "email": email, "data_sets": data_sets } - context.client.storage()["users"].save(user_data) + + routes = _get_user_routes(email, user_data) + + create_or_update_stagecraft_service( + context, TEST_STAGECRAFT_PORT, routes) def ensure_user_exists(context, email): user_data = { - "_id": email, "email": email, "data_sets": [], } - context.client.storage()["users"].save(user_data) + + routes = _get_user_routes(email, user_data) + + create_or_update_stagecraft_service( + context, TEST_STAGECRAFT_PORT, routes)