notify-api-533 add flask command to promote user to platform admin

This commit is contained in:
Kenneth Kehl
2023-11-06 13:31:03 -08:00
parent 9cdc507f6c
commit aa7b5d3905
5 changed files with 59 additions and 7 deletions

View File

@@ -830,3 +830,18 @@ def create_new_service(name, message_limit, restricted, email_from, created_by_i
except IntegrityError:
print("duplicate service", service.name)
db.session.rollback()
@notify_command(name="promote-user-to-platform-admin")
@click.option("-u", "--user-email-address", required=True, prompt=True)
def promote_user_to_platform_admin(user_email_address):
print("enter")
user = get_user_by_email(user_email_address)
print(f"user is {user}")
# if not user:
# raise ValueError(f"could not find user for {user_email_address}")
print("ok to proceed")
user.platform_admin = True
db.session.add(user)
db.session.commit()
print("finished")

View File

@@ -17,13 +17,6 @@ class DAOClass(object):
if _commit:
db.session.commit()
def update_instance(self, inst, update_dict, _commit=True):
# Make sure the id is not included in the update_dict
update_dict.pop("id")
self.Meta.model.query.filter_by(id=inst.id).update(update_dict)
if _commit:
db.session.commit()
def delete_instance(self, inst, _commit=True):
db.session.delete(inst)
if _commit:

View File

@@ -182,6 +182,11 @@ def sample_user(notify_db_session):
return create_user(email="notify@digital.fake.gov")
@pytest.fixture(scope="function")
def sample_platform_admin(notify_db_session):
return create_user(email="notify_pa@digital.fake.gov", platform_admin=True)
@pytest.fixture(scope="function")
def notify_user(notify_db_session):
return create_user(

View File

@@ -70,6 +70,7 @@ def create_user(
state="active",
id_=None,
name="Test User",
platform_admin=False,
):
data = {
"id": id_ or uuid.uuid4(),
@@ -78,6 +79,7 @@ def create_user(
"password": "password",
"mobile_number": mobile_number,
"state": state,
"platform_admin": platform_admin,
}
user = User.query.filter_by(email_address=email).first()
if not user:

View File

@@ -14,10 +14,12 @@ from app.commands import (
populate_annual_billing_with_the_previous_years_allowance,
populate_organization_agreement_details_from_file,
populate_organizations_from_file,
promote_user_to_platform_admin,
purge_functional_test_data,
update_jobs_archived_flag,
)
from app.dao.inbound_numbers_dao import dao_get_available_inbound_numbers
from app.dao.users_dao import get_user_by_email
from app.models import (
KEY_TYPE_NORMAL,
NOTIFICATION_DELIVERED,
@@ -395,3 +397,38 @@ def test_create_service_command(notify_db_session, notify_api):
assert service.email_from == "somebody@fake.gov"
assert service.restricted is False
assert service.message_limit == 40000
def test_promote_user_to_platform_admin(
notify_db_session, notify_api, sample_user, sample_platform_admin
):
assert sample_user.platform_admin is False
assert sample_platform_admin.platform_admin is True
result = notify_api.test_cli_runner().invoke(
promote_user_to_platform_admin,
[
"-u",
"notify@digital.fake.gov",
],
)
print(result)
user = get_user_by_email("notify@digital.fake.gov")
assert user.platform_admin is True
def test_promote_user_to_platform_admin_no_result_found(
notify_db_session, notify_api, sample_user
):
assert sample_user.platform_admin is False
result = notify_api.test_cli_runner().invoke(
promote_user_to_platform_admin,
[
"-u",
"notify@digital.fake.asefasefasefasef",
],
)
assert "NoResultFound" in str(result)
assert sample_user.platform_admin is False