provide dev access to app

This commit is contained in:
dandds 2018-06-11 16:24:08 -04:00
parent 25db6fabbe
commit d573c5459b
4 changed files with 47 additions and 16 deletions

View File

@ -8,29 +8,39 @@ from atst.handlers.login import Login
from atst.handlers.workspace import Workspace from atst.handlers.workspace import Workspace
from atst.handlers.request import Request from atst.handlers.request import Request
from atst.handlers.request_new import RequestNew from atst.handlers.request_new import RequestNew
from atst.handlers.dev import Dev
from atst.home import home from atst.home import home
from atst.api_client import ApiClient from atst.api_client import ApiClient
routes = [
url(r"/", Login, {"page": "login"}, name="main"),
url(r"/login", Login, {"page": "login"}, name="login"),
url(r"/home", MainHandler, {"page": "home"}, name="home"),
url(r"/workspaces", Workspace, {"page": "workspaces"}, name="workspaces"),
url(r"/requests", Request, {"page": "requests"}, name="requests"),
url(r"/requests/new", RequestNew, {"page": "requests_new"}, name="request_new"),
url(
r"/requests/new/([0-9])",
RequestNew,
{"page": "requests_new"},
name="request_form",
),
url(r"/users", MainHandler, {"page": "users"}, name="users"),
url(r"/reports", MainHandler, {"page": "reports"}, name="reports"),
url(r"/calculator", MainHandler, {"page": "calculator"}, name="calculator"),
]
env = os.getenv("TORNADO_ENV", "development")
if not env == "production":
routes += [url(r"/login-dev", Dev, {"action": "login"}, name="dev-login")]
def make_app(config): def make_app(config):
authz_client = ApiClient(config['default']['AUTHZ_BASE_URL']) authz_client = ApiClient(config['default']['AUTHZ_BASE_URL'])
app = tornado.web.Application([ app = tornado.web.Application(
url( r"/", Login, {'page': 'login'}, name='main' ), routes,
url( r"/login", Login, {'page': 'login'}, name='login' ),
url( r"/home", MainHandler, {'page': 'home'}, name='home' ),
url( r"/workspaces",
Workspace,
{'page': 'workspaces', 'authz_client': authz_client},
name='workspaces'),
url( r"/requests", Request, {'page': 'requests'}, name='requests' ),
url( r"/requests/new", RequestNew, {'page': 'requests_new'}, name='request_new' ),
url( r"/requests/new/([0-9])", RequestNew, {'page': 'requests_new'}, name='request_form' ),
url( r"/users", MainHandler, {'page': 'users'}, name='users' ),
url( r"/reports", MainHandler, {'page': 'reports'}, name='reports' ),
url( r"/calculator", MainHandler, {'page': 'calculator'}, name='calculator' ),
],
template_path = home.child('templates'), template_path = home.child('templates'),
static_path = home.child('static'), static_path = home.child('static'),
debug=config['default'].getboolean('DEBUG') debug=config['default'].getboolean('DEBUG')

View File

@ -56,5 +56,6 @@ class BaseHandler(tornado.web.RequestHandler):
else: else:
False False
# this is a temporary implementation until we have real sessions
def _start_session(self): def _start_session(self):
self.set_secure_cookie('atst', 'valid-user-session') self.set_secure_cookie('atst', 'valid-user-session')

13
atst/handlers/dev.py Normal file
View File

@ -0,0 +1,13 @@
from atst.handler import BaseHandler, authenticated
class Dev(BaseHandler):
def initialize(self, action):
self.action = action
def get(self):
if self.action == 'login':
self._login()
def _login(self):
self._start_session()
self.redirect("/home")

View File

@ -11,7 +11,6 @@ def test_redirects_when_not_logged_in(http_client, base_url):
assert response.error assert response.error
assert response.headers["Location"] == "/login" assert response.headers["Location"] == "/login"
@pytest.mark.gen_test @pytest.mark.gen_test
def test_login_with_valid_bearer_token(app, monkeypatch, http_client, base_url): def test_login_with_valid_bearer_token(app, monkeypatch, http_client, base_url):
monkeypatch.setattr("atst.handler.validate_login_token", lambda t: True) monkeypatch.setattr("atst.handler.validate_login_token", lambda t: True)
@ -22,6 +21,14 @@ def test_login_with_valid_bearer_token(app, monkeypatch, http_client, base_url):
assert response.code == 200 assert response.code == 200
assert not response.error assert not response.error
@pytest.mark.gen_test
def test_login_with_via_dev_endpoint(app, monkeypatch, http_client, base_url):
response = yield http_client.fetch(
base_url + "/login-dev", raise_error=False, follow_redirects=False
)
assert response.headers['Set-Cookie'].startswith('atst')
assert response.code == 302
assert response.headers["Location"] == "/home"
@pytest.mark.gen_test @pytest.mark.gen_test
@pytest.mark.skip(reason="need to work out auth error user paths") @pytest.mark.skip(reason="need to work out auth error user paths")