2016-02-02 14:24:08 +00:00
|
|
|
|
import uuid
|
2016-01-16 10:59:16 +00:00
|
|
|
|
|
2016-06-27 12:02:16 +01:00
|
|
|
|
from flask import url_for
|
2016-01-19 09:55:13 +00:00
|
|
|
|
|
2016-06-27 12:02:16 +01:00
|
|
|
|
from tests import validate_route_permission
|
2016-01-19 09:55:13 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-01-21 12:28:05 +00:00
|
|
|
|
def test_should_show_empty_api_keys_page(app_,
|
2016-07-20 11:46:29 +01:00
|
|
|
|
api_user_pending,
|
2016-04-04 16:53:52 +01:00
|
|
|
|
mock_login,
|
2016-01-27 12:22:32 +00:00
|
|
|
|
mock_get_no_api_keys,
|
2016-04-04 16:53:52 +01:00
|
|
|
|
mock_get_service,
|
2016-02-29 14:57:07 +00:00
|
|
|
|
mock_has_permissions):
|
2016-01-21 12:28:05 +00:00
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
with app_.test_client() as client:
|
2016-07-20 11:46:29 +01:00
|
|
|
|
client.login(api_user_pending)
|
2016-02-02 14:24:08 +00:00
|
|
|
|
service_id = str(uuid.uuid4())
|
|
|
|
|
|
response = client.get(url_for('main.api_keys', service_id=service_id))
|
2016-01-21 12:28:05 +00:00
|
|
|
|
|
|
|
|
|
|
assert response.status_code == 200
|
|
|
|
|
|
assert 'You haven’t created any API keys yet' in response.get_data(as_text=True)
|
2016-04-29 14:17:34 +01:00
|
|
|
|
assert 'Create an API key' in response.get_data(as_text=True)
|
2016-02-02 14:24:08 +00:00
|
|
|
|
mock_get_no_api_keys.assert_called_once_with(service_id=service_id)
|
2016-01-21 12:28:05 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-01-19 09:55:13 +00:00
|
|
|
|
def test_should_show_api_keys_page(app_,
|
2016-01-27 12:22:32 +00:00
|
|
|
|
api_user_active,
|
2016-04-04 16:53:52 +01:00
|
|
|
|
mock_login,
|
2016-01-27 12:22:32 +00:00
|
|
|
|
mock_get_api_keys,
|
2016-04-04 16:53:52 +01:00
|
|
|
|
mock_get_service,
|
2016-04-12 14:19:51 +01:00
|
|
|
|
mock_has_permissions,
|
|
|
|
|
|
fake_uuid):
|
2016-01-19 09:49:01 +00:00
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
with app_.test_client() as client:
|
2016-01-27 12:22:32 +00:00
|
|
|
|
client.login(api_user_active)
|
2016-04-12 14:19:51 +01:00
|
|
|
|
response = client.get(url_for('main.api_keys', service_id=fake_uuid))
|
2016-01-16 10:59:16 +00:00
|
|
|
|
|
|
|
|
|
|
assert response.status_code == 200
|
2016-05-03 10:55:37 +01:00
|
|
|
|
resp_data = response.get_data(as_text=True)
|
|
|
|
|
|
assert 'some key name' in resp_data
|
|
|
|
|
|
assert 'another key name' in resp_data
|
2016-08-26 08:06:28 +01:00
|
|
|
|
assert 'Revoked 1 January at 1:00am' in resp_data
|
2016-04-12 14:19:51 +01:00
|
|
|
|
mock_get_api_keys.assert_called_once_with(service_id=fake_uuid)
|
2016-01-19 09:55:13 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-06-27 12:02:16 +01:00
|
|
|
|
def test_should_show_create_api_key_page(app_,
|
|
|
|
|
|
api_user_active,
|
|
|
|
|
|
mock_login,
|
|
|
|
|
|
mock_get_api_keys,
|
|
|
|
|
|
mock_get_service,
|
|
|
|
|
|
mock_has_permissions,
|
|
|
|
|
|
fake_uuid):
|
2016-01-19 09:55:13 +00:00
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
with app_.test_client() as client:
|
2016-01-27 12:22:32 +00:00
|
|
|
|
client.login(api_user_active)
|
2016-05-03 10:55:37 +01:00
|
|
|
|
service_id = fake_uuid
|
|
|
|
|
|
response = client.get(url_for('main.create_api_key', service_id=fake_uuid))
|
2016-01-19 09:55:13 +00:00
|
|
|
|
|
|
|
|
|
|
assert response.status_code == 200
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-27 12:02:16 +01:00
|
|
|
|
def test_should_create_api_key_with_type_normal(app_,
|
|
|
|
|
|
api_user_active,
|
|
|
|
|
|
mock_login,
|
|
|
|
|
|
mock_get_api_keys,
|
|
|
|
|
|
mock_get_service,
|
|
|
|
|
|
mock_has_permissions,
|
|
|
|
|
|
fake_uuid,
|
|
|
|
|
|
mocker):
|
|
|
|
|
|
post = mocker.patch('app.notify_client.api_key_api_client.ApiKeyApiClient.post', return_value={'data': fake_uuid})
|
|
|
|
|
|
service_id = str(uuid.uuid4())
|
2016-01-19 09:55:13 +00:00
|
|
|
|
|
2016-06-27 12:02:16 +01:00
|
|
|
|
with app_.test_request_context(), app_.test_client() as client:
|
|
|
|
|
|
client.login(api_user_active)
|
2016-06-29 17:10:49 +01:00
|
|
|
|
response = client.post(
|
|
|
|
|
|
url_for('main.create_api_key', service_id=service_id),
|
|
|
|
|
|
data={
|
|
|
|
|
|
'key_name': 'some default key name',
|
|
|
|
|
|
'key_type': 'normal'
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
2016-06-27 12:02:16 +01:00
|
|
|
|
|
|
|
|
|
|
assert response.status_code == 200
|
|
|
|
|
|
assert 'some default key name' in response.get_data(as_text=True)
|
|
|
|
|
|
post.assert_called_once_with(url='/service/{}/api-key'.format(service_id), data={
|
|
|
|
|
|
'name': 'some default key name',
|
|
|
|
|
|
'key_type': 'normal',
|
|
|
|
|
|
'created_by': api_user_active.id
|
|
|
|
|
|
})
|
2016-01-19 09:55:13 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_should_show_confirm_revoke_api_key(app_,
|
2016-01-27 12:22:32 +00:00
|
|
|
|
api_user_active,
|
2016-04-04 16:53:52 +01:00
|
|
|
|
mock_login,
|
2016-01-27 12:22:32 +00:00
|
|
|
|
mock_get_api_keys,
|
2016-04-04 16:53:52 +01:00
|
|
|
|
mock_get_service,
|
2016-04-12 14:19:51 +01:00
|
|
|
|
mock_has_permissions,
|
|
|
|
|
|
fake_uuid):
|
2016-01-19 09:55:13 +00:00
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
with app_.test_client() as client:
|
2016-01-27 12:22:32 +00:00
|
|
|
|
client.login(api_user_active)
|
2016-04-12 14:19:51 +01:00
|
|
|
|
response = client.get(url_for('main.revoke_api_key', service_id=fake_uuid, key_id=fake_uuid))
|
2016-01-19 09:55:13 +00:00
|
|
|
|
|
|
|
|
|
|
assert response.status_code == 200
|
2016-01-21 12:28:05 +00:00
|
|
|
|
assert 'some key name' in response.get_data(as_text=True)
|
2016-04-12 14:19:51 +01:00
|
|
|
|
mock_get_api_keys.assert_called_once_with(service_id=fake_uuid, key_id=fake_uuid)
|
2016-01-19 09:55:13 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_should_redirect_after_revoking_api_key(app_,
|
2016-01-27 12:22:32 +00:00
|
|
|
|
api_user_active,
|
2016-04-04 16:53:52 +01:00
|
|
|
|
mock_login,
|
2016-01-21 12:28:05 +00:00
|
|
|
|
mock_revoke_api_key,
|
2016-01-27 12:22:32 +00:00
|
|
|
|
mock_get_api_keys,
|
2016-04-04 16:53:52 +01:00
|
|
|
|
mock_get_service,
|
2016-04-12 14:19:51 +01:00
|
|
|
|
mock_has_permissions,
|
|
|
|
|
|
fake_uuid):
|
2016-01-19 09:55:13 +00:00
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
with app_.test_client() as client:
|
2016-01-27 12:22:32 +00:00
|
|
|
|
client.login(api_user_active)
|
2016-04-12 14:19:51 +01:00
|
|
|
|
response = client.post(url_for('main.revoke_api_key', service_id=fake_uuid, key_id=fake_uuid))
|
2016-01-19 09:55:13 +00:00
|
|
|
|
|
|
|
|
|
|
assert response.status_code == 302
|
2016-04-12 14:19:51 +01:00
|
|
|
|
assert response.location == url_for('.api_keys', service_id=fake_uuid, _external=True)
|
|
|
|
|
|
mock_revoke_api_key.assert_called_once_with(service_id=fake_uuid, key_id=fake_uuid)
|
|
|
|
|
|
mock_get_api_keys.assert_called_once_with(service_id=fake_uuid, key_id=fake_uuid)
|
2016-03-09 12:10:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-04-04 16:53:52 +01:00
|
|
|
|
def test_route_permissions(mocker,
|
|
|
|
|
|
app_,
|
|
|
|
|
|
api_user_active,
|
|
|
|
|
|
service_one,
|
|
|
|
|
|
mock_get_api_keys):
|
2016-03-09 12:10:50 +00:00
|
|
|
|
routes = [
|
|
|
|
|
|
'main.api_keys',
|
|
|
|
|
|
'main.create_api_key',
|
|
|
|
|
|
'main.revoke_api_key']
|
|
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
for route in routes:
|
|
|
|
|
|
validate_route_permission(
|
|
|
|
|
|
mocker,
|
|
|
|
|
|
app_,
|
|
|
|
|
|
"GET",
|
|
|
|
|
|
200,
|
|
|
|
|
|
url_for(route, service_id=service_one['id'], key_id=123),
|
|
|
|
|
|
['manage_api_keys'],
|
|
|
|
|
|
api_user_active,
|
|
|
|
|
|
service_one)
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-04-04 16:53:52 +01:00
|
|
|
|
def test_route_invalid_permissions(mocker,
|
|
|
|
|
|
app_,
|
|
|
|
|
|
api_user_active,
|
|
|
|
|
|
service_one,
|
|
|
|
|
|
mock_get_api_keys):
|
2016-03-09 12:10:50 +00:00
|
|
|
|
routes = [
|
|
|
|
|
|
'main.api_keys',
|
|
|
|
|
|
'main.create_api_key',
|
|
|
|
|
|
'main.revoke_api_key']
|
|
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
|
for route in routes:
|
|
|
|
|
|
validate_route_permission(
|
|
|
|
|
|
mocker,
|
|
|
|
|
|
app_,
|
|
|
|
|
|
"GET",
|
|
|
|
|
|
403,
|
|
|
|
|
|
url_for(route, service_id=service_one['id'], key_id=123),
|
2016-03-30 09:31:53 +01:00
|
|
|
|
['view_activity'],
|
2016-03-09 12:10:50 +00:00
|
|
|
|
api_user_active,
|
|
|
|
|
|
service_one)
|