mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-02 09:05:17 -05:00
[WIP] invited user now has comma separated permission values
stored against it so that user can be created with correct permissions.
This commit is contained in:
@@ -264,6 +264,12 @@ class InvitedUser(db.Model):
|
|||||||
default=datetime.datetime.now)
|
default=datetime.datetime.now)
|
||||||
status = db.Column(
|
status = db.Column(
|
||||||
db.Enum(*INVITED_USER_STATUS_TYPES, name='invited_users_status_types'), nullable=False, default='pending')
|
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):
|
class Permission(db.Model):
|
||||||
|
|||||||
@@ -166,6 +166,7 @@ class NotificationStatusSchema(BaseSchema):
|
|||||||
|
|
||||||
|
|
||||||
class InvitedUserSchema(BaseSchema):
|
class InvitedUserSchema(BaseSchema):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.InvitedUser
|
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
|
set -e
|
||||||
|
|
||||||
source environment.sh
|
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 = {
|
data = {
|
||||||
'service': service,
|
'service': service,
|
||||||
'email_address': to_email_address,
|
'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)
|
invited_user = InvitedUser(**data)
|
||||||
save_invited_user(invited_user)
|
save_invited_user(invited_user)
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ def test_create_invited_user(notify_db, notify_db_session, sample_service):
|
|||||||
data = {
|
data = {
|
||||||
'service': sample_service,
|
'service': sample_service,
|
||||||
'email_address': email_address,
|
'email_address': email_address,
|
||||||
'from_user': invite_from
|
'from_user': invite_from,
|
||||||
|
'permissions': 'send_messages,manage_service'
|
||||||
}
|
}
|
||||||
|
|
||||||
invited_user = InvitedUser(**data)
|
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 InvitedUser.query.count() == 1
|
||||||
assert invited_user.email_address == email_address
|
assert invited_user.email_address == email_address
|
||||||
assert invited_user.from_user == invite_from
|
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):
|
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 = {
|
data = {
|
||||||
'service': str(sample_service.id),
|
'service': str(sample_service.id),
|
||||||
'email_address': email_address,
|
'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)
|
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']['service'] == str(sample_service.id)
|
||||||
assert json_resp['data']['email_address'] == email_address
|
assert json_resp['data']['email_address'] == email_address
|
||||||
assert json_resp['data']['from_user'] == invite_from.id
|
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']
|
assert json_resp['data']['id']
|
||||||
|
|
||||||
|
|
||||||
@@ -49,7 +51,8 @@ def test_create_invited_user_invalid_email(notify_api, sample_service):
|
|||||||
data = {
|
data = {
|
||||||
'service': str(sample_service.id),
|
'service': str(sample_service.id),
|
||||||
'email_address': email_address,
|
'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)
|
data = json.dumps(data)
|
||||||
|
|||||||
Reference in New Issue
Block a user