Merge pull request #107 from alphagov/permissions-on-invite

Permissions on invite
This commit is contained in:
minglis
2016-02-29 14:59:59 +00:00
7 changed files with 47 additions and 5 deletions

View File

@@ -264,6 +264,12 @@ class InvitedUser(db.Model):
default=datetime.datetime.now)
status = db.Column(
db.Enum(*INVITED_USER_STATUS_TYPES, name='invited_users_status_types'), nullable=False, default='pending')
permissions = db.Column(db.String, nullable=False)
# would like to have used properties for this but haven't found a way to make them
# play nice with marshmallow yet
def get_permissions(self):
return self.permissions.split(',')
class Permission(db.Model):

View File

@@ -166,6 +166,7 @@ class NotificationStatusSchema(BaseSchema):
class InvitedUserSchema(BaseSchema):
class Meta:
model = models.InvitedUser

View File

@@ -0,0 +1,26 @@
"""empty message
Revision ID: 0029_add_permissions_to_invite
Revises: 0028_add_default_permissions
Create Date: 2016-02-26 16:17:30.612924
"""
# revision identifiers, used by Alembic.
revision = '0029_add_permissions_to_invite'
down_revision = '0028_add_default_permissions'
from alembic import op
import sqlalchemy as sa
def upgrade():
### commands auto generated by Alembic - please adjust! ###
op.add_column('invited_users', sa.Column('permissions', sa.String(), nullable=False))
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
op.drop_column('invited_users', 'permissions')
### end Alembic commands ###

View File

@@ -3,4 +3,4 @@
set -e
source environment.sh
celery -A run_celery.notify_celery worker --loglevel=INFO --logfile=/var/log/notify/application.log --concurrency=4 -Q sms,sms-code,email-code,email,process-job,bulk-sms,bulk-email
celery -A run_celery.notify_celery worker --loglevel=INFO --concurrency=4 -Q sms,sms-code,email-code,email,process-job,bulk-sms,bulk-email

View File

@@ -316,7 +316,8 @@ def sample_invited_user(notify_db,
data = {
'service': service,
'email_address': to_email_address,
'from_user': from_user
'from_user': from_user,
'permissions': 'send_messages,manage_service,manage_api_keys'
}
invited_user = InvitedUser(**data)
save_invited_user(invited_user)

View File

@@ -17,7 +17,8 @@ def test_create_invited_user(notify_db, notify_db_session, sample_service):
data = {
'service': sample_service,
'email_address': email_address,
'from_user': invite_from
'from_user': invite_from,
'permissions': 'send_messages,manage_service'
}
invited_user = InvitedUser(**data)
@@ -26,6 +27,10 @@ def test_create_invited_user(notify_db, notify_db_session, sample_service):
assert InvitedUser.query.count() == 1
assert invited_user.email_address == email_address
assert invited_user.from_user == invite_from
permissions = invited_user.get_permissions()
assert len(permissions) == 2
assert 'send_messages' in permissions
assert 'manage_service' in permissions
def test_get_invited_user(notify_db, notify_db_session, sample_invited_user):

View File

@@ -14,7 +14,8 @@ def test_create_invited_user(notify_api, sample_service):
data = {
'service': str(sample_service.id),
'email_address': email_address,
'from_user': invite_from.id
'from_user': invite_from.id,
'permissions': 'send_messages,manage_service,manage_api_keys'
}
data = json.dumps(data)
@@ -36,6 +37,7 @@ def test_create_invited_user(notify_api, sample_service):
assert json_resp['data']['service'] == str(sample_service.id)
assert json_resp['data']['email_address'] == email_address
assert json_resp['data']['from_user'] == invite_from.id
assert json_resp['data']['permissions'] == 'send_messages,manage_service,manage_api_keys'
assert json_resp['data']['id']
@@ -49,7 +51,8 @@ def test_create_invited_user_invalid_email(notify_api, sample_service):
data = {
'service': str(sample_service.id),
'email_address': email_address,
'from_user': invite_from.id
'from_user': invite_from.id,
'permissions': 'send_messages,manage_service,manage_api_keys'
}
data = json.dumps(data)