Build Logs
softwaremill/akka-http-session • 3.8.0-RC2:2025-11-28
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-RC2
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-RC2"
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-RC2
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-RC2
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-RC2
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-RC2"
70"++3.8.0-RC2 -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-RC2 """{"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.408s.
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-RC2
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 pekkoJavaTests/crossScalaVersions
92OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in pekkoJwt3/crossScalaVersions
93OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC2) in pekkoJwt3/crossScalaVersions
94OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in pekkoExample3/crossScalaVersions
95OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC2) in pekkoExample3/crossScalaVersions
96OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in pekkoJwt/crossScalaVersions
97OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in pekkoCore/crossScalaVersions
98OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in rootProject/crossScalaVersions
99OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in jwt/crossScalaVersions
100OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in pekkoJavaTests3/crossScalaVersions
101OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC2) in pekkoJavaTests3/crossScalaVersions
102OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in pekkoCore3/crossScalaVersions
103OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC2) in pekkoCore3/crossScalaVersions
104OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in pekkoExample/crossScalaVersions
105OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in javaTests/crossScalaVersions
106OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in core/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-RC2 on 4 projects.
109[info] Switching Scala version on:
110[info] pekkoJwt3 (3.8.0-RC2)
111[info] pekkoJavaTests3 (3.8.0-RC2)
112[info] pekkoCore3 (3.8.0-RC2)
113[info] pekkoExample3 (3.8.0-RC2)
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 Nov 28, 2025, 11:59:31 AM
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: es2ql03demo1k54v, user: Map(k1 -> v1), expires: 1766919614461, now: 1764327614462
191Storing token for selector: o8td4te70qnav08, user: Map(k1 -> v1), expires: 1766919614547, now: 1764327614547
192Storing token for selector: 1oaflhpj9jnqog46, user: Map(k1 -> v1), expires: 1766919614552, now: 1764327614552
193Storing token for selector: f5dp8ugs99fl6mds, user: Map(k1 -> v1), expires: 1766919614562, now: 1764327614562
194Storing token for selector: oq44n8d9n5eool2a, user: Map(k1 -> v1), expires: 1766919614577, now: 1764327614577
195Storing token for selector: b4nvggnmjar93fnv, user: Map(k1 -> v1), expires: 1766919614598, now: 1764327614598
196Storing token for selector: letn9884qn9riigg, user: Map(k1 -> v1), expires: 1766919614611, now: 1764327614611
197Looking up token for selector: letn9884qn9riigg, found: true
198Storing token for selector: qr8l9s7go3clp90d, user: Map(k1 -> v1), expires: 1766919614627, now: 1764327614627
199Running scheduled operation immediately
200Removing token for selector: letn9884qn9riigg
201Storing token for selector: qqq1ah8duuhdpdq5, user: Map(k1 -> v1), expires: 1766919614648, now: 1764327614648
202Looking up token for selector: qqq1ah8duuhdpdq5, found: true
203Storing token for selector: odsr71ksuk1lfbpp, user: Map(k1 -> v1), expires: 1766919614653, now: 1764327614653
204Running scheduled operation immediately
205Removing token for selector: qqq1ah8duuhdpdq5
206Storing token for selector: 95jvb7kb0fdc7tg5, user: Map(k1 -> v1), expires: 1766919614658, now: 1764327614658
207Looking up token for selector: 95jvb7kb0fdc7tg5, found: true
208Storing token for selector: 6sal6u4jkkrgoom1, user: Map(k1 -> v1), expires: 1766919614666, now: 1764327614666
209Running scheduled operation immediately
210Removing token for selector: 95jvb7kb0fdc7tg5
211Storing token for selector: q432tk8hphqjfmqp, user: Map(k1 -> v1), expires: 1766919614670, now: 1764327614672
212Storing token for selector: teocpkp1u46do888, user: Map(k1 -> v1), expires: 1766919614682, now: 1764327614683
213Removing token for selector: teocpkp1u46do888
214Storing token for selector: 9tdtnffbkhth179r, user: Map(k1 -> v1), expires: 2595028000, now: 1764327614716
215Looking up token for selector: 9tdtnffbkhth179r, found: true
216Storing token for selector: 7u9k9hvmij0fe8a, user: Map(k1 -> v1), expires: 2595098000, now: 1764327614737
217Running scheduled operation immediately
218Removing token for selector: 9tdtnffbkhth179r
219Storing token for selector: mvro2jo4on2bdl65, user: Map(k1 -> v1), expires: 2595028000, now: 1764327614752
220Looking up token for selector: mvro2jo4on2bdl65, found: true
221Storing token for selector: nkkdubtotbd0v7m2, user: Map(k1 -> v1), expires: 2595098000, now: 1764327614761
222Running scheduled operation immediately
223Removing token for selector: mvro2jo4on2bdl65
224Storing token for selector: jp9t6l9asvd36ffu, user: Map(k1 -> v1), expires: 2595028000, now: 1764327614774
225Storing token for selector: t5f8qbebabb4f3t7, user: Map(k1 -> v1), expires: 1766919614786, now: 1764327614786
226Storing token for selector: 9cr9vk284ju30ok9, user: Map(k1 -> v1), expires: 1766919614792, now: 1764327614792
227Storing token for selector: dap10asn1bvd9ct8, user: Map(k1 -> v1), expires: 1766919614795, now: 1764327614795
228Storing token for selector: 6tl62fo82rt0sm44, user: Map(k1 -> v1), expires: 1766919614803, now: 1764327614803
229Storing token for selector: s1gkhu9r61hcajju, user: Map(k1 -> v1), expires: 1766919614814, now: 1764327614814
230Storing token for selector: ut52t0d2089j1fke, user: Map(k1 -> v1), expires: 1766919614823, now: 1764327614823
231Looking up token for selector: ut52t0d2089j1fke, found: true
232Storing token for selector: fa1nka1v9qb5712v, user: Map(k1 -> v1), expires: 1766919614828, now: 1764327614828
233Running scheduled operation immediately
234Removing token for selector: ut52t0d2089j1fke
235Storing token for selector: 3nl0j77qfiup0emn, user: Map(k1 -> v1), expires: 1766919614842, now: 1764327614842
236Looking up token for selector: 3nl0j77qfiup0emn, found: true
237Storing token for selector: gltdn5fobnusm4cj, user: Map(k1 -> v1), expires: 1766919614845, now: 1764327614845
238Running scheduled operation immediately
239Removing token for selector: 3nl0j77qfiup0emn
240Storing token for selector: cagp14vkehq9b89o, user: Map(k1 -> v1), expires: 1766919614861, now: 1764327614861
241Looking up token for selector: cagp14vkehq9b89o, found: true
242Storing token for selector: 1bsai43uvm6rvb7v, user: Map(k1 -> v1), expires: 1766919614869, now: 1764327614869
243Running scheduled operation immediately
244Removing token for selector: cagp14vkehq9b89o
245Storing token for selector: f76lc3kjnc8me0gm, user: Map(k1 -> v1), expires: 1766919614873, now: 1764327614873
246Storing token for selector: 76pvh4jqnffqth1j, user: Map(k1 -> v1), expires: 1766919614884, now: 1764327614884
247Removing token for selector: 76pvh4jqnffqth1j
248Storing token for selector: v85i1sei8ces3mfi, user: Map(k1 -> v1), expires: 2595028000, now: 1764327614911
249[INFO] [11/28/2025 12:00:14.914] [pool-19-thread-6] [CoordinatedShutdown(pekko://com-softwaremill-pekkohttpsession-OneOffTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
250Looking up token for selector: v85i1sei8ces3mfi, found: true
251Storing token for selector: bhpoi8atkpd4o3h1, user: Map(k1 -> v1), expires: 2595098000, now: 1764327614924
252Running scheduled operation immediately
253Removing token for selector: v85i1sei8ces3mfi
254Storing token for selector: 4cj5q2ib9vk386gn, user: Map(k1 -> v1), expires: 2595028000, now: 1764327614928
255Looking up token for selector: 4cj5q2ib9vk386gn, found: true
256Storing token for selector: e9r06m038gt1djea, user: Map(k1 -> v1), expires: 2595098000, now: 1764327614930
257Running scheduled operation immediately
258Removing token for selector: 4cj5q2ib9vk386gn
259Storing token for selector: 1e4imskilkooho49, user: Map(k1 -> v1), expires: 2595028000, now: 1764327614936
260[INFO] [11/28/2025 12:00:14.942] [pool-19-thread-3] [CoordinatedShutdown(pekko://com-softwaremill-pekkohttpsession-RefreshableTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
261[INFO] [11/28/2025 12:00:15.055] [pool-19-thread-5] [CoordinatedShutdown(pekko://com-softwaremill-pekkohttpsession-CsrfDirectivesTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
262[INFO] [11/28/2025 12:00:15.139] [pool-19-thread-4] [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] RefreshableTest:
274[info] Using cookies
275[info] - should set the refresh token cookie to expire
276[info] Using cookies
277[info] - should set both the session and refresh token
278[info] Using cookies
279[info] - should set a new refresh token when the session is set again
280[info] Using cookies
281[info] - should read an optional session when both the session and refresh token are set
282[info] Using cookies
283[info] - should read an optional session when only the session is set
284[info] Using cookies
285[info] - should set a new session after the session is re-created
286[info] Using cookies
287[info] - should read an optional session when none is set
288[info] Using cookies
289[info] - should read an optional session when only the refresh token is set (re-create the session)
290[info] Using cookies
291[info] - should set a new refresh token after the session is re-created
292[info] Using cookies
293[info] - should read a required session when both the session and refresh token are set
294[info] Using cookies
295[info] - should invalidate a session
296[info] Using cookies
297[info] - should reject the request if the session is not set
298[info] Using cookies
299[info] - should reject the request if the session is invalid
300[info] Using cookies
301[info] - should reject the request if the refresh token is invalid
302[info] Using cookies
303[info] - should touch the session, keeping the refresh token token intact
304[info] Using cookies
305[info] - should re-create an expired session and send back new tokens without duplicate headers
306[info] Using cookies
307[info] - should touch the session and send back session without duplicate headers
308[info] Using headers
309[info] - should set both the session and refresh token
310[info] Using headers
311[info] - should set a new refresh token when the session is set again
312[info] Using headers
313[info] - should read an optional session when both the session and refresh token are set
314[info] Using headers
315[info] - should read an optional session when only the session is set
316[info] Using headers
317[info] - should set a new session after the session is re-created
318[info] Using headers
319[info] - should read an optional session when none is set
320[info] Using headers
321[info] - should read an optional session when only the refresh token is set (re-create the session)
322[info] Using headers
323[info] - should set a new refresh token after the session is re-created
324[info] Using headers
325[info] - should read a required session when both the session and refresh token are set
326[info] Using headers
327[info] - should invalidate a session
328[info] Using headers
329[info] - should reject the request if the session is not set
330[info] Using headers
331[info] - should reject the request if the session is invalid
332[info] Using headers
333[info] - should reject the request if the refresh token is invalid
334[info] Using headers
335[info] - should touch the session, keeping the refresh token token intact
336[info] Using headers
337[info] - should re-create an expired session and send back new tokens without duplicate headers
338[info] Using headers
339[info] - should touch the session and send back session without duplicate headers
340[info] OneOffTest:
341[info] Using cookies
342[info] - should set the correct session cookie name
343[info] Using cookies
344[info] - should set the session
345[info] Using cookies
346[info] - should read an optional session when the session is set
347[info] Using cookies
348[info] - should read an optional session when the session is not set
349[info] Using cookies
350[info] - should read a required session when the session is set
351[info] Using cookies
352[info] - should reject the request if the expiry is tampered with
353[info] Using cookies
354[info] - should invalidate a session
355[info] Using cookies
356[info] - should reject the request if the session is not set
357[info] Using cookies
358[info] - should reject the request if the session is invalid
359[info] Using cookies
360[info] - should touch the session
361[info] Using cookies
362[info] - should reject v0.5.1 session without migration config
363[info] Using cookies
364[info] - should migrate v0.5.1 session with migration config
365[info] Using cookies
366[info] - should reject v0.5.2 session without migration config
367[info] Using cookies
368[info] - should migrate v0.5.2 session with migration config
369[info] Using headers
370[info] - should set the session
371[info] Using headers
372[info] - should read an optional session when the session is set
373[info] Using headers
374[info] - should read an optional session when the session is not set
375[info] Using headers
376[info] - should read a required session when the session is set
377[info] Using headers
378[info] - should reject the request if the expiry is tampered with
379[info] Using headers
380[info] - should invalidate a session
381[info] Using headers
382[info] - should reject the request if the session is not set
383[info] Using headers
384[info] - should reject the request if the session is invalid
385[info] Using headers
386[info] - should touch the session
387[info] Using headers
388[info] - should reject v0.5.1 session without migration config
389[info] Using headers
390[info] - should migrate v0.5.1 session with migration config
391[info] Using headers
392[info] - should reject v0.5.2 session without migration config
393[info] Using headers
394[info] - should migrate v0.5.2 session with migration config
395[info] OneOffSetRefreshableGetTest:
396[info] Using cookies
397[info] - should read an optional session when only the session is set
398[info] Using cookies
399[info] - should invalidate a session
400[info] Using cookies
401[info] - should touch the session, without setting a refresh token
402[info] Using headers
403[info] - should read an optional session when only the session is set
404[info] Using headers
405[info] - should invalidate a session
406[info] Using headers
407[info] - should touch the session, without setting a refresh token
408[info] + SessionManagerBasicEncoder.doesn't decode expired session: OK, passed 100 tests.
409[info] + SessionManagerBasicEncoder.decodes v0.5.1 tokens with migration config: OK, passed 100 tests.
410[info] SessionConfigTest:
411[info] - should load and parse default (HS256) JWS config
412[info] - should load and parse HS256 JWS config
413[info] - should load and parse RS256 JWS config
414[info] - should fail to load config due to missing RSA private key (alg = RS256)
415[info] - should fail to load config due to empty RSA private key (alg = RS256)
416[info] - should fail to load config due to invalid RSA private key (alg = RS256)
417[info] - should fail to load config due to unsupported JWS alg
418[info] - should load JWT config
419[info] - should fallback to empty JWT config (with default exp-timeout) if absent
420[info] - should fallback to empty JWT config (without default exp-timeout) if absent
421[info] - should use max-age as a default value for jwt.expirationTimeout
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": 13354, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
469 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
470 "test-compile": {"status": "ok", "tookMs": 11133, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
471 "test": {"status": "ok", "tookMs": 3139, "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": 3304, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
479 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
480 "test-compile": {"status": "ok", "tookMs": 1703, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
481 "test": {"status": "ok", "tookMs": 12411, "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: 70 s (0:01:10.0), completed Nov 28, 2025, 12:00:42 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.