mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-24 00:06:16 -04:00
notify-api-533 add flask command to promote user to platform admin
This commit is contained in:
@@ -830,3 +830,18 @@ def create_new_service(name, message_limit, restricted, email_from, created_by_i
|
|||||||
except IntegrityError:
|
except IntegrityError:
|
||||||
print("duplicate service", service.name)
|
print("duplicate service", service.name)
|
||||||
db.session.rollback()
|
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")
|
||||||
|
|||||||
@@ -17,13 +17,6 @@ class DAOClass(object):
|
|||||||
if _commit:
|
if _commit:
|
||||||
db.session.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):
|
def delete_instance(self, inst, _commit=True):
|
||||||
db.session.delete(inst)
|
db.session.delete(inst)
|
||||||
if _commit:
|
if _commit:
|
||||||
|
|||||||
@@ -182,6 +182,11 @@ def sample_user(notify_db_session):
|
|||||||
return create_user(email="notify@digital.fake.gov")
|
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")
|
@pytest.fixture(scope="function")
|
||||||
def notify_user(notify_db_session):
|
def notify_user(notify_db_session):
|
||||||
return create_user(
|
return create_user(
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ def create_user(
|
|||||||
state="active",
|
state="active",
|
||||||
id_=None,
|
id_=None,
|
||||||
name="Test User",
|
name="Test User",
|
||||||
|
platform_admin=False,
|
||||||
):
|
):
|
||||||
data = {
|
data = {
|
||||||
"id": id_ or uuid.uuid4(),
|
"id": id_ or uuid.uuid4(),
|
||||||
@@ -78,6 +79,7 @@ def create_user(
|
|||||||
"password": "password",
|
"password": "password",
|
||||||
"mobile_number": mobile_number,
|
"mobile_number": mobile_number,
|
||||||
"state": state,
|
"state": state,
|
||||||
|
"platform_admin": platform_admin,
|
||||||
}
|
}
|
||||||
user = User.query.filter_by(email_address=email).first()
|
user = User.query.filter_by(email_address=email).first()
|
||||||
if not user:
|
if not user:
|
||||||
|
|||||||
@@ -14,10 +14,12 @@ from app.commands import (
|
|||||||
populate_annual_billing_with_the_previous_years_allowance,
|
populate_annual_billing_with_the_previous_years_allowance,
|
||||||
populate_organization_agreement_details_from_file,
|
populate_organization_agreement_details_from_file,
|
||||||
populate_organizations_from_file,
|
populate_organizations_from_file,
|
||||||
|
promote_user_to_platform_admin,
|
||||||
purge_functional_test_data,
|
purge_functional_test_data,
|
||||||
update_jobs_archived_flag,
|
update_jobs_archived_flag,
|
||||||
)
|
)
|
||||||
from app.dao.inbound_numbers_dao import dao_get_available_inbound_numbers
|
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 (
|
from app.models import (
|
||||||
KEY_TYPE_NORMAL,
|
KEY_TYPE_NORMAL,
|
||||||
NOTIFICATION_DELIVERED,
|
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.email_from == "somebody@fake.gov"
|
||||||
assert service.restricted is False
|
assert service.restricted is False
|
||||||
assert service.message_limit == 40000
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user