Skip to content

Commit cb897a7

Browse files
committed
Rm-5752: add x-expiry-time to POST response
1 parent 9c27b4f commit cb897a7

File tree

11 files changed

+91
-89
lines changed

11 files changed

+91
-89
lines changed

.gitlab-ci.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ variables:
1010
tags:
1111
- dind
1212
rules:
13-
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
14-
when: on_success
15-
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
16-
when: on_success
13+
# TODO: Building from Dockerfile is deprecated, use buildpacks instead, see build-images.sh
14+
# - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
15+
# when: on_success
16+
# - if: $CI_PIPELINE_SOURCE == "merge_request_event"
17+
# when: on_success
1718
- when: never
1819
script:
1920
- |

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# Changelog
22

3+
## [1.5.0] Add `x-expiry-time` header to `POST /key-capsules/{transactionId}` response (2025-06-09)
4+
5+
### Features
6+
* Add `x-expiry-time` header to `POST` `/key-capsules/{transactionId}` result as specified in [cdoc2-key-capsules 2.2.0 OAS](https://github.com/open-eid/cdoc2-openapi)
7+
8+
### Internal
9+
* Use `spring-boot-dependencies` BOM for `cdoc2-server` parent POM for easier version alignment with `cdoc2-put-server` and `cdoc2-get-server` that use `spring-boot-starter-parent` parent
10+
* Update `spring-boot` version `3.4.3` -> `3.5.0`
11+
* Update `org.bouncycastle:bcpkix-jdk18on` version `1.80` -> `1.81`
12+
13+
314
## [1.4.2] Return `x-expiry-time` header to `GET /key-capsules/{transactionId}` (2025-03-27)
415

516
### Bugfixes

cdoc2-shared-crypto/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>ee.cyber.cdoc2</groupId>
88
<artifactId>cdoc2-shared-crypto</artifactId>
9-
<version>0.2.1</version>
9+
<version>0.2.2</version>
1010
<description>CDOC2 common crypto functions shared between lib and server</description>
1111
<packaging>jar</packaging>
1212

@@ -16,8 +16,8 @@
1616
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1717

1818

19-
<bouncycastle.version>1.80</bouncycastle.version>
20-
<logback.version>1.5.16</logback.version>
19+
<bouncycastle.version>1.81</bouncycastle.version>
20+
<logback.version>1.5.18</logback.version>
2121
</properties>
2222

2323
<profiles>

get-server/pom.xml

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
<parent>
66
<groupId>org.springframework.boot</groupId>
77
<artifactId>spring-boot-starter-parent</artifactId>
8-
<version>3.4.3</version>
8+
<version>3.5.0</version>
99
<relativePath /> <!-- lookup parent from repository -->
1010
</parent>
1111

1212
<artifactId>cdoc2-get-server</artifactId>
1313
<groupId>ee.cyber.cdoc2</groupId>
14-
<version>1.4.2</version>
14+
<version>1.5.0</version>
1515
<packaging>jar</packaging>
1616

1717
<name>cdoc2-get-server</name>
@@ -24,11 +24,7 @@
2424

2525
<tests>!(pkcs11 | slow)</tests>
2626

27-
<spring-boot.version>3.4.3</spring-boot.version>
28-
<org-testcontainers.version>1.20.6</org-testcontainers.version>
29-
<micrometer.version>1.14.4</micrometer.version>
30-
<!-- https://docs.spring.io/spring-boot/appendix/dependency-versions/coordinates.html-->
31-
<logback.version>1.5.16</logback.version>
27+
<spring-boot.version>3.5.0</spring-boot.version>
3228
</properties>
3329

3430
<profiles>
@@ -74,7 +70,7 @@
7470
<dependency>
7571
<groupId>ee.cyber.cdoc2</groupId>
7672
<artifactId>cdoc2-common-server</artifactId>
77-
<version>2.2.0</version>
73+
<version>2.2.1</version>
7874
<type>test-jar</type>
7975
<scope>test</scope>
8076
</dependency>
@@ -200,19 +196,19 @@
200196
<dependency>
201197
<groupId>ee.cyber.cdoc2</groupId>
202198
<artifactId>cdoc2-common-server</artifactId>
203-
<version>2.2.0</version>
199+
<version>2.2.1</version>
204200
</dependency>
205201

206202
<dependency>
207203
<groupId>ee.cyber.cdoc2</groupId>
208204
<artifactId>cdoc2-server-db</artifactId>
209-
<version>2.2.1</version>
205+
<version>2.2.2</version>
210206
</dependency>
211207

212208
<dependency>
213209
<groupId>ee.cyber.cdoc2</groupId>
214210
<artifactId>cdoc2-server-openapi</artifactId>
215-
<version>0.1.1</version>
211+
<version>0.2.0</version>
216212
</dependency>
217213

218214
<dependency>
@@ -239,32 +235,27 @@
239235
<dependency>
240236
<groupId>io.micrometer</groupId>
241237
<artifactId>micrometer-registry-prometheus</artifactId>
242-
<version>${micrometer.version}</version>
243238
<scope>runtime</scope>
244239
</dependency>
245240

246241
<dependency>
247242
<groupId>org.springframework.boot</groupId>
248243
<artifactId>spring-boot-starter-test</artifactId>
249-
<version>${spring-boot.version}</version>
250244
<scope>test</scope>
251245
</dependency>
252246
<dependency>
253247
<groupId>org.springframework.boot</groupId>
254248
<artifactId>spring-boot-test</artifactId>
255-
<version>${spring-boot.version}</version>
256249
<scope>test</scope>
257250
</dependency>
258251
<dependency>
259252
<groupId>org.testcontainers</groupId>
260253
<artifactId>junit-jupiter</artifactId>
261-
<version>${org-testcontainers.version}</version>
262254
<scope>test</scope>
263255
</dependency>
264256
<dependency>
265257
<groupId>org.testcontainers</groupId>
266258
<artifactId>postgresql</artifactId>
267-
<version>${org-testcontainers.version}</version>
268259
<scope>test</scope>
269260
</dependency>
270261
<dependency>
@@ -276,7 +267,6 @@
276267
<dependency>
277268
<groupId>org.apache.httpcomponents.client5</groupId>
278269
<artifactId>httpclient5</artifactId>
279-
<version>5.4.2</version>
280270
<scope>test</scope>
281271
</dependency>
282272
</dependencies>

pom.xml

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<artifactId>cdoc2-server</artifactId>
66
<groupId>ee.cyber.cdoc2</groupId>
7-
<version>1.4.1</version>
7+
<version>1.4.2</version>
88

99
<description>CDOC2 server pom</description>
1010

@@ -32,14 +32,18 @@
3232
<!-- ldap test require connection to external esteid.ldap.sk.ee server -->
3333
<tests>!(pkcs11 | slow | ldap)</tests>
3434

35-
<!-- versions of dependencies has to correspond with spring boot version-->
36-
<!-- https://docs.spring.io/spring-boot/docs/current/reference/html/dependency-versions.html-->
37-
<junit-jupiter.version>5.11.4</junit-jupiter.version>
38-
<lombok.version>1.18.36</lombok.version>
39-
<logback-classic.version>1.5.16</logback-classic.version>
35+
<junit-jupiter.version>5.12.2</junit-jupiter.version>
36+
37+
<!-- versions for spring-boot dependencies are defined here: -->
38+
<!-- https://docs.spring.io/spring-boot/appendix/dependency-versions/coordinates.html -->
39+
<spring-boot.version>3.5.0</spring-boot.version>
40+
41+
<!-- to override spring-boot dependency version, find its name from
42+
https://docs.spring.io/spring-boot/appendix/dependency-versions/properties.html
43+
-->
44+
45+
4046
<exec-maven-plugin.version>3.4.10</exec-maven-plugin.version>
41-
<spring-boot.version>3.4.3</spring-boot.version>
42-
<spring.version>6.2.3</spring.version>
4347

4448
</properties>
4549

@@ -160,9 +164,21 @@
160164
<type>pom</type>
161165
<scope>import</scope>
162166
</dependency>
167+
168+
<!-- For dependencies, use versions from spring-boot-dependencies BOM
169+
170+
https://docs.spring.io/spring-boot/appendix/dependency-versions/coordinates.html -->
171+
<dependency>
172+
<groupId>org.springframework.boot</groupId>
173+
<artifactId>spring-boot-dependencies</artifactId>
174+
<version>${spring-boot.version}</version>
175+
<type>pom</type>
176+
<scope>import</scope>
177+
</dependency>
163178
</dependencies>
164179
</dependencyManagement>
165180

181+
166182
<repositories>
167183
<!-- configure repositories in settings.xml -->
168184
<!--

put-server/pom.xml

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
<parent>
66
<groupId>org.springframework.boot</groupId>
77
<artifactId>spring-boot-starter-parent</artifactId>
8-
<version>3.4.3</version>
8+
<version>3.5.0</version>
99
<relativePath /> <!-- lookup parent from repository -->
1010
</parent>
1111

1212
<artifactId>cdoc2-put-server</artifactId>
1313
<groupId>ee.cyber.cdoc2</groupId>
14-
<version>1.4.2</version>
14+
<version>1.5.0</version>
1515
<packaging>jar</packaging>
1616

1717
<name>cdoc2-put-server</name>
@@ -24,11 +24,8 @@
2424

2525
<tests>!(pkcs11 | slow)</tests>
2626

27-
<spring-boot.version>3.4.3</spring-boot.version>
28-
<org-testcontainers.version>1.20.6</org-testcontainers.version>
29-
<micrometer.version>1.14.4</micrometer.version>
27+
<spring-boot.version>3.5.0</spring-boot.version>
3028
<!-- https://docs.spring.io/spring-boot/appendix/dependency-versions/coordinates.html-->
31-
<logback.version>1.5.16</logback.version>
3229
</properties>
3330

3431
<profiles>
@@ -75,7 +72,7 @@
7572
<dependency>
7673
<groupId>ee.cyber.cdoc2</groupId>
7774
<artifactId>cdoc2-common-server</artifactId>
78-
<version>2.2.0</version>
75+
<version>2.2.1</version>
7976
<type>test-jar</type>
8077
<scope>test</scope>
8178
</dependency>
@@ -201,26 +198,25 @@
201198
<dependency>
202199
<groupId>ee.cyber.cdoc2</groupId>
203200
<artifactId>cdoc2-server-openapi</artifactId>
204-
<version>0.1.1</version>
201+
<version>0.2.0</version>
205202
</dependency>
206203

207204

208205
<dependency>
209206
<groupId>ee.cyber.cdoc2</groupId>
210207
<artifactId>cdoc2-common-server</artifactId>
211-
<version>2.2.0</version>
208+
<version>2.2.1</version>
212209
</dependency>
213210

214211
<dependency>
215212
<groupId>ee.cyber.cdoc2</groupId>
216213
<artifactId>cdoc2-server-db</artifactId>
217-
<version>2.2.1</version>
214+
<version>2.2.2</version>
218215
</dependency>
219216

220217
<dependency>
221218
<groupId>org.springframework.boot</groupId>
222219
<artifactId>spring-boot-starter</artifactId>
223-
<version>${spring-boot.version}</version>
224220
</dependency>
225221

226222
<!--
@@ -241,32 +237,27 @@
241237
<dependency>
242238
<groupId>io.micrometer</groupId>
243239
<artifactId>micrometer-registry-prometheus</artifactId>
244-
<version>${micrometer.version}</version>
245240
<scope>runtime</scope>
246241
</dependency>
247242

248243
<dependency>
249244
<groupId>org.springframework.boot</groupId>
250245
<artifactId>spring-boot-starter-test</artifactId>
251-
<version>${spring-boot.version}</version>
252246
<scope>test</scope>
253247
</dependency>
254248
<dependency>
255249
<groupId>org.springframework.boot</groupId>
256250
<artifactId>spring-boot-test</artifactId>
257-
<version>${spring-boot.version}</version>
258251
<scope>test</scope>
259252
</dependency>
260253
<dependency>
261254
<groupId>org.testcontainers</groupId>
262255
<artifactId>junit-jupiter</artifactId>
263-
<version>${org-testcontainers.version}</version>
264256
<scope>test</scope>
265257
</dependency>
266258
<dependency>
267259
<groupId>org.testcontainers</groupId>
268260
<artifactId>postgresql</artifactId>
269-
<version>${org-testcontainers.version}</version>
270261
<scope>test</scope>
271262
</dependency>
272263
<dependency>
@@ -278,7 +269,6 @@
278269
<dependency>
279270
<groupId>org.apache.httpcomponents.client5</groupId>
280271
<artifactId>httpclient5</artifactId>
281-
<version>5.4.2</version>
282272
<scope>test</scope>
283273
</dependency>
284274

put-server/src/main/java/ee/cyber/cdoc2/server/api/CreateKeyCapsuleApi.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package ee.cyber.cdoc2.server.api;
22

3+
import ee.cyber.cdoc2.server.Constants;
34
import ee.cyber.cdoc2.server.config.KeyCapsuleConfigProperties;
45
import ee.cyber.cdoc2.server.generated.model.Capsule;
56
import ee.cyber.cdoc2.server.generated.api.KeyCapsulesApi;
@@ -12,6 +13,7 @@
1213
import java.time.LocalDateTime;
1314
import java.time.OffsetDateTime;
1415
import java.time.ZoneOffset;
16+
import java.time.format.DateTimeFormatter;
1517
import java.util.Base64;
1618
import java.util.Optional;
1719

@@ -78,7 +80,10 @@ public ResponseEntity<Void> createCapsule(
7880

7981
URI created = getResourceLocation(saved.getTransactionId());
8082

81-
return ResponseEntity.created(created).build();
83+
return ResponseEntity
84+
.created(created)
85+
.header(Constants.X_EXPIRY_TIME_HEADER, DateTimeFormatter.ISO_INSTANT.format(saved.getExpiryTime()))
86+
.build();
8287
} catch (Exception e) {
8388
log.error(
8489
"Failed to save key capsule(type={}, recipient={}, payloadLength={})",

put-server/src/test/java/ee/cyber/cdoc2/server/CreateKeyCapsuleApiTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@
99
import java.time.Instant;
1010
import java.time.LocalDateTime;
1111
import java.time.ZoneOffset;
12+
import java.time.format.DateTimeFormatter;
1213
import java.time.temporal.ChronoUnit;
1314
import java.util.Optional;
1415
import java.util.UUID;
1516

17+
import lombok.extern.slf4j.Slf4j;
1618
import org.junit.jupiter.api.Test;
1719
import org.springframework.beans.factory.annotation.Autowired;
1820
import org.springframework.http.HttpStatus;
@@ -33,7 +35,7 @@
3335
import static org.junit.jupiter.api.Assertions.assertThrows;
3436
import static org.junit.jupiter.api.Assertions.assertTrue;
3537

36-
38+
@Slf4j
3739
class CreateKeyCapsuleApiTest extends KeyCapsuleIntegrationTest {
3840

3941
@Autowired
@@ -142,6 +144,11 @@ private void assertCapsuleCreateRequestIsSuccessful(
142144
ResponseEntity<Void> response
143145
= api.createCapsule(rsaCapsule, requestExpiryTime);
144146
assertEquals(HttpStatus.CREATED, response.getStatusCode());
147+
assertTrue(response.getHeaders().containsKey(Constants.X_EXPIRY_TIME_HEADER));
148+
149+
log.debug("POST expiry-time {}", response.getHeaders().get(Constants.X_EXPIRY_TIME_HEADER));
150+
//no exception means that x-expiry-time is formatted correctly
151+
DateTimeFormatter.ISO_INSTANT.parse(response.getHeaders().get(Constants.X_EXPIRY_TIME_HEADER).get(0));
145152
}
146153

147154
private KeyCapsuleDb assertCapsuleCreatedInDb(Capsule capsule) {

0 commit comments

Comments
 (0)