Build Logs

softwaremill/akka-http-session • 3.8.0-RC6:2026-01-08

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-RC6
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-RC6"
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-RC6
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-RC6
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-RC6
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-RC6"
70"++3.8.0-RC6 -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-RC6 """{"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.256s.
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-RC6
90OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in core/crossScalaVersions
91OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in javaTests/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 pekkoJavaTests/crossScalaVersions
94OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in pekkoJwt3/crossScalaVersions
95OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) in pekkoJwt3/crossScalaVersions
96OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in pekkoExample3/crossScalaVersions
97OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) 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-RC6 -> 3.8.0-RC6 in pekkoJavaTests3/crossScalaVersions
103OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) in pekkoJavaTests3/crossScalaVersions
104OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in pekkoCore3/crossScalaVersions
105OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) in pekkoCore3/crossScalaVersions
106OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.11) in pekkoExample/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-RC6 on 4 projects.
109[info] Switching Scala version on:
110[info] pekkoJwt3 (3.8.0-RC6)
111[info] pekkoJavaTests3 (3.8.0-RC6)
112[info] pekkoCore3 (3.8.0-RC6)
113[info] pekkoExample3 (3.8.0-RC6)
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 Jan 8, 2026, 1:27:53 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: getaj3v8tlcfmkei, user: Map(k1 -> v1), expires: 1770424097796, now: 1767832097796
191Storing token for selector: 2lq0a8cm1mqc8qf4, user: Map(k1 -> v1), expires: 1770424097865, now: 1767832097865
192Storing token for selector: v1fdmgo454icvmbm, user: Map(k1 -> v1), expires: 1770424097871, now: 1767832097871
193Storing token for selector: 51r2ac4m8d86c6pr, user: Map(k1 -> v1), expires: 1770424097878, now: 1767832097878
194Storing token for selector: n2bubqu6rgmkh069, user: Map(k1 -> v1), expires: 1770424097903, now: 1767832097903
195Storing token for selector: 9nn9t065r288aegf, user: Map(k1 -> v1), expires: 1770424097914, now: 1767832097914
196Storing token for selector: udo4e5f6ncg8v45l, user: Map(k1 -> v1), expires: 1770424097921, now: 1767832097921
197Looking up token for selector: udo4e5f6ncg8v45l, found: true
198Storing token for selector: a7eqfju0hhc4b75e, user: Map(k1 -> v1), expires: 1770424097935, now: 1767832097935
199Running scheduled operation immediately
200Removing token for selector: udo4e5f6ncg8v45l
201Storing token for selector: husv7k3825qsi78d, user: Map(k1 -> v1), expires: 1770424097948, now: 1767832097948
202Looking up token for selector: husv7k3825qsi78d, found: true
203Storing token for selector: m1eg8n1s6f1p3h2m, user: Map(k1 -> v1), expires: 1770424097951, now: 1767832097951
204Running scheduled operation immediately
205Removing token for selector: husv7k3825qsi78d
206Storing token for selector: l527c951li1tutjk, user: Map(k1 -> v1), expires: 1770424097956, now: 1767832097956
207Looking up token for selector: l527c951li1tutjk, found: true
208Storing token for selector: itp3n2i8jqut74h8, user: Map(k1 -> v1), expires: 1770424097963, now: 1767832097963
209Running scheduled operation immediately
210Removing token for selector: l527c951li1tutjk
211[INFO] [01/08/2026 01:28:17.962] [pool-19-thread-5] [CoordinatedShutdown(pekko://com-softwaremill-pekkohttpsession-OneOffSetRefreshableGetTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
212Storing token for selector: olc76742k8qhit9r, user: Map(k1 -> v1), expires: 1770424097968, now: 1767832097968
213Storing token for selector: j1bcqn7843lkn0oc, user: Map(k1 -> v1), expires: 1770424098005, now: 1767832098005
214Removing token for selector: j1bcqn7843lkn0oc
215Storing token for selector: 6nj178vi4savmchi, user: Map(k1 -> v1), expires: 2595028000, now: 1767832098053
216Looking up token for selector: 6nj178vi4savmchi, found: true
217Storing token for selector: p621lpb4u9i49nsa, user: Map(k1 -> v1), expires: 2595098000, now: 1767832098062
218Running scheduled operation immediately
219Removing token for selector: 6nj178vi4savmchi
220Storing token for selector: cq7e0tbtu78g146d, user: Map(k1 -> v1), expires: 2595028000, now: 1767832098066
221Looking up token for selector: cq7e0tbtu78g146d, found: true
222Storing token for selector: e8qaf2n2ae3pnh81, user: Map(k1 -> v1), expires: 2595098000, now: 1767832098069
223Running scheduled operation immediately
224Removing token for selector: cq7e0tbtu78g146d
225Storing token for selector: 7u2fdlr18aicpta8, user: Map(k1 -> v1), expires: 2595028000, now: 1767832098075
226Storing token for selector: u7ucbs59ie64mpb8, user: Map(k1 -> v1), expires: 1770424098087, now: 1767832098087
227Storing token for selector: 6fn2ov024783d9im, user: Map(k1 -> v1), expires: 1770424098094, now: 1767832098094
228Storing token for selector: ssu614hkgkmn6365, user: Map(k1 -> v1), expires: 1770424098102, now: 1767832098102
229Storing token for selector: fjlqhnsc2fu1u4gu, user: Map(k1 -> v1), expires: 1770424098109, now: 1767832098109
230Storing token for selector: fr1omr9abkvt99mk, user: Map(k1 -> v1), expires: 1770424098122, now: 1767832098122
231Storing token for selector: dtchtc1afo47ibvu, user: Map(k1 -> v1), expires: 1770424098141, now: 1767832098141
232Looking up token for selector: dtchtc1afo47ibvu, found: true
233Storing token for selector: pk8emamr2cd97cq6, user: Map(k1 -> v1), expires: 1770424098143, now: 1767832098143
234Running scheduled operation immediately
235Removing token for selector: dtchtc1afo47ibvu
236Storing token for selector: 302e45aah816l477, user: Map(k1 -> v1), expires: 1770424098156, now: 1767832098156
237Looking up token for selector: 302e45aah816l477, found: true
238Storing token for selector: 9391hfvoqcg0jgdc, user: Map(k1 -> v1), expires: 1770424098159, now: 1767832098159
239Running scheduled operation immediately
240Removing token for selector: 302e45aah816l477
241Storing token for selector: a1tu13uj259412o7, user: Map(k1 -> v1), expires: 1770424098165, now: 1767832098165
242Looking up token for selector: a1tu13uj259412o7, found: true
243Storing token for selector: urueikc0b6ec7lmb, user: Map(k1 -> v1), expires: 1770424098169, now: 1767832098169
244Running scheduled operation immediately
245Removing token for selector: a1tu13uj259412o7
246Storing token for selector: 5l5jn72h6cqr530q, user: Map(k1 -> v1), expires: 1770424098173, now: 1767832098173
247Storing token for selector: s381h00mj9c1ve7q, user: Map(k1 -> v1), expires: 1770424098182, now: 1767832098182
248Removing token for selector: s381h00mj9c1ve7q
249Storing token for selector: jciq4b4j4qnmhrlf, user: Map(k1 -> v1), expires: 2595028000, now: 1767832098203
250Looking up token for selector: jciq4b4j4qnmhrlf, found: true
251Storing token for selector: 9lof7k1slm92ebl6, user: Map(k1 -> v1), expires: 2595098000, now: 1767832098217
252Running scheduled operation immediately
253Removing token for selector: jciq4b4j4qnmhrlf
254Storing token for selector: qn3t5iv1sl5rolf2, user: Map(k1 -> v1), expires: 2595028000, now: 1767832098219
255Looking up token for selector: qn3t5iv1sl5rolf2, found: true
256Storing token for selector: dnv3rt43b998l9sd, user: Map(k1 -> v1), expires: 2595098000, now: 1767832098223
257Running scheduled operation immediately
258Removing token for selector: qn3t5iv1sl5rolf2
259Storing token for selector: lu53kqhl0t2d4kg2, user: Map(k1 -> v1), expires: 2595028000, now: 1767832098231
260[INFO] [01/08/2026 01:28:18.238] [pool-19-thread-1] [CoordinatedShutdown(pekko://com-softwaremill-pekkohttpsession-RefreshableTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
261[INFO] [01/08/2026 01:28:18.356] [pool-19-thread-4] [CoordinatedShutdown(pekko://com-softwaremill-pekkohttpsession-OneOffTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
262[INFO] [01/08/2026 01:28:18.392] [pool-19-thread-7] [CoordinatedShutdown(pekko://com-softwaremill-pekkohttpsession-CsrfDirectivesTest)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
263[info] + SessionManagerBasicEncoder.decodes v0.5.1 tokens with migration config: OK, passed 100 tests.
264[info] + SessionManagerBasicEncoder.encode+decode: OK, passed 100 tests.
265[info] + SessionManagerBasicEncoder.doesn't decode expired session: OK, passed 100 tests.
266[info] OneOffSetRefreshableGetTest:
267[info] Using cookies
268[info] - should read an optional session when only the session is set
269[info] Using cookies
270[info] - should invalidate a session
271[info] Using cookies
272[info] - should touch the session, without setting a refresh token
273[info] Using headers
274[info] - should read an optional session when only the session is set
275[info] Using headers
276[info] - should invalidate a session
277[info] Using headers
278[info] - should touch the session, without setting a refresh token
279[info] CsrfDirectivesTest:
280[info] - should set the csrf cookie on the first get request only
281[info] - should reject requests if the csrf cookie doesn't match the header value
282[info] - should reject requests if the csrf cookie isn't set
283[info] - should reject requests if the csrf cookie and the header are empty
284[info] - should reject requests if the csrf cookie and the header contain illegal value
285[info] - should reject requests if the csrf cookie and the header contain structurally correct but incorrectly hashed value
286[info] - should accept requests if the csrf cookie matches the header value
287[info] - should accept requests if the csrf cookie matches the form field value
288[info] - should set a new csrf cookie when requested
289[info] RefreshableTest:
290[info] Using cookies
291[info] - should set the refresh token cookie to expire
292[info] Using cookies
293[info] - should set both the session and refresh token
294[info] Using cookies
295[info] - should set a new refresh token when the session is set again
296[info] Using cookies
297[info] - should read an optional session when both the session and refresh token are set
298[info] Using cookies
299[info] - should read an optional session when only the session is set
300[info] Using cookies
301[info] - should set a new session after the session is re-created
302[info] Using cookies
303[info] - should read an optional session when none is set
304[info] Using cookies
305[info] - should read an optional session when only the refresh token is set (re-create the session)
306[info] Using cookies
307[info] - should set a new refresh token after the session is re-created
308[info] Using cookies
309[info] - should read a required session when both the session and refresh token are set
310[info] Using cookies
311[info] - should invalidate a session
312[info] Using cookies
313[info] - should reject the request if the session is not set
314[info] Using cookies
315[info] - should reject the request if the session is invalid
316[info] Using cookies
317[info] - should reject the request if the refresh token is invalid
318[info] Using cookies
319[info] - should touch the session, keeping the refresh token token intact
320[info] Using cookies
321[info] - should re-create an expired session and send back new tokens without duplicate headers
322[info] Using cookies
323[info] - should touch the session and send back session without duplicate headers
324[info] Using headers
325[info] - should set both the session and refresh token
326[info] Using headers
327[info] - should set a new refresh token when the session is set again
328[info] Using headers
329[info] - should read an optional session when both the session and refresh token are set
330[info] Using headers
331[info] - should read an optional session when only the session is set
332[info] Using headers
333[info] - should set a new session after the session is re-created
334[info] Using headers
335[info] - should read an optional session when none is set
336[info] Using headers
337[info] - should read an optional session when only the refresh token is set (re-create the session)
338[info] Using headers
339[info] - should set a new refresh token after the session is re-created
340[info] Using headers
341[info] - should read a required session when both the session and refresh token are set
342[info] Using headers
343[info] - should invalidate a session
344[info] Using headers
345[info] - should reject the request if the session is not set
346[info] Using headers
347[info] - should reject the request if the session is invalid
348[info] Using headers
349[info] - should reject the request if the refresh token is invalid
350[info] Using headers
351[info] - should touch the session, keeping the refresh token token intact
352[info] Using headers
353[info] - should re-create an expired session and send back new tokens without duplicate headers
354[info] Using headers
355[info] - should touch the session and send back session without duplicate headers
356[info] OneOffTest:
357[info] Using cookies
358[info] - should set the correct session cookie name
359[info] Using cookies
360[info] - should set the session
361[info] Using cookies
362[info] - should read an optional session when the session is set
363[info] Using cookies
364[info] - should read an optional session when the session is not set
365[info] Using cookies
366[info] - should read a required session when the session is set
367[info] Using cookies
368[info] - should reject the request if the expiry is tampered with
369[info] Using cookies
370[info] - should invalidate a session
371[info] Using cookies
372[info] - should reject the request if the session is not set
373[info] Using cookies
374[info] - should reject the request if the session is invalid
375[info] Using cookies
376[info] - should touch the session
377[info] Using cookies
378[info] - should reject v0.5.1 session without migration config
379[info] Using cookies
380[info] - should migrate v0.5.1 session with migration config
381[info] Using cookies
382[info] - should reject v0.5.2 session without migration config
383[info] Using cookies
384[info] - should migrate v0.5.2 session with migration config
385[info] Using headers
386[info] - should set the session
387[info] Using headers
388[info] - should read an optional session when the session is set
389[info] Using headers
390[info] - should read an optional session when the session is not set
391[info] Using headers
392[info] - should read a required session when the session is set
393[info] Using headers
394[info] - should reject the request if the expiry is tampered with
395[info] Using headers
396[info] - should invalidate a session
397[info] Using headers
398[info] - should reject the request if the session is not set
399[info] Using headers
400[info] - should reject the request if the session is invalid
401[info] Using headers
402[info] - should touch the session
403[info] Using headers
404[info] - should reject v0.5.1 session without migration config
405[info] Using headers
406[info] - should migrate v0.5.1 session with migration config
407[info] Using headers
408[info] - should reject v0.5.2 session without migration config
409[info] Using headers
410[info] - should migrate v0.5.2 session with migration config
411[info] + SessionManagerBasicEncoder.decodes v0.5.2 tokens with migration config: OK, passed 100 tests.
412[info] + SessionManagerBasicEncoder.doesn't decode session with tampered expiry: OK, passed 100 tests.
413[info] SessionConfigTest:
414[info] - should load and parse default (HS256) JWS config
415[info] - should load and parse HS256 JWS config
416[info] - should load and parse RS256 JWS config
417[info] - should fail to load config due to missing RSA private key (alg = RS256)
418[info] - should fail to load config due to empty RSA private key (alg = RS256)
419[info] - should fail to load config due to invalid RSA private key (alg = RS256)
420[info] - should fail to load config due to unsupported JWS alg
421[info] - should load JWT config
422[info] - should fallback to empty JWT config (with default exp-timeout) if absent
423[info] - should fallback to empty JWT config (without default exp-timeout) if absent
424[info] - should use max-age as a default value for jwt.expirationTimeout
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": 10465, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
469 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
470 "test-compile": {"status": "ok", "tookMs": 10244, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
471 "test": {"status": "ok", "tookMs": 2925, "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": 1105, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
479 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
480 "test-compile": {"status": "ok", "tookMs": 1568, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
481 "test": {"status": "ok", "tookMs": 5433, "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: 36 s, completed Jan 8, 2026, 1:28:29 AM
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.