diff --git a/app/main/dao/services_dao.py b/app/main/dao/services_dao.py index cf4c096be..89d0616f8 100644 --- a/app/main/dao/services_dao.py +++ b/app/main/dao/services_dao.py @@ -26,8 +26,11 @@ def get_service_by_id(id_): return notifications_api_client.get_service(id_) -def get_services(): - return notifications_api_client.get_services() +def get_services(user_id=None): + if user_id: + return notifications_api_client.get_services({'user_id': str(user_id)}) + else: + return notifications_api_client.get_services() def unrestrict_service(service_id): @@ -55,8 +58,8 @@ def activate_service(service_id): # TODO Fix when functionality is added to the api. -def find_service_by_service_name(service_name): - resp = notifications_api_client.get_services() +def find_service_by_service_name(service_name, user_id=None): + resp = notifications_api_client.get_services(user_id) retval = None for srv_json in resp['data']: if srv_json['name'] == service_name: @@ -69,8 +72,8 @@ def delete_service(id_): return notifications_api_client.delete_service(id_) -def find_all_service_names(): - resp = notifications_api_client.get_services() +def find_all_service_names(user_id=None): + resp = notifications_api_client.get_services(user_id) return [x['name'] for x in resp['data']] diff --git a/app/main/views/add_service.py b/app/main/views/add_service.py index 3d01a005f..602a0afbe 100644 --- a/app/main/views/add_service.py +++ b/app/main/views/add_service.py @@ -1,5 +1,5 @@ -from flask import request, render_template, jsonify, redirect, session, url_for, abort -from flask_login import login_required +from flask import render_template, redirect, session, url_for +from flask_login import login_required, current_user from app.main import main from app.main.dao import services_dao, users_dao from app.main.forms import AddServiceForm @@ -9,7 +9,7 @@ from app.main.forms import AddServiceForm @login_required def add_service(): form = AddServiceForm(services_dao.find_all_service_names) - services = services_dao.get_services() + services = services_dao.get_services(current_user.id) if len(services) > 0: heading = 'Set up notifications for your service' else: diff --git a/app/main/views/choose_service.py b/app/main/views/choose_service.py index fdd4d3d27..2d53a8560 100644 --- a/app/main/views/choose_service.py +++ b/app/main/views/choose_service.py @@ -1,5 +1,5 @@ from flask import (render_template, redirect, url_for) -from flask_login import login_required +from flask_login import login_required, current_user from app.main.dao import services_dao from app.main import main @@ -7,7 +7,7 @@ from app.main import main @main.route("/services") @login_required def choose_service(): - services = services_dao.get_services() + services = services_dao.get_services(current_user.id) # If there is only one service redirect # to the service dashboard. if len(services['data']) == 1: diff --git a/tests/app/main/dao/test_service_dao.py b/tests/app/main/dao/test_service_dao.py index c51a6bb0c..2131eb1d4 100644 --- a/tests/app/main/dao/test_service_dao.py +++ b/tests/app/main/dao/test_service_dao.py @@ -1,5 +1,3 @@ -import pytest -import sqlalchemy from app.main.dao import services_dao @@ -58,8 +56,8 @@ def test_find_by_service_name_returns_right_service(db_, db_session, mock_get_se assert service['name'] == service_name -def test_should_return_list_of_service_names(db_, db_session, mock_get_services): +def test_should_return_list_of_service_names(db_, db_session, mock_api_user, mock_get_services): expected = ['service_one', 'service_two'] - actual = services_dao.find_all_service_names() + actual = services_dao.find_all_service_names(mock_api_user.id) assert mock_get_services.called assert actual == expected diff --git a/tests/conftest.py b/tests/conftest.py index b713cf664..f4c743cac 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,14 +1,13 @@ import os from datetime import date - import pytest from alembic.command import upgrade from alembic.config import Config from flask.ext.migrate import Migrate, MigrateCommand from flask.ext.script import Manager from sqlalchemy.schema import MetaData - from app import create_app, db + from . import ( create_test_user, service_json, TestClient, get_test_user, template_json, api_key_json) @@ -67,14 +66,6 @@ def service_one(request, mock_api_user): return service_json(1, 'service one', [mock_api_user.id]) -# @pytest.fixture(scope='function') -# def active_user(request, db_, db_session): -# usr = get_test_user() -# if usr: -# return usr -# return create_test_user('active') - - @pytest.fixture(scope='function') def mock_send_sms(request, mocker): return mocker.patch("app.notifications_api_client.send_sms") @@ -87,13 +78,13 @@ def mock_send_email(request, mocker): @pytest.fixture(scope='function') def mock_get_service(mocker, mock_api_user): - def _create(service_id): + def _get(service_id): service = service_json( service_id, "Test Service", [mock_api_user.id], limit=1000, active=False, restricted=True) return {'data': service, 'token': 1} - return mocker.patch('app.notifications_api_client.get_service', side_effect=_create) + return mocker.patch('app.notifications_api_client.get_service', side_effect=_get) @pytest.fixture(scope='function') @@ -129,7 +120,21 @@ def mock_update_service(mocker): @pytest.fixture(scope='function') def mock_get_services(mocker, mock_api_user): - def _create(): + def _get(user_id): + service_one = service_json( + 1, "service_one", [mock_api_user.id], 1000, True, False) + service_two = service_json( + 2, "service_two", [mock_api_user.id], 1000, True, False) + return {'data': [service_one, service_two]} + + mock_class = mocker.patch( + 'app.notifications_api_client.get_services', side_effect=_get) + return mock_class + + +@pytest.fixture(scope='function') +def mock_get_services(mocker, mock_api_user): + def _create(user_id): service_one = service_json( 1, "service_one", [mock_api_user.id], 1000, True, False) service_two = service_json( @@ -318,6 +323,7 @@ def mock_user_dao_password_reset(mocker, mock_api_user): def _reset(email): mock_api_user.state = 'request_password_reset' + return mocker.patch('app.main.dao.users_dao.request_password_reset', side_effect=_reset)