Exemplo n.º 1
0
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'))
Exemplo n.º 2
0
 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