mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-24 01:11:38 -05:00
Merge pull request #107 from alphagov/permissions-on-invite
Permissions on invite
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -166,6 +166,7 @@ class NotificationStatusSchema(BaseSchema):
|
||||
|
||||
|
||||
class InvitedUserSchema(BaseSchema):
|
||||
|
||||
class Meta:
|
||||
model = models.InvitedUser
|
||||
|
||||
|
||||
26
migrations/versions/0029_add_permissions_to_invite.py
Normal file
26
migrations/versions/0029_add_permissions_to_invite.py
Normal 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 ###
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user