Skip to content
This repository has been archived by the owner on Mar 24, 2021. It is now read-only.

Commit

Permalink
Use StagecraftService for users and data-sets
Browse files Browse the repository at this point in the history
- Make use of new functions to start/stop/update the StagecraftService
- Use StagecraftService for serving user data in behave tests
  • Loading branch information
robyoung committed May 18, 2014
1 parent f1089e7 commit e6992f9
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 42 deletions.
14 changes: 3 additions & 11 deletions features/environment.py
Original file line number Diff line number Diff line change
@@ -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__), '..')
Expand Down Expand Up @@ -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()


Expand Down
21 changes: 4 additions & 17 deletions features/steps/api_common.py
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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)
14 changes: 4 additions & 10 deletions features/steps/read_api.py
Original file line number Diff line number Diff line change
@@ -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')
Expand Down Expand Up @@ -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}"')
Expand Down
22 changes: 18 additions & 4 deletions features/support/authentication.py
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit e6992f9

Please sign in to comment.