Build Logs

pjfanning/pekko-http-session • 3.8.0-RC3:2025-12-04

Errors

0

Warnings

11

Total Lines

468

1##################################
2Clonning https://github.com/pjfanning/pekko-http-session.git into /build/repo using revision v0.8.0
3##################################
4Note: switching to '00261a6d7af307880512ebc7329ca07f829479dc'.
5
6You are in 'detached HEAD' state. You can look around, make experimental
7changes and commit them, and you can discard any commits you make in this
8state without impacting any branches by switching back to a branch.
9
10If you want to create a new branch to retain commits you create, you may
11do so (now or later) by using -c with the switch command. Example:
12
13 git switch -c <new-branch-name>
14
15Or undo this operation with:
16
17 git switch -
18
19Turn off this advice by setting config variable advice.detachedHead to false
20
21Would override fixed Scala version: 3.3.0
22----
23Preparing build for 3.8.0-RC3
24Scala binary version found: 3.8
25Implicitly using source version 3.8
26Scala binary version found: 3.8
27Implicitly using source version 3.8
28Would try to apply common scalacOption (best-effort, sbt/mill only):
29Append: ,REQUIRE:-source:3.8
30Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
31
32Try apply source patch:
33Path: build.sbt
34Pattern: val scala3 = "3.3.0"
35Replacement: val scala3 = "3.8.0-RC3"
36Starting compilation server
37Compiling project (Scala 3.7.3, JVM (17))
38Compiled project (Scala 3.7.3, JVM (17))
39Successfully applied pattern 'val scala3 = "3.3.0"' in build.sbt
40----
41Starting build for 3.8.0-RC3
42Execute tests: true
43sbt project found:
44Sbt version 1.9.3 is not supported, minimal supported version is 1.11.5
45Enforcing usage of sbt in version 1.11.5
46No prepare script found for project pjfanning/pekko-http-session
47##################################
48Scala version: 3.8.0-RC3
49Targets: com.github.pjfanning%pekko-http-session-core com.github.pjfanning%pekko-http-session-jwt
50Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.0\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}
51##################################
52Using extra scalacOptions: ,REQUIRE:-source:3.8
53Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
54[sbt_options] declare -a sbt_options=()
55[process_args] java_version = '17'
56[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
57# Executing command line:
58java
59-Dfile.encoding=UTF-8
60-Dcommunitybuild.scala=3.8.0-RC3
61-Dcommunitybuild.project.dependencies.add=
62-Xmx7G
63-Xms4G
64-Xss8M
65-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
66-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
67-jar
68/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
69"setCrossScalaVersions 3.8.0-RC3"
70"++3.8.0-RC3 -v"
71"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
72"set every credentials := Nil"
73"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
74"removeScalacOptionsStartingWith -P:wartremover"
75
76moduleMappings
77"runBuild 3.8.0-RC3 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.0\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}""" com.github.pjfanning%pekko-http-session-core com.github.pjfanning%pekko-http-session-jwt"
78
79[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
80[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
81[info] loading project definition from /build/repo/project
82[info] compiling 2 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
83[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
84[info] Compilation completed in 9.053s.
85[info] done compiling
86[info] loading settings for project rootProject from build.sbt...
87[info] resolving key references (11378 settings) ...
88[info] set current project to pekko-http-session-root (in build file:/build/repo/)
89Execute setCrossScalaVersions: 3.8.0-RC3
90OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in javaTests/crossScalaVersions
91OpenCB::Changing crossVersion 3.8.0-RC3 -> 3.8.0-RC3 in core3/crossScalaVersions
92OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in core3/crossScalaVersions
93OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in example/crossScalaVersions
94OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in core/crossScalaVersions
95OpenCB::Changing crossVersion 3.8.0-RC3 -> 3.8.0-RC3 in javaTests3/crossScalaVersions
96OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in javaTests3/crossScalaVersions
97OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in rootProject/crossScalaVersions
98OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in jwt/crossScalaVersions
99OpenCB::Changing crossVersion 3.8.0-RC3 -> 3.8.0-RC3 in example3/crossScalaVersions
100OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in example3/crossScalaVersions
101OpenCB::Changing crossVersion 3.8.0-RC3 -> 3.8.0-RC3 in jwt3/crossScalaVersions
102OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in jwt3/crossScalaVersions
103[info] set current project to pekko-http-session-root (in build file:/build/repo/)
104[info] Setting Scala version to 3.8.0-RC3 on 4 projects.
105[info] Switching Scala version on:
106[info] javaTests3 (3.8.0-RC3)
107[info] example3 (3.8.0-RC3)
108[info] core3 (3.8.0-RC3)
109[info] jwt3 (3.8.0-RC3)
110[info] Excluding projects:
111[info] jwt2_12 (2.12.20, 2.12.18)
112[info] javaTests (2.13.11)
113[info] example2_12 (2.12.20, 2.12.18)
114[info] core2_12 (2.12.20, 2.12.18)
115[info] * rootProject (2.13.11)
116[info] jwt (2.13.11)
117[info] javaTests2_12 (2.12.20, 2.12.18)
118[info] core (2.13.11)
119[info] example (2.13.11)
120[info] Reapplying settings...
121[info] set current project to pekko-http-session-root (in build file:/build/repo/)
122Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
123[info] Reapplying settings...
124[info] set current project to pekko-http-session-root (in build file:/build/repo/)
125[info] Defining Global / credentials, core / credentials and 11 others.
126[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 64 others.
127[info] Run `last` for details.
128[info] Reapplying settings...
129[info] set current project to pekko-http-session-root (in build file:/build/repo/)
130Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
131[info] Reapplying settings...
132OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
133
134 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
135 Did you mean javaTests3 / allExcludeDependencies ?
136 , retry without global scopes
137[info] Reapplying settings...
138[info] set current project to pekko-http-session-root (in build file:/build/repo/)
139Execute removeScalacOptionsStartingWith: -P:wartremover
140[info] Reapplying settings...
141[info] set current project to pekko-http-session-root (in build file:/build/repo/)
142[success] Total time: 0 s, completed Dec 4, 2025, 12:48:33 PM
143Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.0\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}
144Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
145Starting build...
146Projects: Set(core3, jwt3)
147Starting build for ProjectRef(file:/build/repo/,core3) (pekko-http-session-core)... [0/2]
148OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
149Compile scalacOptions: -Wconf:msg=can be rewritten automatically under:s, -source:3.8
150[info] compiling 16 Scala sources and 3 Java sources to /build/repo/core/target/jvm-3/classes ...
151[warn] -- [E092] Pattern Match Unchecked Warning: /build/repo/core/src/main/scala/com/github/pjfanning/session/SessionDirectives.scala:154:15
152[warn] 154 | case s: SessionResult.DecodedLegacy[T] =>
153[warn] | ^
154[warn] |the type test for com.github.pjfanning.session.SessionResult.DecodedLegacy[T] cannot be checked at runtime because its type arguments can't be determined from com.github.pjfanning.session.SessionResult[T]
155[warn] |
156[warn] | longer explanation available when compiling with `-explain`
157[warn] there was 1 feature warning; re-run with -feature for details
158[warn] there was 1 deprecation warning; re-run with -deprecation for details
159[warn] three warnings found
160[info] /build/repo/core/src/main/java/com/github/pjfanning/session/javadsl/SessionSerializers.java: SessionSerializers.java uses or overrides a deprecated API.
161[info] /build/repo/core/src/main/java/com/github/pjfanning/session/javadsl/SessionSerializers.java: Recompile with -Xlint:deprecation for details.
162[info] /build/repo/core/src/main/java/com/github/pjfanning/session/javadsl/HttpSessionAwareDirectives.java: Some input files use unchecked or unsafe operations.
163[info] /build/repo/core/src/main/java/com/github/pjfanning/session/javadsl/HttpSessionAwareDirectives.java: Recompile with -Xlint:unchecked for details.
164[info] done compiling
165[info] compiling 9 Scala sources to /build/repo/core/target/jvm-3/test-classes ...
166[info] done compiling
167Storing token for selector: mp9s6j3dvruni9rp, user: Map(k1 -> v1), expires: 1767440957977, now: 1764848957977
168Storing token for selector: 7ob8qt3s1ov4laak, user: Map(k1 -> v1), expires: 1767440958048, now: 1764848958048
169Storing token for selector: el03jvv6en5bs43r, user: Map(k1 -> v1), expires: 1767440958064, now: 1764848958064
170Storing token for selector: c900s4lo6kfqob6q, user: Map(k1 -> v1), expires: 1767440958066, now: 1764848958066
171Storing token for selector: lcq3k0aum7dlj08, user: Map(k1 -> v1), expires: 1767440958073, now: 1764848958073
172Storing token for selector: mnhie19f1bf5bj6l, user: Map(k1 -> v1), expires: 1767440958078, now: 1764848958078
173Storing token for selector: 3p26nj5acqvf38e3, user: Map(k1 -> v1), expires: 1767440958088, now: 1764848958088
174Looking up token for selector: 3p26nj5acqvf38e3, found: true
175Storing token for selector: qr1v65o62lk2ih7m, user: Map(k1 -> v1), expires: 1767440958106, now: 1764848958106
176Running scheduled operation immediately
177Removing token for selector: 3p26nj5acqvf38e3
178Storing token for selector: n8d8b96sh8ci0vjq, user: Map(k1 -> v1), expires: 1767440958115, now: 1764848958115
179Looking up token for selector: n8d8b96sh8ci0vjq, found: true
180Storing token for selector: hoicc82ikve1jlpt, user: Map(k1 -> v1), expires: 1767440958126, now: 1764848958126
181Running scheduled operation immediately
182Removing token for selector: n8d8b96sh8ci0vjq
183Storing token for selector: 9q1h1kn7pffuuq4p, user: Map(k1 -> v1), expires: 1767440958130, now: 1764848958130
184Looking up token for selector: 9q1h1kn7pffuuq4p, found: true
185Storing token for selector: u663bv6npfll51uo, user: Map(k1 -> v1), expires: 1767440958137, now: 1764848958137
186Running scheduled operation immediately
187Removing token for selector: 9q1h1kn7pffuuq4p
188Storing token for selector: srvuupp7mrat0qo2, user: Map(k1 -> v1), expires: 1767440958140, now: 1764848958140
189Storing token for selector: kjnedlbc8uv330h0, user: Map(k1 -> v1), expires: 1767440958149, now: 1764848958149
190Removing token for selector: kjnedlbc8uv330h0
191[INFO] [12/04/2025 12:49:18.174] [pool-18-thread-2] [CoordinatedShutdown(pekko://com-github-pjfanning-session-OneOffSetRefreshableGetTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
192Storing token for selector: gam86gbeaho1ghlg, user: Map(k1 -> v1), expires: 2595028000, now: 1764848958232
193Looking up token for selector: gam86gbeaho1ghlg, found: true
194Storing token for selector: 18qfs1qb4fcdipeg, user: Map(k1 -> v1), expires: 2595098000, now: 1764848958266
195Running scheduled operation immediately
196Removing token for selector: gam86gbeaho1ghlg
197Storing token for selector: b99sb2senqbc60ua, user: Map(k1 -> v1), expires: 2595028000, now: 1764848958269
198Looking up token for selector: b99sb2senqbc60ua, found: true
199Storing token for selector: dv8nat6f007pe87u, user: Map(k1 -> v1), expires: 2595098000, now: 1764848958276
200Running scheduled operation immediately
201Removing token for selector: b99sb2senqbc60ua
202Storing token for selector: 38f15klstjkr0ao9, user: Map(k1 -> v1), expires: 2595028000, now: 1764848958280
203Storing token for selector: g2u6kc1mt4d4m880, user: Map(k1 -> v1), expires: 1767440958285, now: 1764848958285
204Storing token for selector: ib5cervhpag8c61k, user: Map(k1 -> v1), expires: 1767440958292, now: 1764848958292
205Storing token for selector: 20707kn7ltkougae, user: Map(k1 -> v1), expires: 1767440958293, now: 1764848958293
206Storing token for selector: 6lt2fskdnt4fjoh8, user: Map(k1 -> v1), expires: 1767440958295, now: 1764848958295
207Storing token for selector: utnn3etb6gm83va4, user: Map(k1 -> v1), expires: 1767440958299, now: 1764848958299
208Storing token for selector: rgdrkug45frsvoum, user: Map(k1 -> v1), expires: 1767440958302, now: 1764848958303
209Looking up token for selector: rgdrkug45frsvoum, found: true
210Storing token for selector: 22gerd6g7l91q9bc, user: Map(k1 -> v1), expires: 1767440958304, now: 1764848958304
211Running scheduled operation immediately
212Removing token for selector: rgdrkug45frsvoum
213Storing token for selector: 5v707d29hrau15l4, user: Map(k1 -> v1), expires: 1767440958308, now: 1764848958308
214Looking up token for selector: 5v707d29hrau15l4, found: true
215Storing token for selector: o8ak2vutehn7kfqg, user: Map(k1 -> v1), expires: 1767440958310, now: 1764848958310
216Running scheduled operation immediately
217Removing token for selector: 5v707d29hrau15l4
218Storing token for selector: f55oltj3s894an2d, user: Map(k1 -> v1), expires: 1767440958314, now: 1764848958314
219Looking up token for selector: f55oltj3s894an2d, found: true
220Storing token for selector: mv9hmfq0qalo2n6f, user: Map(k1 -> v1), expires: 1767440958324, now: 1764848958324
221Running scheduled operation immediately
222Removing token for selector: f55oltj3s894an2d
223Storing token for selector: c1eid37pnpiu0h7k, user: Map(k1 -> v1), expires: 1767440958327, now: 1764848958327
224Storing token for selector: lu1d3vb3u5ksmbc4, user: Map(k1 -> v1), expires: 1767440958334, now: 1764848958334
225Removing token for selector: lu1d3vb3u5ksmbc4
226Storing token for selector: 8utspmo5unn35hni, user: Map(k1 -> v1), expires: 2595028000, now: 1764848958350
227Looking up token for selector: 8utspmo5unn35hni, found: true
228Storing token for selector: b3t5q0pbtrc8mlie, user: Map(k1 -> v1), expires: 2595098000, now: 1764848958369
229Running scheduled operation immediately
230Removing token for selector: 8utspmo5unn35hni
231Storing token for selector: t1opfmsu3k0c130m, user: Map(k1 -> v1), expires: 2595028000, now: 1764848958372
232Looking up token for selector: t1opfmsu3k0c130m, found: true
233Storing token for selector: 8p1hh5pla78209lr, user: Map(k1 -> v1), expires: 2595098000, now: 1764848958385
234Running scheduled operation immediately
235Removing token for selector: t1opfmsu3k0c130m
236Storing token for selector: d42k4dvuh4p627s0, user: Map(k1 -> v1), expires: 2595028000, now: 1764848958388
237[INFO] [12/04/2025 12:49:18.394] [pool-18-thread-6] [CoordinatedShutdown(pekko://com-github-pjfanning-session-RefreshableTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
238[INFO] [12/04/2025 12:49:18.644] [pool-18-thread-4] [CoordinatedShutdown(pekko://com-github-pjfanning-session-CsrfDirectivesTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
239[INFO] [12/04/2025 12:49:18.659] [pool-18-thread-3] [CoordinatedShutdown(pekko://com-github-pjfanning-session-OneOffTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
240[info] CsrfDirectivesTest:
241[info] - should set the csrf cookie on the first get request only
242[info] - should reject requests if the csrf cookie doesn't match the header value
243[info] - should reject requests if the csrf cookie isn't set
244[info] - should reject requests if the csrf cookie and the header are empty
245[info] - should reject requests if the csrf cookie and the header contain illegal value
246[info] - should reject requests if the csrf cookie and the header contain structurally correct but incorrectly hashed value
247[info] - should accept requests if the csrf cookie matches the header value
248[info] - should accept requests if the csrf cookie matches the form field value
249[info] - should set a new csrf cookie when requested
250[info] OneOffSetRefreshableGetTest:
251[info] Using cookies
252[info] - should read an optional session when only the session is set
253[info] Using cookies
254[info] - should invalidate a session
255[info] Using cookies
256[info] - should touch the session, without setting a refresh token
257[info] Using headers
258[info] - should read an optional session when only the session is set
259[info] Using headers
260[info] - should invalidate a session
261[info] Using headers
262[info] - should touch the session, without setting a refresh token
263[info] RefreshableTest:
264[info] Using cookies
265[info] - should set the refresh token cookie to expire
266[info] Using cookies
267[info] - should set both the session and refresh token
268[info] Using cookies
269[info] - should set a new refresh token when the session is set again
270[info] Using cookies
271[info] - should read an optional session when both the session and refresh token are set
272[info] Using cookies
273[info] - should read an optional session when only the session is set
274[info] Using cookies
275[info] - should set a new session after the session is re-created
276[info] Using cookies
277[info] - should read an optional session when none is set
278[info] Using cookies
279[info] - should read an optional session when only the refresh token is set (re-create the session)
280[info] Using cookies
281[info] - should set a new refresh token after the session is re-created
282[info] Using cookies
283[info] - should read a required session when both the session and refresh token are set
284[info] Using cookies
285[info] - should invalidate a session
286[info] Using cookies
287[info] - should reject the request if the session is not set
288[info] Using cookies
289[info] - should reject the request if the session is invalid
290[info] Using cookies
291[info] - should reject the request if the refresh token is invalid
292[info] Using cookies
293[info] - should touch the session, keeping the refresh token token intact
294[info] Using cookies
295[info] - should re-create an expired session and send back new tokens without duplicate headers
296[info] Using cookies
297[info] - should touch the session and send back session without duplicate headers
298[info] Using headers
299[info] - should set both the session and refresh token
300[info] Using headers
301[info] - should set a new refresh token when the session is set again
302[info] Using headers
303[info] - should read an optional session when both the session and refresh token are set
304[info] Using headers
305[info] - should read an optional session when only the session is set
306[info] Using headers
307[info] - should set a new session after the session is re-created
308[info] Using headers
309[info] - should read an optional session when none is set
310[info] Using headers
311[info] - should read an optional session when only the refresh token is set (re-create the session)
312[info] Using headers
313[info] - should set a new refresh token after the session is re-created
314[info] Using headers
315[info] - should read a required session when both the session and refresh token are set
316[info] Using headers
317[info] - should invalidate a session
318[info] Using headers
319[info] - should reject the request if the session is not set
320[info] Using headers
321[info] - should reject the request if the session is invalid
322[info] Using headers
323[info] - should reject the request if the refresh token is invalid
324[info] Using headers
325[info] - should touch the session, keeping the refresh token token intact
326[info] Using headers
327[info] - should re-create an expired session and send back new tokens without duplicate headers
328[info] Using headers
329[info] - should touch the session and send back session without duplicate headers
330[info] OneOffTest:
331[info] Using cookies
332[info] - should set the correct session cookie name
333[info] Using cookies
334[info] - should set the session
335[info] Using cookies
336[info] - should read an optional session when the session is set
337[info] Using cookies
338[info] - should read an optional session when the session is not set
339[info] Using cookies
340[info] - should read a required session when the session is set
341[info] + SessionManagerBasicEncoder.decodes v0.5.2 tokens with migration config: OK, passed 100 tests.
342[info] Using cookies
343[info] - should reject the request if the expiry is tampered with
344[info] Using cookies
345[info] - should invalidate a session
346[info] Using cookies
347[info] - should reject the request if the session is not set
348[info] Using cookies
349[info] - should reject the request if the session is invalid
350[info] Using cookies
351[info] - should touch the session
352[info] Using cookies
353[info] - should reject v0.5.1 session without migration config
354[info] Using cookies
355[info] - should migrate v0.5.1 session with migration config
356[info] Using cookies
357[info] - should reject v0.5.2 session without migration config
358[info] Using cookies
359[info] - should migrate v0.5.2 session with migration config
360[info] Using headers
361[info] - should set the session
362[info] Using headers
363[info] - should read an optional session when the session is set
364[info] Using headers
365[info] - should read an optional session when the session is not set
366[info] Using headers
367[info] - should read a required session when the session is set
368[info] Using headers
369[info] - should reject the request if the expiry is tampered with
370[info] Using headers
371[info] - should invalidate a session
372[info] Using headers
373[info] - should reject the request if the session is not set
374[info] Using headers
375[info] - should reject the request if the session is invalid
376[info] Using headers
377[info] - should touch the session
378[info] Using headers
379[info] - should reject v0.5.1 session without migration config
380[info] Using headers
381[info] - should migrate v0.5.1 session with migration config
382[info] Using headers
383[info] - should reject v0.5.2 session without migration config
384[info] Using headers
385[info] - should migrate v0.5.2 session with migration config
386[info] + SessionManagerBasicEncoder.encode+decode: OK, passed 100 tests.
387[info] + SessionManagerBasicEncoder.doesn't decode session with tampered expiry: OK, passed 100 tests.
388[info] + SessionManagerBasicEncoder.decodes v0.5.1 tokens with migration config: OK, passed 100 tests.
389[info] + SessionManagerBasicEncoder.doesn't decode expired session: OK, passed 100 tests.
390[info] SessionConfigTest:
391[info] - should load and parse default (HS256) JWS config
392[info] - should load and parse HS256 JWS config
393[info] - should load and parse RS256 JWS config
394[info] - should fail to load config due to missing RSA private key (alg = RS256)
395[info] - should fail to load config due to empty RSA private key (alg = RS256)
396[info] - should fail to load config due to invalid RSA private key (alg = RS256)
397[info] - should fail to load config due to unsupported JWS alg
398[info] - should load JWT config
399[info] - should fallback to empty JWT config (with default exp-timeout) if absent
400[info] - should fallback to empty JWT config (without default exp-timeout) if absent
401[info] - should use max-age as a default value for jwt.expirationTimeout
402Starting build for ProjectRef(file:/build/repo/,jwt3) (pekko-http-session-jwt)... [1/2]
403Compile scalacOptions: -Wconf:msg=can be rewritten automatically under:s, -source:3.8
404[info] compiling 2 Scala sources and 1 Java source to /build/repo/jwt/target/jvm-3/classes ...
405[info] /build/repo/jwt/src/main/java/com/github/pjfanning/session/javadsl/JwtSessionSerializers.java: JwtSessionSerializers.java uses unchecked or unsafe operations.
406[info] /build/repo/jwt/src/main/java/com/github/pjfanning/session/javadsl/JwtSessionSerializers.java: Recompile with -Xlint:unchecked for details.
407[info] done compiling
408[info] compiling 1 Scala source to /build/repo/jwt/target/jvm-3/test-classes ...
409[warn] there were 10 deprecation warnings; re-run with -deprecation for details
410[warn] one warning found
411[info] done compiling
412Test on: http://jwt.io/#debugger:
413eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7InVzZXJOYW1lIjoiam9obiIsInVzZXJJZCI6MzB9LCJleHAiOjE0NDgwMjA5OTd9.bCIrVQseEA2LmH-oLwcQiH2xmmeybM4oB_2YBI5U8DU
414[info] SessionManagerJwtEncoderTest:
415[info] - should encode+decode for string, default config
416[info] - should encode+decode for string, with max age
417[info] - should encode+decode for string, with encryption
418[info] - should encode+decode for string, with max age and encryption
419[info] - should encode+decode for integer, default config
420[info] - should encode+decode for case class, default config
421[info] - should encode+decode for case class, with max age and encryption
422[info] - should encode+decode for string, RSA signature
423[info] - should encode+decode for string, HMAC SHA256 signature
424[info] - should encode correctly in the JWT format
425[info] - should encode JWT claims
426[info] - should encode JWT with default exp claim
427[info] - should encode JWT without any registered claims
428[info] - should encode a correct JWT header (alg = HS256)
429[info] - should encode a correct JWT header (alg = RS256)
430[info] - should not decode an expired session
431[info] - should not decode a token with a corrupted signature [HMAC SHA256]
432[info] - should not decode a token with a corrupted signature [RSA]
433[info] - should not decode a token with a non compatible signatures [RSA vs HMAC SHA256]
434[info] - should decode a token with 'Bearer' prefix
435[info] - should not decode v0.5.2 tokens without config
436[info] - should decode v0.5.2 tokens with config
437
438************************
439Build summary:
440[{
441 "module": "pekko-http-session-core",
442 "compile": {"status": "ok", "tookMs": 13152, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
443 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
444 "test-compile": {"status": "ok", "tookMs": 10831, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
445 "test": {"status": "ok", "tookMs": 3958, "passed": 91, "failed": 0, "ignored": 0, "skipped": 0, "total": 91, "byFramework": [{"framework": "unknown", "stats": {"passed": 91, "failed": 0, "ignored": 0, "skipped": 0, "total": 91}}]},
446 "publish": {"status": "skipped", "tookMs": 0},
447 "metadata": {
448 "crossScalaVersions": ["2.12.20", "3.3.0"]
449}
450},{
451 "module": "pekko-http-session-jwt",
452 "compile": {"status": "ok", "tookMs": 1107, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
453 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
454 "test-compile": {"status": "ok", "tookMs": 1459, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
455 "test": {"status": "ok", "tookMs": 6406, "passed": 22, "failed": 0, "ignored": 0, "skipped": 0, "total": 22, "byFramework": [{"framework": "unknown", "stats": {"passed": 22, "failed": 0, "ignored": 0, "skipped": 0, "total": 22}}]},
456 "publish": {"status": "skipped", "tookMs": 0},
457 "metadata": {
458 "crossScalaVersions": ["2.12.20", "3.3.0"]
459}
460}]
461************************
462[success] Total time: 66 s (0:01:06.0), completed Dec 4, 2025, 12:49:38 PM
463[0JChecking patch project/plugins.sbt...
464Checking patch project/build.properties...
465Checking patch build.sbt...
466Applied patch project/plugins.sbt cleanly.
467Applied patch project/build.properties cleanly.
468Applied patch build.sbt cleanly.