Unified · Split
| @@ -46,11 +46,10 @@ scenario( · 45 unmodified lines | |||
| 46 | const decoded = decodeLoginState( | 46 | const decoded = decodeLoginState( |
| 47 | Result.getOrElse(Encoding.decodeBase64UrlString(state), () => ""), | 47 | Result.getOrElse(Encoding.decodeBase64UrlString(state), () => ""), |
| 48 | ); | 48 | ); |
| 49 | expect(decoded._tag, "the state decodes as our login-state envelope").toBe("Some"); | 49 | expect(Option.isSome(decoded), "the state decodes as our login-state envelope").toBe(true); |
| 50 | expect( | 50 | expect(Option.getOrThrow(decoded).nonce, "the state carries an unguessable CSRF nonce").toMatch( |
| 51 | decoded._tag === "Some" ? decoded.value.nonce : "", | 51 | /^[0-9a-f]{64}$/, |
| 52 | "the state carries an unguessable CSRF nonce", | 52 | ); |
| 53 | ).toMatch(/^[0-9a-f]{64}$/); | ||
| 54 | expect( | 53 | expect( |
| 55 | authorizeUrl.searchParams.get("redirect_uri"), | 54 | authorizeUrl.searchParams.get("redirect_uri"), |
| 56 | "AuthKit is told to come back to this deployment's callback", | 55 | "AuthKit is told to come back to this deployment's callback", |
| @@ -84,7 +83,7 @@ scenario( · 27 unmodified lines | |||
| 84 | const decoded = decodeLoginState( | 83 | const decoded = decodeLoginState( |
| 85 | Result.getOrElse(Encoding.decodeBase64UrlString(state), () => ""), | 84 | Result.getOrElse(Encoding.decodeBase64UrlString(state), () => ""), |
| 86 | ); | 85 | ); |
| 87 | expect(decoded._tag).toBe("Some"); | 86 | expect(Option.isSome(decoded)).toBe(true); |
| 88 | expect(Option.getOrThrow(decoded).returnTo).toBeUndefined(); | 87 | expect(Option.getOrThrow(decoded).returnTo).toBeUndefined(); |
| 89 | } | 88 | } |
| 90 | }), | 89 | }), |