Build Logs
softwaremill/akka-http-session • 3.8.0-RC5:2025-12-31
Errors
0
Warnings
22
Total Lines
494
1##################################
2Clonning https://github.com/softwaremill/akka-http-session.git into /build/repo using revision v0.7.1
3##################################
4Note: switching to 'f015a450192110397103be7be909c0216e3acedd'.
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 softwaremill/akka-http-session
47##################################
48Scala version: 3.8.0-RC5
49Targets: com.softwaremill.pekko-http-session%core com.softwaremill.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.softwaremill.pekko-http-session%core com.softwaremill.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.006s.
85[info] done compiling
86[info] loading settings for project rootProject from build.sbt...
87[info] resolving key references (19494 settings) ...
88[info] set current project to akka-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 pekkoExample/crossScalaVersions
91OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in pekkoJavaTests/crossScalaVersions
92OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in example/crossScalaVersions
93OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in core/crossScalaVersions
94OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in pekkoJwt3/crossScalaVersions
95OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC5) in pekkoJwt3/crossScalaVersions
96OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in pekkoExample3/crossScalaVersions
97OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC5) in pekkoExample3/crossScalaVersions
98OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in pekkoJwt/crossScalaVersions
99OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in pekkoCore/crossScalaVersions
100OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in rootProject/crossScalaVersions
101OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in jwt/crossScalaVersions
102OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in pekkoJavaTests3/crossScalaVersions
103OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC5) in pekkoJavaTests3/crossScalaVersions
104OpenCB::Changing crossVersion 3.8.0-RC5 -> 3.8.0-RC5 in pekkoCore3/crossScalaVersions
105OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC5) in pekkoCore3/crossScalaVersions
106OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in javaTests/crossScalaVersions
107[info] set current project to akka-http-session-root (in build file:/build/repo/)
108[info] Setting Scala version to 3.8.0-RC5 on 4 projects.
109[info] Switching Scala version on:
110[info] pekkoJwt3 (3.8.0-RC5)
111[info] pekkoJavaTests3 (3.8.0-RC5)
112[info] pekkoCore3 (3.8.0-RC5)
113[info] pekkoExample3 (3.8.0-RC5)
114[info] Excluding projects:
115[info] jwt2_12 (2.12.20, 2.12.18)
116[info] javaTests (2.13.11)
117[info] pekkoCore (2.13.11)
118[info] example2_12 (2.12.20, 2.12.18)
119[info] core2_12 (2.12.20, 2.12.18)
120[info] * rootProject (2.13.11)
121[info] jwt (2.13.11)
122[info] pekkoJavaTests (2.13.11)
123[info] javaTests2_12 (2.12.20, 2.12.18)
124[info] pekkoExample2_12 (2.12.20, 2.12.18)
125[info] pekkoExample (2.13.11)
126[info] pekkoJwt (2.13.11)
127[info] pekkoCore2_12 (2.12.20, 2.12.18)
128[info] core (2.13.11)
129[info] example (2.13.11)
130[info] pekkoJwt2_12 (2.12.20, 2.12.18)
131[info] pekkoJavaTests2_12 (2.12.20, 2.12.18)
132[info] Reapplying settings...
133[info] set current project to akka-http-session-root (in build file:/build/repo/)
134Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
135[info] Reapplying settings...
136[info] set current project to akka-http-session-root (in build file:/build/repo/)
137[info] Defining Global / credentials, core / credentials and 19 others.
138[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 104 others.
139[info] Run `last` for details.
140[info] Reapplying settings...
141[info] set current project to akka-http-session-root (in build file:/build/repo/)
142Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
143[info] Reapplying settings...
144OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
145
146 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
147 Did you mean pekkoCore3 / allExcludeDependencies ?
148 , retry without global scopes
149[info] Reapplying settings...
150[info] set current project to akka-http-session-root (in build file:/build/repo/)
151Execute removeScalacOptionsStartingWith: -P:wartremover
152[info] Reapplying settings...
153[info] set current project to akka-http-session-root (in build file:/build/repo/)
154[success] Total time: 0 s, completed Dec 31, 2025, 8:58:39 PM
155Build 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>\""}]}
156Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
157None of projects in group Vector(javaTests, javaTests2_12) uses current Scala binary version, using random: javaTests
158Starting build...
159Projects: Set(pekkoCore3, pekkoJwt3)
160Starting build for ProjectRef(file:/build/repo/,pekkoCore3) (core)... [0/2]
161OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
162OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
163OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
164Compile scalacOptions: -encoding, utf8, -explain-types, -explain, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -unchecked, -Ykind-projector, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
165[info] compiling 16 Scala sources and 3 Java sources to /build/repo/pekko-http-session/core/target/jvm-3/classes ...
166[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
167[warn] -- [E092] Pattern Match Unchecked Warning: /build/repo/pekko-http-session/core/src/main/scala/com/softwaremill/pekkohttpsession/SessionDirectives.scala:154:15
168[warn] 154 | case s: SessionResult.DecodedLegacy[T] =>
169[warn] | ^
170[warn] |the type test for com.softwaremill.pekkohttpsession.SessionResult.DecodedLegacy[T] cannot be checked at runtime because its type arguments can't be determined from com.softwaremill.pekkohttpsession.SessionResult[T]
171[warn] |---------------------------------------------------------------------------
172[warn] | Explanation (enabled by `-explain`)
173[warn] |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
174[warn] | Type arguments and type refinements are erased during compile time, thus it's
175[warn] | impossible to check them at run-time.
176[warn] |
177[warn] | You can either replace the type arguments by _ or use `@unchecked`.
178[warn] ---------------------------------------------------------------------------
179[warn] there was 1 deprecation warning; re-run with -deprecation for details
180[warn] three warnings found
181[info] /build/repo/pekko-http-session/core/src/main/java/com/softwaremill/pekkohttpsession/javadsl/SessionSerializers.java: SessionSerializers.java uses or overrides a deprecated API.
182[info] /build/repo/pekko-http-session/core/src/main/java/com/softwaremill/pekkohttpsession/javadsl/SessionSerializers.java: Recompile with -Xlint:deprecation for details.
183[info] /build/repo/pekko-http-session/core/src/main/java/com/softwaremill/pekkohttpsession/javadsl/HttpSessionAwareDirectives.java: Some input files use unchecked or unsafe operations.
184[info] /build/repo/pekko-http-session/core/src/main/java/com/softwaremill/pekkohttpsession/javadsl/HttpSessionAwareDirectives.java: Recompile with -Xlint:unchecked for details.
185[info] done compiling
186[info] compiling 9 Scala sources to /build/repo/pekko-http-session/core/target/jvm-3/test-classes ...
187[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
188[warn] one warning found
189[info] done compiling
190Storing token for selector: 361njurjaqiac3k5, user: Map(k1 -> v1), expires: 1769803142140, now: 1767211142140
191Storing token for selector: 52fjct7m02dqjvfv, user: Map(k1 -> v1), expires: 1769803142235, now: 1767211142235
192Storing token for selector: qcd2ph3t3kbq9ru3, user: Map(k1 -> v1), expires: 1769803142247, now: 1767211142247
193Storing token for selector: vj1ujin76c0p02h7, user: Map(k1 -> v1), expires: 1769803142250, now: 1767211142250
194Storing token for selector: jeogcg4oj2imafkd, user: Map(k1 -> v1), expires: 1769803142265, now: 1767211142265
195Storing token for selector: m3ekkm5tt23isaov, user: Map(k1 -> v1), expires: 1769803142290, now: 1767211142290
196Storing token for selector: 46vol5q7o7ba7s5, user: Map(k1 -> v1), expires: 1769803142303, now: 1767211142303
197Looking up token for selector: 46vol5q7o7ba7s5, found: true
198Storing token for selector: ii6k06fgv65bt2fa, user: Map(k1 -> v1), expires: 1769803142318, now: 1767211142318
199Running scheduled operation immediately
200Removing token for selector: 46vol5q7o7ba7s5
201Storing token for selector: 8pq8v0l7pusdi5lk, user: Map(k1 -> v1), expires: 1769803142352, now: 1767211142352
202Looking up token for selector: 8pq8v0l7pusdi5lk, found: true
203Storing token for selector: il32coh79vd1a5gb, user: Map(k1 -> v1), expires: 1769803142358, now: 1767211142358
204Running scheduled operation immediately
205Removing token for selector: 8pq8v0l7pusdi5lk
206Storing token for selector: j1rrmfen2775r0d, user: Map(k1 -> v1), expires: 1769803142361, now: 1767211142361
207Looking up token for selector: j1rrmfen2775r0d, found: true
208Storing token for selector: r86dm8offtsfvr9f, user: Map(k1 -> v1), expires: 1769803142377, now: 1767211142377
209Running scheduled operation immediately
210Removing token for selector: j1rrmfen2775r0d
211Storing token for selector: tknh8ekfjst4vua7, user: Map(k1 -> v1), expires: 1769803142382, now: 1767211142382
212Storing token for selector: 5c02j30dqd20ob4e, user: Map(k1 -> v1), expires: 1769803142401, now: 1767211142401
213Removing token for selector: 5c02j30dqd20ob4e
214Storing token for selector: j7efnmdgjrupnl8, user: Map(k1 -> v1), expires: 2595028000, now: 1767211142436
215Looking up token for selector: j7efnmdgjrupnl8, found: true
216Storing token for selector: g865flsjvqkqm67, user: Map(k1 -> v1), expires: 2595098000, now: 1767211142461
217Running scheduled operation immediately
218Removing token for selector: j7efnmdgjrupnl8
219Storing token for selector: fqtlvehaa9k70i13, user: Map(k1 -> v1), expires: 2595028000, now: 1767211142467
220Looking up token for selector: fqtlvehaa9k70i13, found: true
221Storing token for selector: s60umqvhf5hisf5u, user: Map(k1 -> v1), expires: 2595098000, now: 1767211142476
222Running scheduled operation immediately
223Removing token for selector: fqtlvehaa9k70i13
224Storing token for selector: 9ma5bsb48uogmm7t, user: Map(k1 -> v1), expires: 2595028000, now: 1767211142482
225Storing token for selector: qpo0o3tn0r4n86d2, user: Map(k1 -> v1), expires: 1769803142496, now: 1767211142496
226Storing token for selector: bhhj3h9an9lvqlht, user: Map(k1 -> v1), expires: 1769803142503, now: 1767211142503
227Storing token for selector: m84bu59nkqthciuc, user: Map(k1 -> v1), expires: 1769803142506, now: 1767211142506
228Storing token for selector: 5hnpq94jl8cn8rmp, user: Map(k1 -> v1), expires: 1769803142511, now: 1767211142511
229Storing token for selector: fn5duhirmlvh7h5e, user: Map(k1 -> v1), expires: 1769803142517, now: 1767211142517
230Storing token for selector: arp3cinelgakrfbd, user: Map(k1 -> v1), expires: 1769803142523, now: 1767211142523
231Looking up token for selector: arp3cinelgakrfbd, found: true
232Storing token for selector: bp2jl521760i8n01, user: Map(k1 -> v1), expires: 1769803142528, now: 1767211142528
233Running scheduled operation immediately
234Removing token for selector: arp3cinelgakrfbd
235Storing token for selector: qou0b1b76h51f7ob, user: Map(k1 -> v1), expires: 1769803142535, now: 1767211142535
236Looking up token for selector: qou0b1b76h51f7ob, found: true
237Storing token for selector: hmolsepk2k9m93rm, user: Map(k1 -> v1), expires: 1769803142537, now: 1767211142537
238Running scheduled operation immediately
239Removing token for selector: qou0b1b76h51f7ob
240Storing token for selector: 8eqn9v1gkv3vjava, user: Map(k1 -> v1), expires: 1769803142540, now: 1767211142540
241Looking up token for selector: 8eqn9v1gkv3vjava, found: true
242Storing token for selector: f8ksnk7358o2ui2h, user: Map(k1 -> v1), expires: 1769803142543, now: 1767211142543
243Running scheduled operation immediately
244Removing token for selector: 8eqn9v1gkv3vjava
245Storing token for selector: u858hcgbo5r7s5ia, user: Map(k1 -> v1), expires: 1769803142548, now: 1767211142548
246Storing token for selector: l508v92stkrumia2, user: Map(k1 -> v1), expires: 1769803142552, now: 1767211142552
247Removing token for selector: l508v92stkrumia2
248Storing token for selector: 1fo36p6sghs9tag4, user: Map(k1 -> v1), expires: 2595028000, now: 1767211142570
249Looking up token for selector: 1fo36p6sghs9tag4, found: true
250Storing token for selector: duiqe32iv466dtcd, user: Map(k1 -> v1), expires: 2595098000, now: 1767211142580
251Running scheduled operation immediately
252Removing token for selector: 1fo36p6sghs9tag4
253Storing token for selector: 4luts5sdpq26gscd, user: Map(k1 -> v1), expires: 2595028000, now: 1767211142585
254Looking up token for selector: 4luts5sdpq26gscd, found: true
255Storing token for selector: aol589hqhm8uf0f2, user: Map(k1 -> v1), expires: 2595098000, now: 1767211142592
256Running scheduled operation immediately
257Removing token for selector: 4luts5sdpq26gscd
258Storing token for selector: 3nsm57gn1v26orm7, user: Map(k1 -> v1), expires: 2595028000, now: 1767211142595
259[INFO] [12/31/2025 20:59:02.622] [pool-19-thread-3] [CoordinatedShutdown(pekko://com-softwaremill-pekkohttpsession-OneOffTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
260[INFO] [12/31/2025 20:59:02.622] [pool-19-thread-1] [CoordinatedShutdown(pekko://com-softwaremill-pekkohttpsession-RefreshableTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
261[INFO] [12/31/2025 20:59:02.664] [pool-19-thread-8] [CoordinatedShutdown(pekko://com-softwaremill-pekkohttpsession-CsrfDirectivesTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
262[INFO] [12/31/2025 20:59:02.777] [pool-19-thread-2] [CoordinatedShutdown(pekko://com-softwaremill-pekkohttpsession-OneOffSetRefreshableGetTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
263[info] CsrfDirectivesTest:
264[info] - should set the csrf cookie on the first get request only
265[info] - should reject requests if the csrf cookie doesn't match the header value
266[info] - should reject requests if the csrf cookie isn't set
267[info] - should reject requests if the csrf cookie and the header are empty
268[info] - should reject requests if the csrf cookie and the header contain illegal value
269[info] - should reject requests if the csrf cookie and the header contain structurally correct but incorrectly hashed value
270[info] - should accept requests if the csrf cookie matches the header value
271[info] - should accept requests if the csrf cookie matches the form field value
272[info] - should set a new csrf cookie when requested
273[info] OneOffTest:
274[info] Using cookies
275[info] - should set the correct session cookie name
276[info] Using cookies
277[info] - should set the session
278[info] Using cookies
279[info] - should read an optional session when the session is set
280[info] Using cookies
281[info] - should read an optional session when the session is not set
282[info] Using cookies
283[info] - should read a required session when the session is set
284[info] Using cookies
285[info] - should reject the request if the expiry is tampered with
286[info] Using cookies
287[info] - should invalidate a session
288[info] Using cookies
289[info] - should reject the request if the session is not set
290[info] Using cookies
291[info] - should reject the request if the session is invalid
292[info] + SessionManagerBasicEncoder.decodes v0.5.1 tokens with migration config: OK, passed 100 tests.
293[info] Using cookies
294[info] - should touch the session
295[info] Using cookies
296[info] - should reject v0.5.1 session without migration config
297[info] Using cookies
298[info] - should migrate v0.5.1 session with migration config
299[info] Using cookies
300[info] - should reject v0.5.2 session without migration config
301[info] Using cookies
302[info] - should migrate v0.5.2 session with migration config
303[info] Using headers
304[info] - should set the session
305[info] Using headers
306[info] - should read an optional session when the session is set
307[info] Using headers
308[info] - should read an optional session when the session is not set
309[info] Using headers
310[info] - should read a required session when the session is set
311[info] Using headers
312[info] - should reject the request if the expiry is tampered with
313[info] Using headers
314[info] - should invalidate a session
315[info] Using headers
316[info] - should reject the request if the session is not set
317[info] Using headers
318[info] - should reject the request if the session is invalid
319[info] Using headers
320[info] - should touch the session
321[info] Using headers
322[info] - should reject v0.5.1 session without migration config
323[info] Using headers
324[info] - should migrate v0.5.1 session with migration config
325[info] Using headers
326[info] - should reject v0.5.2 session without migration config
327[info] Using headers
328[info] - should migrate v0.5.2 session with migration config
329[info] RefreshableTest:
330[info] Using cookies
331[info] - should set the refresh token cookie to expire
332[info] Using cookies
333[info] - should set both the session and refresh token
334[info] Using cookies
335[info] - should set a new refresh token when the session is set again
336[info] Using cookies
337[info] - should read an optional session when both the session and refresh token are set
338[info] Using cookies
339[info] - should read an optional session when only the session is set
340[info] Using cookies
341[info] - should set a new session after the session is re-created
342[info] Using cookies
343[info] - should read an optional session when none is set
344[info] Using cookies
345[info] - should read an optional session when only the refresh token is set (re-create the session)
346[info] Using cookies
347[info] - should set a new refresh token after the session is re-created
348[info] Using cookies
349[info] - should read a required session when both the session and refresh token are set
350[info] Using cookies
351[info] - should invalidate a session
352[info] Using cookies
353[info] - should reject the request if the session is not set
354[info] Using cookies
355[info] - should reject the request if the session is invalid
356[info] Using cookies
357[info] - should reject the request if the refresh token is invalid
358[info] Using cookies
359[info] - should touch the session, keeping the refresh token token intact
360[info] Using cookies
361[info] - should re-create an expired session and send back new tokens without duplicate headers
362[info] Using cookies
363[info] - should touch the session and send back session without duplicate headers
364[info] Using headers
365[info] - should set both the session and refresh token
366[info] Using headers
367[info] - should set a new refresh token when the session is set again
368[info] Using headers
369[info] - should read an optional session when both the session and refresh token are set
370[info] Using headers
371[info] - should read an optional session when only the session is set
372[info] Using headers
373[info] - should set a new session after the session is re-created
374[info] Using headers
375[info] - should read an optional session when none is set
376[info] Using headers
377[info] - should read an optional session when only the refresh token is set (re-create the session)
378[info] Using headers
379[info] - should set a new refresh token after the session is re-created
380[info] Using headers
381[info] - should read a required session when both the session and refresh token are set
382[info] Using headers
383[info] - should invalidate a session
384[info] Using headers
385[info] - should reject the request if the session is not set
386[info] Using headers
387[info] - should reject the request if the session is invalid
388[info] Using headers
389[info] - should reject the request if the refresh token is invalid
390[info] Using headers
391[info] - should touch the session, keeping the refresh token token intact
392[info] Using headers
393[info] - should re-create an expired session and send back new tokens without duplicate headers
394[info] Using headers
395[info] - should touch the session and send back session without duplicate headers
396[info] OneOffSetRefreshableGetTest:
397[info] Using cookies
398[info] - should read an optional session when only the session is set
399[info] Using cookies
400[info] - should invalidate a session
401[info] Using cookies
402[info] - should touch the session, without setting a refresh token
403[info] Using headers
404[info] - should read an optional session when only the session is set
405[info] Using headers
406[info] - should invalidate a session
407[info] Using headers
408[info] - should touch the session, without setting a refresh token
409[info] SessionConfigTest:
410[info] - should load and parse default (HS256) JWS config
411[info] - should load and parse HS256 JWS config
412[info] - should load and parse RS256 JWS config
413[info] - should fail to load config due to missing RSA private key (alg = RS256)
414[info] - should fail to load config due to empty RSA private key (alg = RS256)
415[info] - should fail to load config due to invalid RSA private key (alg = RS256)
416[info] - should fail to load config due to unsupported JWS alg
417[info] - should load JWT config
418[info] - should fallback to empty JWT config (with default exp-timeout) if absent
419[info] - should fallback to empty JWT config (without default exp-timeout) if absent
420[info] - should use max-age as a default value for jwt.expirationTimeout
421[info] + SessionManagerBasicEncoder.doesn't decode expired session: OK, passed 100 tests.
422[info] + SessionManagerBasicEncoder.encode+decode: OK, passed 100 tests.
423[info] + SessionManagerBasicEncoder.decodes v0.5.2 tokens with migration config: OK, passed 100 tests.
424[info] + SessionManagerBasicEncoder.doesn't decode session with tampered expiry: OK, passed 100 tests.
425Starting build for ProjectRef(file:/build/repo/,pekkoJwt3) (jwt)... [1/2]
426Compile scalacOptions: -encoding, utf8, -explain-types, -explain, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -unchecked, -Ykind-projector, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
427[info] compiling 2 Scala sources and 1 Java source to /build/repo/pekko-http-session/jwt/target/jvm-3/classes ...
428[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
429[warn] one warning found
430[info] /build/repo/pekko-http-session/jwt/src/main/java/com/softwaremill/pekkohttpsession/javadsl/JwtSessionSerializers.java: JwtSessionSerializers.java uses unchecked or unsafe operations.
431[info] /build/repo/pekko-http-session/jwt/src/main/java/com/softwaremill/pekkohttpsession/javadsl/JwtSessionSerializers.java: Recompile with -Xlint:unchecked for details.
432[info] done compiling
433[info] compiling 1 Scala source to /build/repo/pekko-http-session/jwt/target/jvm-3/test-classes ...
434[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
435[warn] there were 10 deprecation warnings; re-run with -deprecation for details
436[warn] two warnings found
437[info] done compiling
438Test on: http://jwt.io/#debugger:
439eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7InVzZXJOYW1lIjoiam9obiIsInVzZXJJZCI6MzB9LCJleHAiOjE0NDgwMjA5OTd9.bCIrVQseEA2LmH-oLwcQiH2xmmeybM4oB_2YBI5U8DU
440[info] SessionManagerJwtEncoderTest:
441[info] - should encode+decode for string, default config
442[info] - should encode+decode for string, with max age
443[info] - should encode+decode for string, with encryption
444[info] - should encode+decode for string, with max age and encryption
445[info] - should encode+decode for integer, default config
446[info] - should encode+decode for case class, default config
447[info] - should encode+decode for case class, with max age and encryption
448[info] - should encode+decode for string, RSA signature
449[info] - should encode+decode for string, HMAC SHA256 signature
450[info] - should encode correctly in the JWT format
451[info] - should encode JWT claims
452[info] - should encode JWT with default exp claim
453[info] - should encode JWT without any registered claims
454[info] - should encode a correct JWT header (alg = HS256)
455[info] - should encode a correct JWT header (alg = RS256)
456[info] - should not decode an expired session
457[info] - should not decode a token with a corrupted signature [HMAC SHA256]
458[info] - should not decode a token with a corrupted signature [RSA]
459[info] - should not decode a token with a non compatible signatures [RSA vs HMAC SHA256]
460[info] - should decode a token with 'Bearer' prefix
461[info] - should not decode v0.5.2 tokens without config
462[info] - should decode v0.5.2 tokens with config
463
464************************
465Build summary:
466[{
467 "module": "core",
468 "compile": {"status": "ok", "tookMs": 10008, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
469 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
470 "test-compile": {"status": "ok", "tookMs": 9728, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
471 "test": {"status": "ok", "tookMs": 2654, "passed": 91, "failed": 0, "ignored": 0, "skipped": 0, "total": 91, "byFramework": [{"framework": "unknown", "stats": {"passed": 91, "failed": 0, "ignored": 0, "skipped": 0, "total": 91}}]},
472 "publish": {"status": "skipped", "tookMs": 0},
473 "metadata": {
474 "crossScalaVersions": ["2.12.20", "3.3.0"]
475}
476},{
477 "module": "jwt",
478 "compile": {"status": "ok", "tookMs": 1030, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
479 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
480 "test-compile": {"status": "ok", "tookMs": 1475, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
481 "test": {"status": "ok", "tookMs": 8603, "passed": 22, "failed": 0, "ignored": 0, "skipped": 0, "total": 22, "byFramework": [{"framework": "unknown", "stats": {"passed": 22, "failed": 0, "ignored": 0, "skipped": 0, "total": 22}}]},
482 "publish": {"status": "skipped", "tookMs": 0},
483 "metadata": {
484 "crossScalaVersions": ["2.12.20", "3.3.0"]
485}
486}]
487************************
488[success] Total time: 38 s, completed Dec 31, 2025, 8:59:16 PM
489[0JChecking patch project/plugins.sbt...
490Checking patch project/build.properties...
491Checking patch build.sbt...
492Applied patch project/plugins.sbt cleanly.
493Applied patch project/build.properties cleanly.
494Applied patch build.sbt cleanly.