diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2020-12-02 09:31:05 +0100 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2021-06-05 16:15:35 +0200 |
commit | 9e4ffd421e33679ab4ae7a3e605dd64d8ff693e1 (patch) | |
tree | edc8d6cc7e925c4917444a014236ed8c683615cc /tests/too-many-refresh-tokens.scm | |
parent | 8bf760384074e90dcc27c10d2c688cb5ac3dfa2f (diff) |
Add the refresh token code
Diffstat (limited to 'tests/too-many-refresh-tokens.scm')
-rw-r--r-- | tests/too-many-refresh-tokens.scm | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/too-many-refresh-tokens.scm b/tests/too-many-refresh-tokens.scm new file mode 100644 index 0000000..cd1cbdc --- /dev/null +++ b/tests/too-many-refresh-tokens.scm @@ -0,0 +1,50 @@ +(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)) + +(define (issue-n-refresh-tokens key n) + (if (<= n 0) + '() + (let ((next + (issue-refresh-token + (string->uri (format #f "https://subject-~a.com" (+ n 1))) + (string->uri (format #f "https://client-~a.com" (+ n 1))) + (jkt key)))) + (cons next + (issue-n-refresh-tokens key (- n 1)))))) + +(with-test-environment + "too-many-refresh-tokens" + (lambda () + (let* ((key (generate-key #:n-size 2048)) + (refresh-tokens (list->vector (issue-n-refresh-tokens key 21)))) + (let ((first-refresh-token (vector-ref refresh-tokens 0)) + (second-refresh-token (vector-ref refresh-tokens 20))) + (with-exception-handler + (lambda (error) + (unless ((record-predicate &invalid-refresh-token) error) + (exit 1))) + (lambda () + (with-refresh-token first-refresh-token key + (lambda (sub aud) + ;; It has been made invalid! + (exit 1)))) + #:unwind? #t + #:unwind-for-type &invalid-refresh-token) + (unless (with-refresh-token second-refresh-token key + (lambda (sub aud) + (format (current-error-port) + "~a / ~a\n" + (uri->string sub) + (uri->string aud)) + (unless (equal? sub (string->uri "https://subject-2.com")) + (exit 2)) + (unless (equal? aud (string->uri "https://client-2.com")) + (exit 3)))) + (exit 4)))))) |