Skip to content

Commit f7f625b

Browse files
authored
Remove unused API paths (#389)
- This will enable auto-generation of OpenAPI documentation - These paths were not exposed to API consumers - Some tests incorrectly relied on them
1 parent 4369963 commit f7f625b

File tree

10 files changed

+55
-76
lines changed

10 files changed

+55
-76
lines changed

klass-api/src/main/java/no/ssb/klass/api/controllers/ClassificationController.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.slf4j.Logger;
2323
import org.slf4j.LoggerFactory;
2424
import org.springframework.beans.factory.annotation.Autowired;
25-
import org.springframework.beans.factory.annotation.Value;
2625
import org.springframework.data.domain.Page;
2726
import org.springframework.data.domain.Pageable;
2827
import org.springframework.data.solr.core.query.result.FacetAndHighlightPage;
@@ -54,9 +53,7 @@
5453
import static java.util.stream.Collectors.toList;
5554

5655
@RestController
57-
// NOTE: CrossOrigin config moved to KlassSecurityConfiguration
58-
// due to conditional behavior where some requests didn't get CORS headers and cause cache problems
59-
@RequestMapping(value = {RestConstants.PREFIX_AND_API_VERSION_V1, RestConstants.API_VERSION_V1, "/rest/v1"},
56+
@RequestMapping(value = {RestConstants.CONTEXT_AND_VERSION_V1},
6057
produces = {MediaTypes.HAL_JSON_VALUE, "application/*", "text/csv"})
6158
public class ClassificationController {
6259
private static final Logger log = LoggerFactory.getLogger(ClassificationController.class);
@@ -66,9 +63,6 @@ public class ClassificationController {
6663
private final StatisticsService statisticsService;
6764
private final CsvFieldsValidator csvFieldsValidator;
6865

69-
@Value("${spring.data.rest.base-path:}")
70-
private String basePath;
71-
7266
@Autowired
7367
public ClassificationController(ClassificationService classificationService,
7468
SubscriberService subscriberService,

klass-api/src/main/java/no/ssb/klass/api/filters/AccessFilter.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
package no.ssb.klass.api.filters;
22

3-
import no.ssb.klass.api.controllers.PingController;
43
import no.ssb.klass.api.util.RestConstants;
54

6-
import javax.servlet.Filter;
7-
import javax.servlet.FilterChain;
8-
import javax.servlet.ServletException;
9-
import javax.servlet.ServletRequest;
10-
import javax.servlet.ServletResponse;
5+
import javax.servlet.*;
116
import javax.servlet.annotation.WebFilter;
127
import javax.servlet.http.HttpServletRequest;
138
import javax.servlet.http.HttpServletResponse;
@@ -28,7 +23,7 @@ public void doFilter(ServletRequest request,
2823

2924
if (path.startsWith(RestConstants.API_VERSION_V1)) {
3025

31-
if (path.startsWith(RestConstants.PREFIX_AND_API_VERSION_V1)) {
26+
if (path.startsWith(RestConstants.CONTEXT_AND_VERSION_V1)) {
3227
res.addHeader("Access-Control-Allow-Origin", "*");
3328
res.addHeader("Vary", "Accept");
3429
res.addHeader("Vary", "X-Forwarded-Proto");

klass-api/src/main/java/no/ssb/klass/api/util/RestConstants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ private RestConstants() {
77

88
public static final String DATE_FORMAT = "yyyy-MM-dd";
99
public static final String API_VERSION_V1 = "/v1";
10-
public static final String PREFIX_AND_API_VERSION_V1 = "/api/klass/v1";
10+
public static final String CONTEXT_PATH = "/api/klass";
11+
public static final String CONTEXT_AND_VERSION_V1 = CONTEXT_PATH + API_VERSION_V1;
1112
}

klass-api/src/main/resources/application.properties

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,6 @@ spring.mvc.view.suffix=.jsp
9090
klass.env.client.klass-mail.url=http://localhost:8082
9191
# hibernate config
9292
spring.jpa.properties.hibernate.session_factory.interceptor=no.ssb.klass.core.util.BaseEntityInterceptor
93-
#context path for API docs
94-
klass.env.api.path=/api/klass
9593
# Spring Boot 2.1 disabled bean overriding by default as a defensive approach.
9694
# But we need to override some beans in our tests, so we need to enable it.
9795
spring.main.allow-bean-definition-overriding=true

klass-api/src/test/java/no/ssb/klass/api/ApiDocumentation.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.junit.jupiter.api.Test;
2323
import org.junit.jupiter.api.extension.ExtendWith;
2424
import org.springframework.beans.factory.annotation.Autowired;
25-
import org.springframework.beans.factory.annotation.Value;
2625
import org.springframework.boot.test.context.SpringBootTest;
2726
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
2827
import org.springframework.data.domain.Page;
@@ -95,8 +94,6 @@ public class ApiDocumentation {
9594

9695
private String server = "data.ssb.no";
9796
private int port = 443;
98-
@Value("${klass.env.api.path}")
99-
private String contextPath;
10097

10198
@BeforeEach
10299
public void setup(RestDocumentationContextProvider restDocumentation) {
@@ -1217,15 +1214,13 @@ private URI toUri(String url) {
12171214
public MockHttpServletRequestBuilder getWithContext(String urlTemplate,
12181215
Object... urlVariables) {
12191216
return MockMvcRequestBuilders
1220-
.get(contextPath + RestConstants.API_VERSION_V1 + urlTemplate, urlVariables)
1221-
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate)
1222-
.contextPath(contextPath);
1217+
.get(RestConstants.CONTEXT_AND_VERSION_V1 + urlTemplate, urlVariables)
1218+
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
12231219
}
12241220

12251221
public MockHttpServletRequestBuilder getWithContextUri(String url) {
1226-
return MockMvcRequestBuilders.get(toUri(contextPath + RestConstants.API_VERSION_V1 + url))
1227-
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, url)
1228-
.contextPath(contextPath);
1222+
return MockMvcRequestBuilders.get(toUri(RestConstants.CONTEXT_AND_VERSION_V1 + url))
1223+
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, url);
12291224
}
12301225

12311226
private Page<SolrSearchResult> createSearchPage(Pageable pageable) {

klass-api/src/test/java/no/ssb/klass/api/applicationtest/AbstractRestApiApplicationTest.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
import no.ssb.klass.api.applicationtest.utils.ApplicationTestUtil;
66
import no.ssb.klass.api.util.RestConstants;
77
import no.ssb.klass.core.config.ConfigurationProfiles;
8-
import no.ssb.klass.core.model.*;
8+
import no.ssb.klass.core.model.ClassificationFamily;
9+
import no.ssb.klass.core.model.ClassificationSeries;
10+
import no.ssb.klass.core.model.CorrespondenceTable;
11+
import no.ssb.klass.core.model.User;
912
import no.ssb.klass.core.repository.ClassificationFamilyRepository;
1013
import no.ssb.klass.core.repository.ClassificationSeriesRepository;
1114
import no.ssb.klass.core.repository.CorrespondenceTableRepository;
@@ -47,7 +50,7 @@ public abstract class AbstractRestApiApplicationTest {
4750

4851
public static final String CONTENT_TYPE_CSV = "text/csv";
4952

50-
public static final String REQUEST = RestConstants.API_VERSION_V1 + "/classifications";
53+
public static final String REQUEST = RestConstants.CONTEXT_AND_VERSION_V1 + "/classifications";
5154
public static final String REQUEST_WITH_ID = REQUEST + "/{classificationId}";
5255
public static final String REQUEST_SEARCH = REQUEST + "/search";
5356
public static final String REQUEST_WITH_ID_AND_CODES = REQUEST + "/{classificationId}/codes";
@@ -57,15 +60,15 @@ public abstract class AbstractRestApiApplicationTest {
5760
public static final String REQUEST_WITH_ID_AND_CORRESPONDS = REQUEST + "/{classificationId}/corresponds";
5861
public static final String REQUEST_WITH_ID_AND_CORRESPONDS_AT = REQUEST + "/{classificationId}/correspondsAt";
5962

60-
public static final String REQUEST_CORRESPONDENCE_TABLES = RestConstants.API_VERSION_V1
63+
public static final String REQUEST_CORRESPONDENCE_TABLES = RestConstants.CONTEXT_AND_VERSION_V1
6164
+ "/correspondencetables/{correspondencetablesId}";
6265

63-
public static final String REQUEST_VERSIONS_WITH_ID = RestConstants.API_VERSION_V1
66+
public static final String REQUEST_VERSIONS_WITH_ID = RestConstants.CONTEXT_AND_VERSION_V1
6467
+ "/versions/{versionsId}";
6568

66-
public static final String REQUEST_SSB_SECTION = RestConstants.API_VERSION_V1 + "/ssbsections";
69+
public static final String REQUEST_SSB_SECTION = RestConstants.CONTEXT_AND_VERSION_V1 + "/ssbsections";
6770

68-
public static final String REQUEST_CLASSIFICATION_FAMILY = RestConstants.API_VERSION_V1 + "/classificationfamilies";
71+
public static final String REQUEST_CLASSIFICATION_FAMILY = RestConstants.CONTEXT_AND_VERSION_V1 + "/classificationfamilies";
6972
public static final String REQUEST_CLASSIFICATION_FAMILY_WITH_ID = REQUEST_CLASSIFICATION_FAMILY
7073
+ "/{classificationfamilyId}";
7174

@@ -163,7 +166,7 @@ public void prepareTestData() {
163166
classificationFamily.addClassificationSeries(familieGrupperingCodelist);
164167
classificationService.saveAndIndexClassification(familieGrupperingCodelist);
165168

166-
badmintonCodelist = TestDataProvider.createBadmintonCodelist(user,user2, user3);
169+
badmintonCodelist = TestDataProvider.createBadmintonCodelist(user, user2, user3);
167170
classificationFamily.addClassificationSeries(badmintonCodelist);
168171
classificationService.saveAndIndexClassification(badmintonCodelist);
169172

klass-api/src/test/java/no/ssb/klass/api/applicationtest/RestApiDraftIntegrationTest.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
package no.ssb.klass.api.applicationtest;
22

3-
import static io.restassured.RestAssured.*;
4-
import static org.hamcrest.Matchers.*;
5-
6-
import no.ssb.klass.testutil.TestDataProvider;
7-
import org.junit.jupiter.api.BeforeEach;
8-
import org.junit.jupiter.api.Test;
9-
import org.springframework.http.HttpStatus;
10-
113
import io.restassured.http.ContentType;
12-
4+
import no.ssb.klass.api.util.RestConstants;
135
import no.ssb.klass.core.model.ClassificationFamily;
146
import no.ssb.klass.core.model.ClassificationVariant;
157
import no.ssb.klass.core.model.User;
168
import no.ssb.klass.core.util.DraftUtil;
17-
import no.ssb.klass.api.util.RestConstants;
9+
import no.ssb.klass.testutil.TestDataProvider;
1810
import no.ssb.klass.testutil.TestUtil;
11+
import org.junit.jupiter.api.BeforeEach;
12+
import org.junit.jupiter.api.Test;
13+
import org.springframework.http.HttpStatus;
14+
15+
import static io.restassured.RestAssured.given;
16+
import static org.hamcrest.Matchers.hasSize;
1917

2018
/**
2119
* @author Mads Lundemo, SSB.
@@ -85,7 +83,7 @@ public void testThatDraftVersionIncludeFutureVersionIsNotExposed() {
8583
@Test
8684
public void testThatDraftVariantIsNotExposed() {
8785
given().port(port).accept(ContentType.JSON)
88-
.get(RestConstants.API_VERSION_V1 + "/versions/" + familieGrupperingCodelist.getClassificationVersions().get(0).getId())
86+
.get(RestConstants.CONTEXT_AND_VERSION_V1 + "/versions/" + familieGrupperingCodelist.getClassificationVersions().get(0).getId())
8987
// .prettyPeek()
9088
.then()
9189
.statusCode(HttpStatus.OK.value())
@@ -97,7 +95,7 @@ public void testThatDraftVariantIsNotExposed() {
9795
@Test
9896
public void testThatDraftVariantIncludeFutureVersionIsNotExposed() {
9997
given().port(port).accept(ContentType.JSON).param("includeFuture", true)
100-
.get(RestConstants.API_VERSION_V1 + "/versions/" + familieGrupperingCodelist.getClassificationVersions().get(0).getId())
98+
.get(RestConstants.CONTEXT_AND_VERSION_V1 + "/versions/" + familieGrupperingCodelist.getClassificationVersions().get(0).getId())
10199
// .prettyPeek()
102100
.then()
103101
.statusCode(HttpStatus.OK.value())
@@ -110,7 +108,7 @@ public void testThatDraftVariantIncludeFutureVersionIsNotExposed() {
110108
@Test
111109
public void testThatDraftCorrespondenceIsNotExposed() {
112110
given().port(port).accept(ContentType.JSON)
113-
.get(RestConstants.API_VERSION_V1 + "/versions/" + kommuneinndeling.getClassificationVersions().get(0).getId())
111+
.get(RestConstants.CONTEXT_AND_VERSION_V1 + "/versions/" + kommuneinndeling.getClassificationVersions().get(0).getId())
114112
// .prettyPeek()
115113
.then()
116114
.statusCode(HttpStatus.OK.value())
@@ -122,7 +120,7 @@ public void testThatDraftCorrespondenceIsNotExposed() {
122120
@Test
123121
public void testThatDraftCorrespondenceIncludeFutureVersionIsNotExposed() {
124122
given().port(port).accept(ContentType.JSON).param("includeFuture", true)
125-
.get(RestConstants.API_VERSION_V1 + "/versions/" + kommuneinndeling.getClassificationVersions().get(0).getId())
123+
.get(RestConstants.CONTEXT_AND_VERSION_V1 + "/versions/" + kommuneinndeling.getClassificationVersions().get(0).getId())
126124
// .prettyPeek()
127125
.then()
128126
.statusCode(HttpStatus.OK.value())

klass-api/src/test/java/no/ssb/klass/api/dto/hal/ClassificationResourceTest.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
package no.ssb.klass.api.dto.hal;
22

3-
import static org.junit.jupiter.api.Assertions.*;
4-
3+
import no.ssb.klass.api.util.RestConstants;
4+
import no.ssb.klass.core.model.ClassificationSeries;
5+
import no.ssb.klass.core.model.Language;
6+
import no.ssb.klass.testutil.TestUtil;
57
import org.junit.jupiter.api.BeforeEach;
68
import org.junit.jupiter.api.Test;
79
import org.springframework.mock.web.MockHttpServletRequest;
810
import org.springframework.web.context.request.RequestContextHolder;
911
import org.springframework.web.context.request.ServletRequestAttributes;
1012

11-
import no.ssb.klass.core.model.ClassificationSeries;
12-
import no.ssb.klass.core.model.Language;
13-
import no.ssb.klass.api.util.RestConstants;
14-
import no.ssb.klass.testutil.TestUtil;
13+
import static org.junit.jupiter.api.Assertions.assertEquals;
1514

1615
public class ClassificationResourceTest {
1716

@@ -25,24 +24,23 @@ public void create() {
2524
// given
2625
final long id = 1;
2726
final String name = "name";
28-
final String basePath = "/api/klass";
2927

3028
// when
3129
ClassificationResource subject = new ClassificationResource(createClassification(id, name), Language
3230
.getDefault(), null, "320");
3331

3432
// then
3533
assertEquals(name, subject.getName());
36-
assertEquals("http://localhost" + basePath + RestConstants.API_VERSION_V1 + "/classifications/" + id, subject.getLink("self").orElseThrow(() ->
34+
assertEquals("http://localhost" + RestConstants.CONTEXT_AND_VERSION_V1 + "/classifications/" + id, subject.getLink("self").orElseThrow(() ->
3735
new RuntimeException("No link found")).getHref());
38-
assertEquals("http://localhost" + basePath + RestConstants.API_VERSION_V1 + "/classifications/" + id + "/variant"
39-
+ "{?variantName,from=<yyyy-MM-dd>,to=<yyyy-MM-dd>,csvSeparator,level,selectCodes,presentationNamePattern}",
36+
assertEquals("http://localhost" + RestConstants.CONTEXT_AND_VERSION_V1 + "/classifications/" + id + "/variant"
37+
+ "{?variantName,from=<yyyy-MM-dd>,to=<yyyy-MM-dd>,csvSeparator,level,selectCodes,presentationNamePattern}",
4038
subject.getLink("variant").orElseThrow(() ->
41-
new RuntimeException("No link found")).getHref());
42-
assertEquals("http://localhost" + basePath + RestConstants.API_VERSION_V1 + "/classifications/" + id + "/variantAt"
43-
+ "{?variantName,date=<yyyy-MM-dd>,csvSeparator,level,selectCodes,presentationNamePattern}",
39+
new RuntimeException("No link found")).getHref());
40+
assertEquals("http://localhost" + RestConstants.CONTEXT_AND_VERSION_V1 + "/classifications/" + id + "/variantAt"
41+
+ "{?variantName,date=<yyyy-MM-dd>,csvSeparator,level,selectCodes,presentationNamePattern}",
4442
subject.getLink("variantAt").orElseThrow(() ->
45-
new RuntimeException("No link found")).getHref());
43+
new RuntimeException("No link found")).getHref());
4644
assertEquals(0, subject.getVersions().size());
4745
}
4846

klass-api/src/test/java/no/ssb/klass/api/dto/hal/ClassificationVersionResourceTest.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
11
package no.ssb.klass.api.dto.hal;
22

3-
import static org.junit.jupiter.api.Assertions.*;
4-
5-
import java.util.LinkedList;
6-
import java.util.List;
7-
3+
import com.google.common.collect.Lists;
4+
import no.ssb.klass.api.util.RestConstants;
5+
import no.ssb.klass.core.model.ClassificationVersion;
6+
import no.ssb.klass.core.model.Language;
7+
import no.ssb.klass.testutil.TestUtil;
88
import org.junit.jupiter.api.BeforeEach;
99
import org.junit.jupiter.api.Test;
1010
import org.springframework.mock.web.MockHttpServletRequest;
1111
import org.springframework.web.context.request.RequestContextHolder;
1212
import org.springframework.web.context.request.ServletRequestAttributes;
1313

14-
import com.google.common.collect.Lists;
14+
import java.util.LinkedList;
15+
import java.util.List;
1516

16-
import no.ssb.klass.core.model.ClassificationVersion;
17-
import no.ssb.klass.core.model.Language;
18-
import no.ssb.klass.api.util.RestConstants;
19-
import no.ssb.klass.testutil.TestUtil;
17+
import static org.junit.jupiter.api.Assertions.assertEquals;
2018

2119
public class ClassificationVersionResourceTest {
2220

@@ -37,8 +35,8 @@ public void create() {
3735

3836
// then
3937
assertEquals(1, subject.getLinks().toList().size());
40-
assertEquals("http://localhost/api/klass" + RestConstants.API_VERSION_V1 + "/versions/1",
41-
subject.getLink("self").orElseThrow(() ->new RuntimeException("No link found")).getHref());
38+
assertEquals("http://localhost" + RestConstants.CONTEXT_AND_VERSION_V1 + "/versions/1",
39+
subject.getLink("self").orElseThrow(() -> new RuntimeException("No link found")).getHref());
4240
assertEquals(version.getName(Language.getDefault()), subject.getName());
4341
}
4442

klass-api/src/test/java/no/ssb/klass/api/migration/KlassApiMigrationClient.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,13 @@ public class KlassApiMigrationClient {
2121
public KlassApiMigrationClient() {
2222
this.sourceApi = new RequestSpecBuilder()
2323
.setBaseUri(sourceHost)
24-
.setBasePath(BASE_PATH + RestConstants.API_VERSION_V1)
24+
.setBasePath(RestConstants.CONTEXT_AND_VERSION_V1)
2525
.build();
2626

2727

28-
2928
this.targetApi = new RequestSpecBuilder()
3029
.setBaseUri(targetHost)
31-
.setBasePath(BASE_PATH + RestConstants.API_VERSION_V1)
30+
.setBasePath(RestConstants.CONTEXT_AND_VERSION_V1)
3231
.build();
3332
}
3433

0 commit comments

Comments
 (0)