diff options
Diffstat (limited to 'tests/refresh-token.scm')
-rw-r--r-- | tests/refresh-token.scm | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/refresh-token.scm b/tests/refresh-token.scm new file mode 100644 index 0000000..1586d4f --- /dev/null +++ b/tests/refresh-token.scm @@ -0,0 +1,52 @@ +(use-modules (webid-oidc refresh-token) + (webid-oidc testing) + (webid-oidc errors) + (webid-oidc jwk) + (web uri) + (srfi srfi-19) + (web response) + (ice-9 optargs) + (ice-9 receive)) + +(with-test-environment + "refresh-token" + (lambda () + (define sub-a (string->uri "https://subject.a")) + (define sub-b (string->uri "https://subject.b")) + (define aud-a (string->uri "https://client.a")) + (define aud-b (string->uri "https://client.b")) + (define key-a (generate-key #:n-size 2048)) + (define key-b (generate-key #:n-size 2048)) + (define refresh-a (issue-refresh-token sub-a aud-a (jkt key-a))) + (define refresh-b (issue-refresh-token sub-b aud-b (jkt key-b))) + (unless (string? refresh-a) + (exit 2)) + (unless (string? refresh-b) + (exit 3)) + (unless + (with-refresh-token refresh-a key-a + (lambda (sub aud) + (unless (equal? sub-a sub) + (exit 4)) + (unless (equal? aud-a aud) + (exit 5)))) + (exit 6)) + (unless + (with-refresh-token refresh-b key-b + (lambda (sub aud) + (unless (equal? sub-b sub) + (exit 7)) + (unless (equal? aud-b aud) + (exit 8)))) + (exit 9)) + (remove-refresh-token sub-b aud-b) + (with-exception-handler + (lambda (error) + (unless ((record-predicate &invalid-refresh-token) error) + (exit 10))) + (lambda () + (with-refresh-token refresh-b key-b + (lambda (sub aud) + (exit 11)))) + #:unwind? #t + #:unwind-for-type &invalid-refresh-token))) |