def test_patch_org_status(session, monkeypatch, auth_mock): # pylint:disable=unused-argument """Assert that an Org status can be updated.""" org = factory_org_service() user = factory_user_model_with_contact() token_info = TestJwtClaims.get_test_user(sub=user.keycloak_guid, source=LoginSource.BCEID.value) patch_token_info(token_info, monkeypatch) # Validate and update org status patch_info = { 'action': PatchActions.UPDATE_STATUS.value, 'statusCode': OrgStatus.SUSPENDED.value, } with pytest.raises(BusinessException) as exception: org.patch_org(PatchActions.UPDATE_STATUS.value, patch_info) assert exception.value.code == Error.INVALID_INPUT.name patch_info['suspensionReasonCode'] = SuspensionReasonCode.OWNER_CHANGE.name with patch.object(ActivityLogPublisher, 'publish_activity', return_value=None) as mock_alp: updated_org = org.patch_org(PatchActions.UPDATE_STATUS.value, patch_info) mock_alp.assert_called_with(Activity(action=ActivityAction.ACCOUNT_SUSPENSION.value, org_id=ANY, name=ANY, id=ANY, value=SuspensionReasonCode.OWNER_CHANGE.value)) assert updated_org['status_code'] == OrgStatus.SUSPENDED.value patch_info = { 'action': PatchActions.UPDATE_STATUS.value, 'statusCode': OrgStatus.ACTIVE.value, } updated_org = org.patch_org(PatchActions.UPDATE_STATUS.value, patch_info) assert updated_org['status_code'] == OrgStatus.ACTIVE.value with patch.object(ActivityLogPublisher, 'publish_activity', return_value=None) as mock_alp: OrgService.update_login_option(org._model.id, 'BCROS') mock_alp.assert_called_with(Activity(action=ActivityAction.AUTHENTICATION_METHOD_CHANGE.value, org_id=ANY, name=ANY, id=ANY, value='BCROS'))
def put(org_id): """Update a new login type for the specified org.""" request_json = request.get_json() login_option_val = request_json.get('loginOption') # TODO may be add validation here try: login_option = OrgService.update_login_option(org_id, login_option_val) response, status = jsonify({'login_option': login_option.login_source}), http_status.HTTP_201_CREATED except BusinessException as exception: response, status = {'code': exception.code, 'message': exception.message}, exception.status_code return response, status