Skip to content
This repository has been archived by the owner on Feb 7, 2024. It is now read-only.

PLT-1046 updated validation #161

Merged
merged 2 commits into from
Jan 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 20 additions & 19 deletions oap-ws-account/src/main/java/oap/ws/account/OrganizationWS.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@
import java.util.Objects;
import java.util.Optional;

import static io.undertow.util.StatusCodes.NO_CONTENT;
import static io.undertow.util.StatusCodes.BAD_REQUEST;
import static io.undertow.util.StatusCodes.NOT_FOUND;
import static oap.http.Http.StatusCode.FORBIDDEN;
import static oap.http.server.nio.HttpServerExchange.HttpMethod.GET;
import static oap.http.server.nio.HttpServerExchange.HttpMethod.POST;
Expand Down Expand Up @@ -315,12 +316,7 @@ public Response validateTfaCode( @WsParam( from = PATH ) String email,
public Optional<UserData.View> changeDefaultOrganization( @WsParam( from = PATH ) String email,
@WsParam( from = PATH ) String organizationId,
@WsParam( from = SESSION ) UserData loggedUser ) {
Optional<UserData> user = accounts.getUser( email );

if( user.isPresent() && email.equals( loggedUser.user.email ) ) {
return accounts.updateUser( email, u -> u.defaultOrganization = organizationId ).map( u -> u.view );
}
return Optional.empty();
return accounts.updateUser( email, u -> u.defaultOrganization = organizationId ).map( u -> u.view );
}

@WsMethod( method = GET, path = "/{organizationId}/users/{email}/default-account/{accountId}", description = "Set default account in organization to user" )
Expand All @@ -330,12 +326,7 @@ public Optional<UserData.View> changeDefaultAccount( @WsParam( from = PATH ) Str
@WsParam( from = PATH ) String email,
@WsParam( from = PATH ) String accountId,
@WsParam( from = SESSION ) UserData loggedUser ) {
Optional<UserData> user = accounts.getUser( email );

if( user.isPresent() && email.equals( loggedUser.user.email ) ) {
return accounts.updateUser( email, u -> u.defaultAccounts.put( organizationId, accountId ) ).map( u -> u.view );
}
return Optional.empty();
return accounts.updateUser( email, u -> u.defaultAccounts.put( organizationId, accountId ) ).map( u -> u.view );
}

@WsMethod( method = GET, path = "/{organizationId}/add", description = "Add user to existing organization" )
Expand Down Expand Up @@ -444,15 +435,25 @@ protected ValidationErrors validateAdminOrganizationAccess( String email, UserDa
return empty();
}

protected ValidationErrors validateDefaultOrganization( UserData loggedUser, String organizationId ) {
if( loggedUser.user.defaultOrganization.equals( organizationId ) )
return error( NO_CONTENT, "Organization (%s) is already marked as default", organizationId );
protected ValidationErrors validateDefaultOrganization( String email, String organizationId ) {
Optional<UserData> user = accounts.getUser( email );
if( user.isEmpty() ) {
return error( NOT_FOUND, String.format( "User (%s) doesn't exist", email ) );
}
if( organizationId.equals( user.get().user.defaultOrganization ) ) {
return error( BAD_REQUEST, String.format( "Organization (%s) is already marked as default", organizationId ) );
}
return empty();
}

protected ValidationErrors validateDefaultAccount( UserData loggedUser, String organizationId, String accountId ) {
if( accountId.equals( loggedUser.user.defaultAccounts.get( organizationId ) ) )
return error( NO_CONTENT, "Account (%s) is already marked as default in organization (%s)", accountId, organizationId );
protected ValidationErrors validateDefaultAccount( String email, String organizationId, String accountId ) {
Optional<UserData> user = accounts.getUser( email );
if( user.isEmpty() ) {
return error( NOT_FOUND, String.format( "User (%s) doesn't exist", email ) );
}
if( accountId.equals( user.get().user.defaultAccounts.get( organizationId ) ) ) {
return error( BAD_REQUEST, String.format( "Account (%s) is already marked as default in organization (%s)", accountId, organizationId ) );
}
return empty();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
import java.util.HashMap;
import java.util.Map;

import static oap.http.Http.StatusCode.BAD_REQUEST;
import static oap.http.Http.StatusCode.FORBIDDEN;
import static oap.http.Http.StatusCode.NOT_FOUND;
import static oap.http.Http.StatusCode.NO_CONTENT;
import static oap.http.Http.StatusCode.OK;
import static oap.http.testng.HttpAsserts.assertGet;
import static oap.http.testng.HttpAsserts.assertPost;
Expand Down Expand Up @@ -539,14 +539,10 @@ public void changeDefaultAccountUser() {
@Test
public void setTheSameDefaultAccountToUser() {
OrganizationData org1 = accountFixture.accounts().storeOrganization( new Organization( "First", "test" ) );
OrganizationData org2 = accountFixture.accounts().storeOrganization( new Organization( "Second", "test" ) );
final String orgId = org1.organization.id;
accountFixture.accounts().storeAccount( orgId, new Account( "acc1", "acc1" ) );
accountFixture.accounts().storeAccount( orgId, new Account( "acc2", "acc2" ) );

accountFixture.accounts().storeAccount( org2.organization.id, new Account( "acc3", "acc3" ) );
accountFixture.accounts().storeAccount( org2.organization.id, new Account( "acc4", "acc4" ) );

final String mail = "[email protected]";
UserData user = new UserData( new User( mail, "John", "Smith", "pass123", true ), Map.of( orgId, USER ) );
user.addAccount( orgId, "acc1" );
Expand All @@ -556,7 +552,7 @@ public void setTheSameDefaultAccountToUser() {
assertEquals( "acc1", accountFixture.userStorage().getUser( mail ).get().getDefaultAccount( orgId ).get() );
accountFixture.assertLogin( "[email protected]", "pass123" );
assertGet( accountFixture.httpUrl( "/organizations/" + orgId + "/users/" + mail + "/default-account/acc2" ) ).hasCode( OK );
assertGet( accountFixture.httpUrl( "/organizations/" + orgId + "/users/" + mail + "/default-account/acc2" ) ).hasCode( NO_CONTENT );
assertGet( accountFixture.httpUrl( "/organizations/" + orgId + "/users/" + mail + "/default-account/acc2" ) ).hasCode( BAD_REQUEST );
assertEquals( "acc2", accountFixture.userStorage().getUser( mail ).get().getDefaultAccount( orgId ).get() );
}

Expand All @@ -576,7 +572,7 @@ public void setAccountToNonExistingUser() {
}

@Test
public void setNonExistentDefaultAccountToUser() {
public void setNonExistingDefaultAccountToUser() {
OrganizationData org1 = accountFixture.accounts().storeOrganization( new Organization( "First", "test" ) );
final String orgId = org1.organization.id;
accountFixture.accounts().storeAccount( orgId, new Account( "acc1", "acc1" ) );
Expand Down Expand Up @@ -640,7 +636,7 @@ public void addOrganizationToUserByAdminInSeveralOrganizations() {
}

@Test
public void addOrganizationToUserByUserWithDIfferentRolesInOrganizations() {
public void addOrganizationToUserByUserWithDifferentRolesInOrganizations() {
OrganizationData org1 = accountFixture.accounts().storeOrganization( new Organization( "First", "test" ) );
OrganizationData org2 = accountFixture.accounts().storeOrganization( new Organization( "Second", "test" ) );

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
</distributionManagement>

<properties>
<oap-ws.project.version>21.1.7</oap-ws.project.version>
<oap-ws.project.version>21.1.8</oap-ws.project.version>

<oap.deps.oap.version>21.1.8</oap.deps.oap.version>

Expand Down