From 1292bf9fe69286c1781569f62272d0410d8129b0 Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Tue, 24 May 2016 15:52:44 +0100 Subject: [PATCH] New platform-admin-dashboard page --- app/main/__init__.py | 6 ++-- app/main/views/platform_admin.py | 14 +++++++++ app/templates/admin_template.html | 5 +++ app/templates/views/platform-admin.html | 16 ++++++++++ tests/app/main/views/test_platform_admin.py | 34 +++++++++++++++++++++ 5 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 app/main/views/platform_admin.py create mode 100644 app/templates/views/platform-admin.html create mode 100644 tests/app/main/views/test_platform_admin.py diff --git a/app/main/__init__.py b/app/main/__init__.py index f4b532063..eb14dda69 100644 --- a/app/main/__init__.py +++ b/app/main/__init__.py @@ -12,7 +12,8 @@ from app.main.views import ( send, add_service, code_not_received, - jobs, dashboard, + jobs, + dashboard, templates, service_settings, forgot_password, @@ -26,5 +27,6 @@ from app.main.views import ( all_services, tour, feedback, - providers + providers, + platform_admin ) diff --git a/app/main/views/platform_admin.py b/app/main/views/platform_admin.py new file mode 100644 index 000000000..ef306294b --- /dev/null +++ b/app/main/views/platform_admin.py @@ -0,0 +1,14 @@ +from flask import render_template +from flask_login import login_required + +from app.main import main +from app.utils import user_has_permissions + + +@main.route("/platform-admin") +@login_required +@user_has_permissions(admin_override=True) +def platform_admin(): + return render_template( + 'views/platform-admin.html' + ) diff --git a/app/templates/admin_template.html b/app/templates/admin_template.html index 0c84a250e..8adf74ac0 100644 --- a/app/templates/admin_template.html +++ b/app/templates/admin_template.html @@ -46,6 +46,11 @@
  • Switch service
  • + {% if current_user.has_permissions(admin_override=True) %} +
  • + Platform admin +
  • + {% endif %}
  • Sign out
  • diff --git a/app/templates/views/platform-admin.html b/app/templates/views/platform-admin.html new file mode 100644 index 000000000..fe5bb8ce8 --- /dev/null +++ b/app/templates/views/platform-admin.html @@ -0,0 +1,16 @@ +{% extends "withoutnav_template.html" %} +{% from "components/browse-list.html" import browse_list %} + +{% block page_title %} + Platform admin – GOV.UK Notify +{% endblock %} + +{% block maincolumn_content %} + +

    + Platform admin +

    + + <insert platform admin content here> + +{% endblock %} diff --git a/tests/app/main/views/test_platform_admin.py b/tests/app/main/views/test_platform_admin.py new file mode 100644 index 000000000..37071f7a3 --- /dev/null +++ b/tests/app/main/views/test_platform_admin.py @@ -0,0 +1,34 @@ +from flask import url_for + +from tests.conftest import mock_get_user + + +def test_should_redirect_if_not_logged_in(app_): + with app_.test_request_context(): + with app_.test_client() as client: + response = client.get(url_for('main.platform_admin')) + assert response.status_code == 302 + assert url_for('main.index', _external=True) in response.location + + +def test_should_403_if_not_platform_admin(app_, active_user_with_permissions, mocker): + with app_.test_request_context(): + with app_.test_client() as client: + mock_get_user(mocker, user=active_user_with_permissions) + client.login(active_user_with_permissions) + + response = client.get(url_for('main.platform_admin')) + + assert response.status_code == 403 + + +def test_should_render_platform_admin_page(app_, platform_admin_user, mocker): + with app_.test_request_context(): + with app_.test_client() as client: + mock_get_user(mocker, user=platform_admin_user) + client.login(platform_admin_user) + response = client.get(url_for('main.platform_admin')) + + assert response.status_code == 200 + resp_data = response.get_data(as_text=True) + assert 'Platform admin' in resp_data