Skip to content

Commit

Permalink
Merge pull request #73 from companieshouse/IDVA6-1514-refactor-remain…
Browse files Browse the repository at this point in the history
…ing-tests

IDVA6-1514: Third and final PR for refactoring acsp-manage-users-api tests
  • Loading branch information
krishna-patel-ch authored Sep 24, 2024
2 parents d740388 + fae639e commit 671047f
Show file tree
Hide file tree
Showing 12 changed files with 526 additions and 843 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import org.bson.Document;
import org.mockito.ArgumentMatcher;
import org.springframework.data.mongodb.core.query.Update;
import uk.gov.companieshouse.acsp.manage.users.common.Preprocessors.Preprocessor;

public class ComparisonUtils {
Expand Down Expand Up @@ -65,4 +67,19 @@ public <T> ArgumentMatcher<T> compare( final T referenceObject, final List<Strin
};
}

public static ArgumentMatcher<Update> updateMatches( final Map<String, Object> expectedKeyValuePairs ) {
return update -> {
final var document = update.getUpdateObject().get( "$set", Document.class );
return expectedKeyValuePairs.entrySet()
.stream()
.map( entry -> {
final var value = document.get(entry.getKey());
final var expectedValue = entry.getValue();
return value.equals(expectedValue);
} )
.reduce((firstIsCorrect, secondIsCorrect) -> firstIsCorrect && secondIsCorrect)
.get();
};
}

}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import jakarta.servlet.http.HttpServletResponse;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -33,16 +32,16 @@ void setup(){

@Test
void preHandleWithoutEricHeadersReturnsUnauthorised() {
MockHttpServletRequest request = new MockHttpServletRequest();
final var request = new MockHttpServletRequest();

HttpServletResponse response = new MockHttpServletResponse();
assertFalse( authorizationAndInternalUserInterceptors.preHandle(request, response, null) );
final var response = new MockHttpServletResponse();
assertFalse( authorizationAndInternalUserInterceptors.preHandle( request, response, null ) );
assertEquals(401, response.getStatus() );
}

@Test
void preHandleWithOAuth2RequestUsesAuthorizationInterceptor() {
MockHttpServletRequest request = new MockHttpServletRequest();
final var request = new MockHttpServletRequest();
request.addHeader("Eric-identity", "111");
request.addHeader("Eric-identity-type", "oauth2");

Expand All @@ -53,30 +52,30 @@ void preHandleWithOAuth2RequestUsesAuthorizationInterceptor() {

Mockito.doReturn( bruce ).when( usersService ).fetchUserDetails( "111" );

HttpServletResponse response = new MockHttpServletResponse();
assertTrue( authorizationAndInternalUserInterceptors.preHandle(request, response, null) );
final var response = new MockHttpServletResponse();
assertTrue( authorizationAndInternalUserInterceptors.preHandle( request, response, null ) );
}

@Test
void preHandleWithApiKeyRequestUsesInternalUserInterceptor() {
MockHttpServletRequest request = new MockHttpServletRequest();
final var request = new MockHttpServletRequest();
request.addHeader("Eric-identity", "111");
request.addHeader("Eric-identity-type", "key");
request.addHeader("ERIC-Authorised-Key-Roles","*");

HttpServletResponse response = new MockHttpServletResponse();
assertTrue( authorizationAndInternalUserInterceptors.preHandle(request, response, null) );
final var response = new MockHttpServletResponse();
assertTrue( authorizationAndInternalUserInterceptors.preHandle( request, response, null ) );
}

@Test
void preHandleWithMalformedEricIdentityTypeReturnsUnauthorised(){
MockHttpServletRequest request = new MockHttpServletRequest();
final var request = new MockHttpServletRequest();
request.addHeader("Eric-identity", "111");
request.addHeader("Eric-identity-type", "fingerprint");
request.addHeader("ERIC-Authorised-Key-Roles","*");

HttpServletResponse response = new MockHttpServletResponse();
assertFalse( authorizationAndInternalUserInterceptors.preHandle(request, response, null) );
final var response = new MockHttpServletResponse();
assertFalse( authorizationAndInternalUserInterceptors.preHandle( request, response, null ) );
assertEquals(401, response.getStatus() );
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.anyString;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Tag;
Expand All @@ -21,81 +20,80 @@
import uk.gov.companieshouse.acsp.manage.users.service.UsersService;
import uk.gov.companieshouse.api.accounts.user.model.User;

@ExtendWith(MockitoExtension.class)
@Tag("unit-test")
@ExtendWith( MockitoExtension.class )
@Tag( "unit-test" )
class AuthorizationInterceptorTest {

AuthorizationInterceptor interceptor;

@Mock
UsersService usersService;
private UsersService usersService;

@InjectMocks
AuthorizationInterceptor authorizationInterceptor;
private AuthorizationInterceptor authorizationInterceptor;

private AuthorizationInterceptor interceptor;

@BeforeEach
void setup(){
interceptor = new AuthorizationInterceptor(usersService);
interceptor = new AuthorizationInterceptor( usersService );
}

@Test
void preHandleWithoutHeadersReturns401() {
final var request = new MockHttpServletRequest();

HttpServletRequest request = new MockHttpServletRequest();

HttpServletResponse response = new MockHttpServletResponse();
assertFalse(interceptor.preHandle(request, response, null));
assertEquals(401, response.getStatus());
final var response = new MockHttpServletResponse();
assertFalse( interceptor.preHandle(request, response, null ) );
assertEquals( 401, response.getStatus() );
}

@Test
void preHandleWithoutEricIdentityReturns401() {
MockHttpServletRequest request = new MockHttpServletRequest();
final var request = new MockHttpServletRequest();
request.addHeader("Eric-Identity-Type", "oauth2");

HttpServletResponse response = new MockHttpServletResponse();
assertFalse(interceptor.preHandle(request, response, null));
assertEquals(401, response.getStatus());
final var response = new MockHttpServletResponse();
assertFalse( interceptor.preHandle(request, response, null ) );
assertEquals( 401, response.getStatus() );
}

@Test
void preHandleWithoutEricIdentityTypeReturns401() {
MockHttpServletRequest request = new MockHttpServletRequest();
final var request = new MockHttpServletRequest();
request.addHeader("Eric-Identity", "abcd123456");

HttpServletResponse response = new MockHttpServletResponse();
assertFalse(interceptor.preHandle(request, response, null));
assertEquals(401, response.getStatus());
final var response = new MockHttpServletResponse();
assertFalse(interceptor.preHandle( request, response, null ) );
assertEquals( 401, response.getStatus() );
}

@Test
void preHandleWithIncorrectEricIdentityTypeReturns401() {
MockHttpServletRequest request = new MockHttpServletRequest();
final var request = new MockHttpServletRequest();
request.addHeader("Eric-Identity", "abcd123456");
request.addHeader("Eric-Identity-Type", "key");

HttpServletResponse response = new MockHttpServletResponse();
assertFalse(interceptor.preHandle(request, response, null));
assertEquals(401, response.getStatus());
final var response = new MockHttpServletResponse();
assertFalse( interceptor.preHandle(request, response, null ) );
assertEquals( 401, response.getStatus() );
}

@Test
void preHandleWithMalformedOrNonexistentEricIdentityReturn403() {
MockHttpServletRequest request = new MockHttpServletRequest();
final var request = new MockHttpServletRequest();
request.addHeader("Eric-Identity", "$$$");
request.addHeader( "ERIC-Identity-Type", "oauth2" );

HttpServletResponse response = new MockHttpServletResponse();
final var response = new MockHttpServletResponse();

Mockito.doThrow( new NotFoundRuntimeException( "accounts-association-api", "Not found" ) ).when( usersService ).fetchUserDetails( anyString() );

assertFalse(interceptor.preHandle(request, response, null));
assertEquals(403, response.getStatus());
assertFalse( interceptor.preHandle(request, response, null ) );
assertEquals( 403, response.getStatus() );
}

@Test
void preHandleShouldReturnTrueWhenAuthHeaderAndAuthHeaderTypeOauthAreProvided() {
MockHttpServletRequest request = new MockHttpServletRequest();
final var request = new MockHttpServletRequest();
request.addHeader("Eric-identity", "111");
request.addHeader("Eric-identity-type", "oauth2");

Expand All @@ -107,7 +105,7 @@ void preHandleShouldReturnTrueWhenAuthHeaderAndAuthHeaderTypeOauthAreProvided()
Mockito.doReturn( bruce ).when( usersService ).fetchUserDetails( "111" );

HttpServletResponse response = new MockHttpServletResponse();
assertTrue(interceptor.preHandle(request, response, null));
assertTrue( interceptor.preHandle(request, response, null ) );
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
import uk.gov.companieshouse.api.acsp_manage_users.model.AcspMembership.MembershipStatusEnum;
import uk.gov.companieshouse.api.acsp_manage_users.model.AcspMembership.UserRoleEnum;

@ExtendWith(MockitoExtension.class)
@Tag("unit-test")
@ExtendWith( MockitoExtension.class )
@Tag( "unit-test" )
class AcspMembershipCollectionMappersTest {

@Mock
Expand All @@ -41,8 +41,6 @@ class AcspMembershipCollectionMappersTest {

private final TestDataManager testDataManager = TestDataManager.getInstance();

private static final String DEFAULT_DISPLAY_NAME = "Not Provided";

private static final String DEFAULT_KIND = "acsp-membership";

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package uk.gov.companieshouse.acsp.manage.users.mapper;

import static org.mockito.ArgumentMatchers.eq;
import static uk.gov.companieshouse.acsp.manage.users.common.DateUtils.localDateTimeToNormalisedString;
import static uk.gov.companieshouse.acsp.manage.users.common.DateUtils.reduceTimestampResolution;

Expand All @@ -21,8 +20,8 @@
import uk.gov.companieshouse.api.acsp_manage_users.model.AcspMembership.MembershipStatusEnum;
import uk.gov.companieshouse.api.acsp_manage_users.model.AcspMembership.UserRoleEnum;

@ExtendWith(MockitoExtension.class)
@Tag("unit-test")
@ExtendWith( MockitoExtension.class )
@Tag( "unit-test" )
class AcspMembershipMapperTest {

@Mock
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,27 +27,27 @@

import static org.mockito.ArgumentMatchers.any;

@ExtendWith(MockitoExtension.class)
@Tag("unit-test")
class AccountsUserEndpointTest {
@ExtendWith( MockitoExtension.class )
@Tag( "unit-test" )
class AccountsUserEndpointTest {

@Mock
ApiClientUtil apiClientService;
private ApiClientUtil apiClientService;

@Mock
InternalApiClient internalApiClient;
private InternalApiClient internalApiClient;

@Mock
PrivateAccountsUserResourceHandler privateAccountsUserResourceHandler;
private PrivateAccountsUserResourceHandler privateAccountsUserResourceHandler;

@Mock
PrivateAccountsUserFindUserBasedOnEmailGet privateAccountsUserFindUserBasedOnEmailGet;
private PrivateAccountsUserFindUserBasedOnEmailGet privateAccountsUserFindUserBasedOnEmailGet;

@Mock
PrivateAccountsUserUserGet privateAccountsUserUserGet;
private PrivateAccountsUserUserGet privateAccountsUserUserGet;

@InjectMocks
AccountsUserEndpoint accountsUserEndpoint;
private AccountsUserEndpoint accountsUserEndpoint;

@Test
void searchUserDetailsWithNullInputThrowsNullPointerException() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import uk.gov.companieshouse.api.model.ApiResponse;

@ExtendWith( MockitoExtension.class )
@Tag("unit-test")
@Tag( "unit-test" )
class AcspProfileEndpointTest {

@Mock
Expand Down
Loading

0 comments on commit 671047f

Please sign in to comment.