Enable automatic generation of scenarios.

This commit is contained in:
Dorian 2017-03-01 23:58:05 -05:00
parent ce04805856
commit 189bf0e19d
2 changed files with 125 additions and 181 deletions

View File

@ -10,12 +10,13 @@ import http
import pytest import pytest
import pytest_bdd as bdd import pytest_bdd as bdd
import requests import requests
from pytest import mark
from pytest_bdd import parsers from pytest_bdd import parsers
from rookeries.users import models from rookeries.users import models
from tests import utils from tests import utils
bdd.scenarios('user_management.feature')
# TODO: Add tests to make sure users can't modify each other's profiles, etc. # TODO: Add tests to make sure users can't modify each other's profiles, etc.
# TODO: Add in a new role that is super-admin, maybe? # TODO: Add in a new role that is super-admin, maybe?
# TODO: Add scenarios regarding subscriber users. # TODO: Add scenarios regarding subscriber users.
@ -66,111 +67,10 @@ SAMPLE_USERS_REQUEST = {
} }
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Admin user can create a new admin user')
def test_admin_user_creation_by_admin():
pass
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Admin user can create a new editor user')
def test_editor_user_creation_by_admin():
pass
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Editor user can not create a new admin user')
def test_admin_user_creation_by_editor():
pass
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Editor user can not create a new editor user')
def test_editor_user_creation_by_editor():
pass
@bdd.scenario('user_management.feature', 'Admin user can get an existing admin user')
def test_admin_user_fetch_by_admin():
pass
@bdd.scenario('user_management.feature', 'Admin user can get an existing editor user')
def test_editor_user_fetch_by_admin():
pass
@bdd.scenario('user_management.feature', 'Admin user can not get an non-existent user')
def test_non_existent_user_fetch_by_admin():
pass
@bdd.scenario('user_management.feature', 'Subscriber user can not get an existing admin user')
def test_admin_user_fetch_by_anyone():
pass
@bdd.scenario('user_management.feature', 'Subscriber user can not get an existing editor user')
def test_editor_user_fetch_by_anyone():
pass
@bdd.scenario('user_management.feature', 'Editor user can not get an existing admin user')
def test_admin_user_fetch_by_editor():
pass
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Editor user can not get an existing editor user that is not me')
def test_editor_user_fetch_by_editor():
pass
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Admin user can modify an admin user')
def test_admin_user_modification_by_admin():
pass
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Admin user can modify an editor user')
def test_editor_user_modification_by_admin():
pass
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Editor user can not modify an editor user that is not self')
def test_editor_user_modification_by_editor():
pass
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Editor user can modify their own user')
def test_self_user_modification_by_editor():
pass
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Admin user can delete an admin user')
def test_admin_user_deletion_by_admin():
pass
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Admin user can delete an editor user')
def test_editor_user_deletion_by_admin():
pass
@mark.skip(reason="Test scenarios need work")
@bdd.scenario('user_management.feature', 'Editor user can not delete an editor user')
def test_editor_user_deletion_by_editor():
pass
# Step definitions here. # Step definitions here.
@bdd.given(parsers.parse('I am an {user_role} user')) @bdd.given(parsers.parse('I am an {user_role} user'))
@bdd.given(parsers.parse('I am a {user_role} user'))
def jwt_token(user_role, api_base_uri, admin_user, editor_user, subscriber_user, non_existent_user): def jwt_token(user_role, api_base_uri, admin_user, editor_user, subscriber_user, non_existent_user):
# TODO: Improve selection of fixtures. # TODO: Improve selection of fixtures.
@ -193,6 +93,7 @@ def jwt_token(user_role, api_base_uri, admin_user, editor_user, subscriber_user,
@bdd.given(parsers.parse('I create an {user_role} user')) @bdd.given(parsers.parse('I create an {user_role} user'))
@bdd.given(parsers.parse('I create a {user_role} user'))
def create_user_response(user_role, jwt_token, api_base_uri): def create_user_response(user_role, jwt_token, api_base_uri):
user_creation_request = SAMPLE_USERS_REQUEST[user_role] user_creation_request = SAMPLE_USERS_REQUEST[user_role]
response = requests.post( response = requests.post(
@ -207,6 +108,7 @@ def create_user_response(user_role, jwt_token, api_base_uri):
@bdd.given(parsers.parse('I get an {user_role} user')) @bdd.given(parsers.parse('I get an {user_role} user'))
@bdd.given(parsers.parse('I get a {user_role} user'))
def get_user_response(user_role, jwt_token, api_base_uri, admin_user, editor_user, subscriber_user, non_existent_user): def get_user_response(user_role, jwt_token, api_base_uri, admin_user, editor_user, subscriber_user, non_existent_user):
user_info = non_existent_user user_info = non_existent_user
@ -235,6 +137,7 @@ def assert_create_user_response(user_role, create_user_response, admin_user, edi
@bdd.then(parsers.parse('I can get an {user_role} user profile')) @bdd.then(parsers.parse('I can get an {user_role} user profile'))
@bdd.then(parsers.parse('I can get a {user_role} user profile'))
def assert_user_profile(user_role, get_user_response, admin_user, editor_user, subscriber_user, non_existent_user): def assert_user_profile(user_role, get_user_response, admin_user, editor_user, subscriber_user, non_existent_user):
# TODO: Add in actual user profiles... # TODO: Add in actual user profiles...

View File

@ -2,27 +2,38 @@ Feature: User Management
The user endpoints allows an app admin user to create, modify and delete users. User can modify their profiles. The user endpoints allows an app admin user to create, modify and delete users. User can modify their profiles.
Scenario: Admin user can create a new admin user #Scenario: Admin user can create a new admin user
Given I am an admin user # Given I am an admin user
And I create an admin user # And I create an admin user
Then I get a new admin user # Then I get a new admin user
And I can get an admin user profile # And I can get an admin user profile
#
Scenario: Admin user can create a new editor user #Scenario: Admin user can create a new editor user
Given I am an admin user # Given I am an admin user
And I create an editor user # And I create an editor user
Then I get a new editor user # Then I get a new editor user
And I can get an editor user profile # And I can get an editor user profile
#
Scenario: Editor user can not create a new admin user #Scenario: Admin user can create a new subscriber user
Given I am an editor user # Given I am an admin user
And I create an admin user # And I create a subscriber user
Then I can get an unauthorized response # Then I get a new subscriber user
# And I can get a subscriber user profile
Scenario: Editor user can not create a new editor user #
Given I am an editor user #Scenario: Editor user can not create a new admin user
And I create an editor user # Given I am an editor user
Then I get an unauthorized response # And I create an admin user
# Then I can get an unauthorized response
#
#Scenario: Editor user can not create a new subscriber user
# Given I am an editor user
# And I create a subscriber user
# Then I get an unauthorized response
#
#Scenario: Editor user can not create a new editor user
# Given I am an editor user
# And I create an editor user
# Then I get an unauthorized response
Scenario: Admin user can get an existing admin user Scenario: Admin user can get an existing admin user
Given I am an admin user Given I am an admin user
@ -43,68 +54,98 @@ Scenario: Editor user can not get an existing admin user
Given I am an editor user Given I am an editor user
And I get an admin user And I get an admin user
Then I get an unauthorized response Then I get an unauthorized response
#
Scenario: Editor user can not get an existing editor user that is not me #Scenario: Editor user can not get an existing editor user that is not me
Given I am an editor user # Given I am an editor user
And I get an editor user # And I get an editor user
Then I get an unauthorized response # Then I get an unauthorized response
#
Scenario: Editor user can get my own profile #Scenario: Editor user can get my own profile
Given I am an editor user # Given I am an editor user
And I get myself # And I get myself
Then I can get my own user profile # Then I can get my own user profile
Scenario: Subscriber user can not get an existing admin user Scenario: Subscriber user can not get an existing admin user
Given I am an subscriber user Given I am a subscriber user
And I get an admin user And I get an admin user
Then I get an unauthorized response Then I get an unauthorized response
Scenario: Subscriber user can not get an existing editor user Scenario: Subscriber user can not get an existing editor user
Given I am an subscriber user Given I am a subscriber user
And I get an editor user And I get an editor user
Then I get an unauthorized response Then I get an unauthorized response
#
Scenario: Subscriber user can not get an subscriber user that is not me #Scenario: Subscriber user can not get an subscriber user that is not me
Given I am an subscriber user # Given I am a subscriber user
And I get an subscriber user # And I get an subscriber user
Then I get an unauthorized response # Then I get an unauthorized response
#
Scenario: Subscriber user can get my own profile #Scenario: Subscriber user can get my own profile
Given I am an subscriber user # Given I am a subscriber user
And I get myself # And I get myself
Then I can get my own user profile # Then I can get my own user profile
#
Scenario: Admin user can modify an admin user #Scenario: Admin user can modify an admin user
Given I am an admin user # Given I am an admin user
And I modify the admin user # And I modify an admin user
Then my updates to the admin user are preserved # Then my updates to the admin user are preserved
#
Scenario: Admin user can modify an editor user #Scenario: Admin user can modify an editor user
Given I am an admin user # Given I am an admin user
And I modify the editor user # And I modify an editor user
Then my updates to the editor user are preserved # Then my updates to the editor user are preserved
#
Scenario: Editor user can not modify an editor user that is not self #Scenario: Admin user can modify an subscriber user
Given I am an editor user # Given I am an admin user
And I modify the editor user # And I modify a subscriber user
Then I get an unauthorized response # Then my updates to the subscriber user are preserved
#
Scenario: Editor user can modify their own user #Scenario: Editor user can not modify an admin user
Given I am an editor user # Given I am an editor user
And I modify my user # And I modify an admin user
Then my updates to the editor user are preserved # Then I get an unauthorized response
#
Scenario: Admin user can delete an admin user #Scenario: Editor user can not modify an editor user that is not self
Given I am an admin user # Given I am an editor user
And I delete the admin user # And I modify an editor user
Then I get a messages that the admin user is deleted # Then I get an unauthorized response
#
Scenario: Admin user can delete an editor user #Scenario: Editor user can modify their own user
Given I am an admin user # Given I am an editor user
And I delete the editor user # And I modify my user
Then I get a messages that the editor user is deleted # Then my updates to the editor user are preserved
#
Scenario: Editor user can not delete an editor user #Scenario: Editor user can not modify a subscriber user
Given I am an editor user # Given I am an editor user
And I delete the editor user # And I modify a subscriber user
Then I get an unauthorized response # Then I get an unauthorized response
#
#Scenario: Admin user can delete an admin user
# Given I am an admin user
# And I delete an admin user
# Then I get a messages that the admin user is deleted
#
#Scenario: Admin user can delete an editor user
# Given I am an admin user
# And I delete the editor user
# Then I get a messages that the editor user is deleted
#
#Scenario: Admin user can delete an subscriber user
# Given I am an admin user
# And I delete a subscriber user
# Then I get a messages that the subscriber user is deleted
#
#Scenario: Editor user can not delete an admin user
# Given I am an editor user
# And I delete an admin user
# Then I get an unauthorized response
#
#Scenario: Editor user can not delete an editor user
# Given I am an editor user
# And I delete an editor user
# Then I get an unauthorized response
#
#Scenario: Editor user can not delete an editor user
# Given I am an editor user
# And I delete a subscriber user
# Then I get an unauthorized response