Skip to content

Commit e171014

Browse files
authored
Merge pull request #41 from companieshouse/lp-218-api-transaction-interceptor
LP-218 API transaction interceptor to get transaction
2 parents f021db9 + 9636c05 commit e171014

File tree

8 files changed

+79
-9
lines changed

8 files changed

+79
-9
lines changed

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<log4j.version>2.24.1</log4j.version>
3030
<jib-maven-plugin.version>3.4.2</jib-maven-plugin.version>
3131
<api-security-java.version>2.0.8</api-security-java.version>
32+
<api-sdk-manager-java-library.version>3.0.6</api-sdk-manager-java-library.version>
3233
</properties>
3334

3435
<profiles>
@@ -87,6 +88,11 @@
8788
</exclusion>
8889
</exclusions>
8990
</dependency>
91+
<dependency>
92+
<groupId>uk.gov.companieshouse</groupId>
93+
<artifactId>api-sdk-manager-java-library</artifactId>
94+
<version>${api-sdk-manager-java-library.version}</version>
95+
</dependency>
9096
<dependency>
9197
<groupId>uk.gov.companieshouse</groupId>
9298
<artifactId>api-security-java</artifactId>

spec/schema.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@
1515
}
1616
],
1717
"paths": {
18-
"/transactions/{transaction_id}/limited-partnership/partnership": {
18+
"/transactions/{transactionId}/limited-partnership/partnership": {
1919
"post": {
2020
"tags": [
2121
"Limited Partnerships"
2222
],
2323
"summary": "Create a Limited Partnership submission",
2424
"parameters": [
2525
{
26-
"name": "transaction_id",
26+
"name": "transactionId",
2727
"in": "path",
2828
"required": true,
2929
"type": "string"
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package uk.gov.companieshouse.limitedpartnershipsapi.client;
2+
3+
import org.springframework.stereotype.Component;
4+
import uk.gov.companieshouse.api.ApiClient;
5+
import uk.gov.companieshouse.api.InternalApiClient;
6+
import uk.gov.companieshouse.api.sdk.ApiClientService;
7+
import uk.gov.companieshouse.sdk.manager.ApiSdkManager;
8+
9+
import java.io.IOException;
10+
11+
@Component
12+
public class ApiClientServiceImpl implements ApiClientService {
13+
14+
15+
@Override
16+
public ApiClient getApiClient() {
17+
return ApiSdkManager.getSDK();
18+
}
19+
20+
@Override
21+
public ApiClient getApiClient(String ericPassThroughHeader) throws IOException {
22+
return ApiSdkManager.getSDK(ericPassThroughHeader);
23+
}
24+
25+
@Override
26+
public InternalApiClient getInternalApiClient() {
27+
return ApiSdkManager.getPrivateSDK();
28+
}
29+
30+
@Override
31+
public InternalApiClient getInternalApiClient(String passthroughHeader) throws IOException {
32+
return ApiSdkManager.getPrivateSDK(passthroughHeader);
33+
}
34+
}

src/main/java/uk/gov/companieshouse/limitedpartnershipsapi/config/InterceptorConfig.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,30 @@
11
package uk.gov.companieshouse.limitedpartnershipsapi.config;
22

3+
import org.springframework.context.annotation.Bean;
34
import org.springframework.context.annotation.Configuration;
45
import org.springframework.lang.NonNull;
56
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
67
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
78
import uk.gov.companieshouse.api.interceptor.TokenPermissionsInterceptor;
9+
import uk.gov.companieshouse.api.interceptor.TransactionInterceptor;
810
import uk.gov.companieshouse.limitedpartnershipsapi.interceptor.CustomUserAuthenticationInterceptor;
911
import uk.gov.companieshouse.limitedpartnershipsapi.interceptor.LoggingInterceptor;
1012

13+
import static uk.gov.companieshouse.limitedpartnershipsapi.LimitedPartnershipsApiApplication.APP_NAMESPACE;
14+
1115
@Configuration
1216
public class InterceptorConfig implements WebMvcConfigurer {
1317

14-
private static final String PARTNERSHIP = "/transactions/**/partnership";
18+
private static final String TRANSACTIONS = "/transactions/**";
19+
private static final String FILINGS = "/private/**/filings";
20+
private static final String PARTNERSHIP = TRANSACTIONS + "/partnership";
1521

1622
private final LoggingInterceptor loggingInterceptor;
1723

1824
private final CustomUserAuthenticationInterceptor customUserAuthenticationInterceptor;
1925

20-
21-
public InterceptorConfig(LoggingInterceptor loggingInterceptor, CustomUserAuthenticationInterceptor customUserAuthenticationInterceptor) {
26+
public InterceptorConfig(LoggingInterceptor loggingInterceptor,
27+
CustomUserAuthenticationInterceptor customUserAuthenticationInterceptor) {
2228
this.loggingInterceptor = loggingInterceptor;
2329
this.customUserAuthenticationInterceptor = customUserAuthenticationInterceptor;
2430
}
@@ -31,9 +37,16 @@ public InterceptorConfig(LoggingInterceptor loggingInterceptor, CustomUserAuthen
3137
@Override
3238
public void addInterceptors(@NonNull InterceptorRegistry registry) {
3339
registry.addInterceptor(loggingInterceptor);
40+
registry.addInterceptor(transactionInterceptor())
41+
.addPathPatterns(FILINGS, TRANSACTIONS);
3442
registry.addInterceptor(new TokenPermissionsInterceptor())
3543
.addPathPatterns(PARTNERSHIP);
3644
registry.addInterceptor(customUserAuthenticationInterceptor)
3745
.addPathPatterns(PARTNERSHIP);
3846
}
47+
48+
@Bean
49+
public TransactionInterceptor transactionInterceptor() {
50+
return new TransactionInterceptor(APP_NAMESPACE);
51+
}
3952
}

src/main/java/uk/gov/companieshouse/limitedpartnershipsapi/controller/PartnershipController.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
import org.springframework.http.HttpStatus;
55
import org.springframework.http.ResponseEntity;
66
import org.springframework.web.bind.annotation.PostMapping;
7+
import org.springframework.web.bind.annotation.RequestAttribute;
78
import org.springframework.web.bind.annotation.RequestBody;
89
import org.springframework.web.bind.annotation.RequestHeader;
910
import org.springframework.web.bind.annotation.RequestMapping;
1011
import org.springframework.web.bind.annotation.RestController;
12+
import uk.gov.companieshouse.api.model.transaction.Transaction;
1113
import uk.gov.companieshouse.limitedpartnershipsapi.model.dto.LimitedPartnershipSubmissionCreatedResponseDto;
1214
import uk.gov.companieshouse.limitedpartnershipsapi.model.dto.LimitedPartnershipSubmissionDto;
1315
import uk.gov.companieshouse.limitedpartnershipsapi.service.LimitedPartnershipService;
@@ -18,6 +20,7 @@
1820

1921
import static uk.gov.companieshouse.api.util.security.EricConstants.ERIC_IDENTITY;
2022
import static uk.gov.companieshouse.limitedpartnershipsapi.utils.Constants.ERIC_REQUEST_ID_KEY;
23+
import static uk.gov.companieshouse.limitedpartnershipsapi.utils.Constants.TRANSACTION_KEY;
2124
import static uk.gov.companieshouse.limitedpartnershipsapi.utils.Constants.URL_PARAM_TRANSACTION_ID;
2225

2326
@RestController
@@ -35,11 +38,12 @@ public PartnershipController(LimitedPartnershipService limitedPartnershipService
3538

3639
@PostMapping
3740
public ResponseEntity<Object> createPartnership(
41+
@RequestAttribute(TRANSACTION_KEY) Transaction transaction,
3842
@RequestBody LimitedPartnershipSubmissionDto limitedPartnershipSubmissionDto,
3943
@RequestHeader(value = ERIC_REQUEST_ID_KEY) String requestId,
4044
@RequestHeader(value = ERIC_IDENTITY) String userId) {
4145

42-
var transactionId = 12321123;
46+
var transactionId = transaction.getId();
4347
var logMap = new HashMap<String, Object>();
4448
logMap.put(URL_PARAM_TRANSACTION_ID, transactionId);
4549

src/main/java/uk/gov/companieshouse/limitedpartnershipsapi/utils/Constants.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,7 @@ private Constants() { }
88
public static final String ERIC_REQUEST_ID_KEY = "X-Request-Id";
99

1010
// URL path parameters
11-
public static final String URL_PARAM_TRANSACTION_ID = "transaction_id";
11+
public static final String URL_PARAM_TRANSACTION_ID = "transactionId";
12+
13+
public static final String TRANSACTION_KEY = "transaction";
1214
}

src/test/java/uk/gov/companieshouse/limitedpartnershipsapi/config/InterceptorConfigTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
1010
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
1111
import uk.gov.companieshouse.api.interceptor.TokenPermissionsInterceptor;
12+
import uk.gov.companieshouse.api.interceptor.TransactionInterceptor;
1213
import uk.gov.companieshouse.limitedpartnershipsapi.interceptor.CustomUserAuthenticationInterceptor;
1314
import uk.gov.companieshouse.limitedpartnershipsapi.interceptor.LoggingInterceptor;
1415

@@ -44,9 +45,10 @@ void addInterceptorsTest() {
4445

4546
InOrder inOrder = inOrder(interceptorRegistry, interceptorRegistration);
4647
inOrder.verify(interceptorRegistry).addInterceptor(loggingInterceptor);
48+
inOrder.verify(interceptorRegistry).addInterceptor(any(TransactionInterceptor.class));
4749
inOrder.verify(interceptorRegistry).addInterceptor(any(TokenPermissionsInterceptor.class));
4850
inOrder.verify(interceptorRegistry).addInterceptor(customUserAuthenticationInterceptor);
4951

50-
verify(interceptorRegistry, times(3)).addInterceptor(any());
52+
verify(interceptorRegistry, times(4)).addInterceptor(any());
5153
}
5254
}

src/test/java/uk/gov/companieshouse/limitedpartnershipsapi/controller/PartnershipControllerTest.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.mockito.junit.jupiter.MockitoExtension;
99
import org.springframework.http.HttpHeaders;
1010
import org.springframework.http.HttpStatus;
11+
import uk.gov.companieshouse.api.model.transaction.Transaction;
1112
import uk.gov.companieshouse.limitedpartnershipsapi.model.dto.DataDto;
1213
import uk.gov.companieshouse.limitedpartnershipsapi.model.dto.LimitedPartnershipSubmissionCreatedResponseDto;
1314
import uk.gov.companieshouse.limitedpartnershipsapi.model.dto.LimitedPartnershipSubmissionDto;
@@ -27,13 +28,17 @@ class PartnershipControllerTest {
2728
private static final String REQUEST_ID = "5346336";
2829
private static final String USER_ID = "rjg736k791";
2930
private static final String SUBMISSION_ID = "ABC123ABC456";
31+
private static final String TRANSACTION_ID = "12321123";
3032

3133
@InjectMocks
3234
private PartnershipController partnershipController;
3335

3436
@Mock
3537
private LimitedPartnershipService limitedPartnershipService;
3638

39+
@Mock
40+
private Transaction transaction;
41+
3742
private LimitedPartnershipSubmissionDto limitedPartnershipSubmissionDto;
3843

3944
@BeforeEach
@@ -51,15 +56,18 @@ void testCreatePartnership() {
5156
eq(USER_ID)))
5257
.thenReturn(SUBMISSION_ID);
5358

59+
when(transaction.getId()).thenReturn(TRANSACTION_ID);
60+
5461
var response = partnershipController.createPartnership(
62+
transaction,
5563
limitedPartnershipSubmissionDto,
5664
REQUEST_ID,
5765
USER_ID);
5866

5967
assertEquals(HttpStatus.CREATED.value(), response.getStatusCode().value());
6068
var responseHeaderLocation = Objects.requireNonNull(response.getHeaders().get(HttpHeaders.LOCATION)).getFirst();
6169
assertEquals(
62-
String.format(URL_GET_PARTNERSHIP, 12321123, SUBMISSION_ID),
70+
String.format(URL_GET_PARTNERSHIP, TRANSACTION_ID, SUBMISSION_ID),
6371
responseHeaderLocation);
6472
LimitedPartnershipSubmissionCreatedResponseDto responseBody = (LimitedPartnershipSubmissionCreatedResponseDto) response.getBody();
6573
assert responseBody != null;
@@ -75,6 +83,7 @@ void testCreatePartnershipInternalServerError() {
7583
.thenThrow(new RuntimeException());
7684

7785
var response = partnershipController.createPartnership(
86+
transaction,
7887
limitedPartnershipSubmissionDto,
7988
REQUEST_ID,
8089
USER_ID);

0 commit comments

Comments
 (0)