Build Logs
pjfanning/pekko-http-session • 3.8.0-RC5:2025-12-31
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-RC5
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-RC5"
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-RC5
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-RC5
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-RC5
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-RC5"
70"++3.8.0-RC5 -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-RC5 """{"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 8.524s.
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-RC5
90OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in example/crossScalaVersions
91OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in core/crossScalaVersions
92OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in javaTests3/crossScalaVersions
93OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in javaTests/crossScalaVersions
94OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in rootProject/crossScalaVersions
95OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in jwt/crossScalaVersions
96OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in example3/crossScalaVersions
97OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC5) in example3/crossScalaVersions
98OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in core3/crossScalaVersions
99OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC5) in core3/crossScalaVersions
100OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC5) in javaTests3/crossScalaVersions
101OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in jwt3/crossScalaVersions
102OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC5) 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-RC5 on 4 projects.
105[info] Switching Scala version on:
106[info] javaTests3 (3.8.0-RC5)
107[info] example3 (3.8.0-RC5)
108[info] core3 (3.8.0-RC5)
109[info] jwt3 (3.8.0-RC5)
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 31, 2025, 10:18:39 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: 854lhsrpqmcgqjvn, user: Map(k1 -> v1), expires: 1769807943685, now: 1767215943685
168Storing token for selector: fdsk9cbkrma5rcn2, user: Map(k1 -> v1), expires: 1769807943787, now: 1767215943787
169Storing token for selector: 2rd4b64oe6u1d5ri, user: Map(k1 -> v1), expires: 1769807943801, now: 1767215943801
170Storing token for selector: gloqj07rh6s8e1j9, user: Map(k1 -> v1), expires: 1769807943805, now: 1767215943805
171Storing token for selector: 54ubocsaijc91u9v, user: Map(k1 -> v1), expires: 1769807943822, now: 1767215943822
172Storing token for selector: fsor8kc41sbskv6d, user: Map(k1 -> v1), expires: 1769807943839, now: 1767215943839
173Storing token for selector: 82hp0jiq097b3jv3, user: Map(k1 -> v1), expires: 1769807943855, now: 1767215943855
174Looking up token for selector: 82hp0jiq097b3jv3, found: true
175Storing token for selector: dli5rtlgbueuj2p2, user: Map(k1 -> v1), expires: 1769807943873, now: 1767215943873
176Running scheduled operation immediately
177Removing token for selector: 82hp0jiq097b3jv3
178Storing token for selector: m7oc8lbakbfs3ujv, user: Map(k1 -> v1), expires: 1769807943888, now: 1767215943888
179Looking up token for selector: m7oc8lbakbfs3ujv, found: true
180Storing token for selector: pnbetql6enbhe93b, user: Map(k1 -> v1), expires: 1769807943897, now: 1767215943897
181Running scheduled operation immediately
182Removing token for selector: m7oc8lbakbfs3ujv
183Storing token for selector: qvq40gqdhkh88pfa, user: Map(k1 -> v1), expires: 1769807943901, now: 1767215943901
184Looking up token for selector: qvq40gqdhkh88pfa, found: true
185Storing token for selector: 9gvhgr9i91c40768, user: Map(k1 -> v1), expires: 1769807943908, now: 1767215943908
186Running scheduled operation immediately
187Removing token for selector: qvq40gqdhkh88pfa
188[INFO] [12/31/2025 22:19:03.914] [pool-18-thread-1] [CoordinatedShutdown(pekko://com-github-pjfanning-session-OneOffSetRefreshableGetTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
189Storing token for selector: 94i4g0r9sk7bgfat, user: Map(k1 -> v1), expires: 1769807943924, now: 1767215943924
190Storing token for selector: s47a44ktaflc79cf, user: Map(k1 -> v1), expires: 1769807943934, now: 1767215943934
191Removing token for selector: s47a44ktaflc79cf
192Storing token for selector: 4tf1jt97ccn0n80r, user: Map(k1 -> v1), expires: 2595028000, now: 1767215943969
193Looking up token for selector: 4tf1jt97ccn0n80r, found: true
194Storing token for selector: tr151rucr0k9q5b8, user: Map(k1 -> v1), expires: 2595098000, now: 1767215943985
195Running scheduled operation immediately
196Removing token for selector: 4tf1jt97ccn0n80r
197Storing token for selector: tmakljcjkip9blmg, user: Map(k1 -> v1), expires: 2595028000, now: 1767215943993
198Looking up token for selector: tmakljcjkip9blmg, found: true
199Storing token for selector: n6u1aj8u0hq8q0t6, user: Map(k1 -> v1), expires: 2595098000, now: 1767215944003
200Running scheduled operation immediately
201Removing token for selector: tmakljcjkip9blmg
202Storing token for selector: lljk4vtn0fr8jr3o, user: Map(k1 -> v1), expires: 2595028000, now: 1767215944014
203Storing token for selector: 787k5anhcf5otl2m, user: Map(k1 -> v1), expires: 1769807944023, now: 1767215944023
204Storing token for selector: 5hjhasrd6uk05q78, user: Map(k1 -> v1), expires: 1769807944033, now: 1767215944033
205Storing token for selector: raim238k2ihdbaev, user: Map(k1 -> v1), expires: 1769807944040, now: 1767215944040
206Storing token for selector: vmik2da8egqkh4ap, user: Map(k1 -> v1), expires: 1769807944045, now: 1767215944045
207Storing token for selector: j88ijtkbr7s2q6p4, user: Map(k1 -> v1), expires: 1769807944055, now: 1767215944055
208Storing token for selector: ld1k3knt3mdnu2kv, user: Map(k1 -> v1), expires: 1769807944066, now: 1767215944066
209Looking up token for selector: ld1k3knt3mdnu2kv, found: true
210Storing token for selector: 8ju5lr60fnv322tb, user: Map(k1 -> v1), expires: 1769807944071, now: 1767215944071
211Running scheduled operation immediately
212Removing token for selector: ld1k3knt3mdnu2kv
213Storing token for selector: gp2ie1ltfcaub8pn, user: Map(k1 -> v1), expires: 1769807944079, now: 1767215944079
214Looking up token for selector: gp2ie1ltfcaub8pn, found: true
215Storing token for selector: jr483vkic8fa6b5n, user: Map(k1 -> v1), expires: 1769807944084, now: 1767215944084
216Running scheduled operation immediately
217Removing token for selector: gp2ie1ltfcaub8pn
218Storing token for selector: qitqb9kvga276afr, user: Map(k1 -> v1), expires: 1769807944089, now: 1767215944089
219Looking up token for selector: qitqb9kvga276afr, found: true
220Storing token for selector: 573bdlserpm4b12t, user: Map(k1 -> v1), expires: 1769807944093, now: 1767215944093
221Running scheduled operation immediately
222Removing token for selector: qitqb9kvga276afr
223[INFO] [12/31/2025 22:19:04.093] [pool-18-thread-7] [CoordinatedShutdown(pekko://com-github-pjfanning-session-OneOffTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
224Storing token for selector: fv7n20khsptpfgm, user: Map(k1 -> v1), expires: 1769807944102, now: 1767215944103
225Storing token for selector: jsusvgdefhjf82mq, user: Map(k1 -> v1), expires: 1769807944109, now: 1767215944109
226Removing token for selector: jsusvgdefhjf82mq
227Storing token for selector: h52j3n995smv2269, user: Map(k1 -> v1), expires: 2595028000, now: 1767215944121
228Looking up token for selector: h52j3n995smv2269, found: true
229Storing token for selector: ohln7prhs1rq0a7i, user: Map(k1 -> v1), expires: 2595098000, now: 1767215944128
230Running scheduled operation immediately
231Removing token for selector: h52j3n995smv2269
232Storing token for selector: lcc07ghmd4h5dss5, user: Map(k1 -> v1), expires: 2595028000, now: 1767215944131
233Looking up token for selector: lcc07ghmd4h5dss5, found: true
234Storing token for selector: 515f6e428jtqsfhl, user: Map(k1 -> v1), expires: 2595098000, now: 1767215944133
235Running scheduled operation immediately
236Removing token for selector: lcc07ghmd4h5dss5
237Storing token for selector: 11gi7n04rg5oeb0i, user: Map(k1 -> v1), expires: 2595028000, now: 1767215944137
238[INFO] [12/31/2025 22:19:04.141] [pool-18-thread-6] [CoordinatedShutdown(pekko://com-github-pjfanning-session-RefreshableTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
239[info] RefreshableTest:
240[info] Using cookies
241[info] - should set the refresh token cookie to expire
242[info] Using cookies
243[info] - should set both the session and refresh token
244[info] Using cookies
245[info] - should set a new refresh token when the session is set again
246[info] Using cookies
247[info] - should read an optional session when both the session and refresh token are set
248[info] Using cookies
249[info] - should read an optional session when only the session is set
250[info] Using cookies
251[info] - should set a new session after the session is re-created
252[info] Using cookies
253[info] - should read an optional session when none is set
254[info] Using cookies
255[info] - should read an optional session when only the refresh token is set (re-create the session)
256[info] Using cookies
257[info] - should set a new refresh token after the session is re-created
258[info] Using cookies
259[info] - should read a required session when both the session and refresh token are set
260[info] Using cookies
261[info] - should invalidate a session
262[info] Using cookies
263[info] - should reject the request if the session is not set
264[info] Using cookies
265[info] - should reject the request if the session is invalid
266[info] Using cookies
267[info] - should reject the request if the refresh token is invalid
268[info] Using cookies
269[info] - should touch the session, keeping the refresh token token intact
270[info] Using cookies
271[info] - should re-create an expired session and send back new tokens without duplicate headers
272[info] Using cookies
273[info] - should touch the session and send back session without duplicate headers
274[info] Using headers
275[info] - should set both the session and refresh token
276[info] Using headers
277[info] - should set a new refresh token when the session is set again
278[info] Using headers
279[info] - should read an optional session when both the session and refresh token are set
280[info] Using headers
281[info] - should read an optional session when only the session is set
282[info] Using headers
283[info] - should set a new session after the session is re-created
284[info] Using headers
285[info] - should read an optional session when none is set
286[info] Using headers
287[info] - should read an optional session when only the refresh token is set (re-create the session)
288[info] Using headers
289[info] - should set a new refresh token after the session is re-created
290[info] Using headers
291[info] - should read a required session when both the session and refresh token are set
292[info] Using headers
293[info] - should invalidate a session
294[info] Using headers
295[info] - should reject the request if the session is not set
296[info] Using headers
297[info] - should reject the request if the session is invalid
298[info] Using headers
299[info] - should reject the request if the refresh token is invalid
300[info] Using headers
301[info] - should touch the session, keeping the refresh token token intact
302[info] Using headers
303[info] - should re-create an expired session and send back new tokens without duplicate headers
304[info] Using headers
305[info] - should touch the session and send back session without duplicate headers
306[INFO] [12/31/2025 22:19:04.275] [pool-18-thread-2] [CoordinatedShutdown(pekko://com-github-pjfanning-session-CsrfDirectivesTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
307[info] OneOffSetRefreshableGetTest:
308[info] Using cookies
309[info] - should read an optional session when only the session is set
310[info] Using cookies
311[info] - should invalidate a session
312[info] Using cookies
313[info] - should touch the session, without setting a refresh token
314[info] Using headers
315[info] - should read an optional session when only the session is set
316[info] Using headers
317[info] - should invalidate a session
318[info] Using headers
319[info] - should touch the session, without setting a refresh token
320[info] OneOffTest:
321[info] Using cookies
322[info] - should set the correct session cookie name
323[info] Using cookies
324[info] - should set the session
325[info] Using cookies
326[info] - should read an optional session when the session is set
327[info] Using cookies
328[info] - should read an optional session when the session is not set
329[info] Using cookies
330[info] - should read a required session when the session is set
331[info] Using cookies
332[info] - should reject the request if the expiry is tampered with
333[info] Using cookies
334[info] - should invalidate a session
335[info] Using cookies
336[info] - should reject the request if the session is not set
337[info] Using cookies
338[info] - should reject the request if the session is invalid
339[info] Using cookies
340[info] - should touch the session
341[info] Using cookies
342[info] - should reject v0.5.1 session without migration config
343[info] Using cookies
344[info] - should migrate v0.5.1 session with migration config
345[info] Using cookies
346[info] - should reject v0.5.2 session without migration config
347[info] Using cookies
348[info] - should migrate v0.5.2 session with migration config
349[info] Using headers
350[info] - should set the session
351[info] Using headers
352[info] - should read an optional session when the session is set
353[info] Using headers
354[info] - should read an optional session when the session is not set
355[info] Using headers
356[info] - should read a required session when the session is set
357[info] Using headers
358[info] - should reject the request if the expiry is tampered with
359[info] Using headers
360[info] - should invalidate a session
361[info] Using headers
362[info] - should reject the request if the session is not set
363[info] Using headers
364[info] - should reject the request if the session is invalid
365[info] Using headers
366[info] - should touch the session
367[info] Using headers
368[info] - should reject v0.5.1 session without migration config
369[info] Using headers
370[info] - should migrate v0.5.1 session with migration config
371[info] Using headers
372[info] - should reject v0.5.2 session without migration config
373[info] Using headers
374[info] - should migrate v0.5.2 session with migration config
375[info] CsrfDirectivesTest:
376[info] - should set the csrf cookie on the first get request only
377[info] - should reject requests if the csrf cookie doesn't match the header value
378[info] - should reject requests if the csrf cookie isn't set
379[info] - should reject requests if the csrf cookie and the header are empty
380[info] - should reject requests if the csrf cookie and the header contain illegal value
381[info] - should reject requests if the csrf cookie and the header contain structurally correct but incorrectly hashed value
382[info] - should accept requests if the csrf cookie matches the header value
383[info] - should accept requests if the csrf cookie matches the form field value
384[info] - should set a new csrf cookie when requested
385[info] + SessionManagerBasicEncoder.encode+decode: OK, passed 100 tests.
386[info] + SessionManagerBasicEncoder.doesn't decode expired session: OK, passed 100 tests.
387[info] + SessionManagerBasicEncoder.decodes v0.5.1 tokens with migration config: OK, passed 100 tests.
388[info] + SessionManagerBasicEncoder.decodes v0.5.2 tokens with migration config: OK, passed 100 tests.
389[info] + SessionManagerBasicEncoder.doesn't decode session with tampered expiry: 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": 9869, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
443 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
444 "test-compile": {"status": "ok", "tookMs": 10887, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
445 "test": {"status": "ok", "tookMs": 3842, "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": 1034, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
453 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
454 "test-compile": {"status": "ok", "tookMs": 1685, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
455 "test": {"status": "ok", "tookMs": 5423, "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: 37 s, completed Dec 31, 2025, 10:19:16 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.