diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2021-09-21 19:49:24 +0200 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2021-09-21 22:34:45 +0200 |
commit | 0d74f8c1ca9c1e9bf9a04b85f598ba7a175d1d86 (patch) | |
tree | bcac166559940b2785e5925aedd2ce39e751d9fa /tests | |
parent | 3be4b418a4ec1e94d28401810ff8629ddc86adf9 (diff) |
OIDC configuration: use GOOPS and document it
Diffstat (limited to 'tests')
-rw-r--r-- | tests/client-workflow.scm | 38 | ||||
-rw-r--r-- | tests/oidc-configuration.scm | 58 | ||||
-rw-r--r-- | tests/resource-server.scm | 47 |
3 files changed, 78 insertions, 65 deletions
diff --git a/tests/client-workflow.scm b/tests/client-workflow.scm index b0c0c2f..50514d8 100644 --- a/tests/client-workflow.scm +++ b/tests/client-workflow.scm @@ -14,24 +14,26 @@ ;; You should have received a copy of the GNU Affero General Public License ;; along with this program. If not, see <https://www.gnu.org/licenses/>. -(use-modules ((webid-oidc client) #:prefix client:) - ((webid-oidc client accounts) #:prefix client:) - ((webid-oidc jwk) #:prefix jwk:) - (webid-oidc testing) - ((webid-oidc stubs) #:prefix stubs:) - ((webid-oidc refresh-token) #:prefix refresh:) - ((webid-oidc simulation) #:prefix sim:) - ((webid-oidc parameters) #:prefix p:) - (web uri) - (web request) - (web response) - (srfi srfi-19) - (srfi srfi-26) - (ice-9 optargs) - (ice-9 receive) - (ice-9 hash-table) - (ice-9 match) - (oop goops)) +(define-module (tests client-workflow) + #:use-module ((webid-oidc client) #:prefix client:) + #:use-module ((webid-oidc client accounts) #:prefix client:) + #:use-module ((webid-oidc jwk) #:prefix jwk:) + #:use-module (webid-oidc testing) + #:use-module ((webid-oidc stubs) #:prefix stubs:) + #:use-module ((webid-oidc refresh-token) #:prefix refresh:) + #:use-module ((webid-oidc simulation) #:prefix sim:) + #:use-module ((webid-oidc parameters) #:prefix p:) + #:use-module (web uri) + #:use-module (web request) + #:use-module (web response) + #:use-module (srfi srfi-19) + #:use-module (srfi srfi-26) + #:use-module (ice-9 optargs) + #:use-module (ice-9 receive) + #:use-module (ice-9 hash-table) + #:use-module (ice-9 match) + #:use-module (oop goops) + #:duplicates (merge-generics)) ;; In this example, a user firsts requests an account, then logs in ;; with a refresh token, then logs out, but we can still revive per diff --git a/tests/oidc-configuration.scm b/tests/oidc-configuration.scm index 7f76280..736c3f8 100644 --- a/tests/oidc-configuration.scm +++ b/tests/oidc-configuration.scm @@ -14,16 +14,19 @@ ;; You should have received a copy of the GNU Affero General Public License ;; along with this program. If not, see <https://www.gnu.org/licenses/>. -(use-modules (webid-oidc oidc-configuration) - (webid-oidc jwk) - (webid-oidc cache) - (webid-oidc testing) - ((webid-oidc stubs) #:prefix stubs:) - (web uri) - (web response) - (srfi srfi-19) - (ice-9 receive) - (oop goops)) +(define-module (tests oidc-configuration) + #:use-module (webid-oidc oidc-configuration) + #:use-module (webid-oidc jwk) + #:use-module (webid-oidc cache) + #:use-module (webid-oidc testing) + #:use-module ((webid-oidc stubs) #:prefix stubs:) + #:use-module ((webid-oidc parameters) #:prefix p:) + #:use-module (web uri) + #:use-module (web response) + #:use-module (srfi srfi-19) + #:use-module (ice-9 receive) + #:use-module (oop goops) + #:duplicates (merge-generics)) (with-test-environment "oidc-configuration" @@ -120,26 +123,31 @@ (define cache-http-get (with-cache #:http-get respond)) - (define cfg (get-oidc-configuration - "example.com" - #:http-get cache-http-get)) - (define jwks (oidc-configuration-jwks - cfg - #:http-get cache-http-get)) - (unless (oidc-configuration? cfg) + (define cfg + (make <oidc-configuration> + #:server "example.com" + #:http-request cache-http-get)) + (define my-jwks + (parameterize ((p:anonymous-http-request cache-http-get)) + (jwks cfg))) + (unless (is-a? cfg <oidc-configuration>) (exit 3)) - (unless (is-a? jwks <jwks>) + (unless (is-a? my-jwks <jwks>) (exit 4)) - (let ((my-oidc `((jwks_uri . "https://example.com/keys") - (authorization_endpoint . "https://example.com/authorize") - (token_endpoint . "https://example.com/token") - (solid_oidc_supported . "https://solidproject.org/TR/solid-oidc")))) + (let ((my-oidc + (make <oidc-configuration> + #:jwks-uri "https://example.com/keys" + #:authorization-endpoint "https://example.com/authorize" + #:token-endpoint "https://example.com/token" + #:solid-oidc-supported "https://solidproject.org/TR/solid-oidc"))) (receive (response response-body) - (serve-oidc-configuration (time-utc->date (make-time time-utc 0 3600)) - my-oidc) + (serve my-oidc (time-utc->date (make-time time-utc 0 3600))) (unless (eqv? (car (response-content-type response)) 'application/json) (exit 5)) - (let ((parsed (the-oidc-configuration (stubs:json-string->scm response-body)))) + (let ((parsed + (->json-data + (make <oidc-configuration> + #:json-data (stubs:json-string->scm response-body))))) (unless (equal? (assq-ref parsed 'jwks_uri) "https://example.com/keys") (exit 7)) diff --git a/tests/resource-server.scm b/tests/resource-server.scm index a8032b1..89df999 100644 --- a/tests/resource-server.scm +++ b/tests/resource-server.scm @@ -14,23 +14,25 @@ ;; You should have received a copy of the GNU Affero General Public License ;; along with this program. If not, see <https://www.gnu.org/licenses/>. -(use-modules (webid-oidc provider-confirmation) - (webid-oidc jti) - (webid-oidc jwk) - (webid-oidc jws) - (webid-oidc oidc-configuration) - (webid-oidc access-token) - (webid-oidc dpop-proof) - (webid-oidc resource-server) - (webid-oidc testing) - ((webid-oidc parameters) #:prefix p:) - (web uri) - (web request) - (srfi srfi-19) - (web response) - (ice-9 optargs) - (ice-9 receive) - (oop goops)) +(define-module (tests resource-server) + #:use-module (webid-oidc provider-confirmation) + #:use-module (webid-oidc jti) + #:use-module (webid-oidc jwk) + #:use-module (webid-oidc jws) + #:use-module (webid-oidc oidc-configuration) + #:use-module (webid-oidc access-token) + #:use-module (webid-oidc dpop-proof) + #:use-module (webid-oidc resource-server) + #:use-module (webid-oidc testing) + #:use-module ((webid-oidc parameters) #:prefix p:) + #:use-module (web uri) + #:use-module (web request) + #:use-module (srfi srfi-19) + #:use-module (web response) + #:use-module (ice-9 optargs) + #:use-module (ice-9 receive) + #:use-module (oop goops) + #:duplicates (merge-generics)) (with-test-environment "resource-server" @@ -40,10 +42,11 @@ (define jwks (make <jwks> #:keys (list idp-key))) (define jwks-uri (string->uri "https://identity.provider/keys")) (define oidc-config - `((jwks_uri . ,(uri->string jwks-uri)) - (authorization_endpoint . "https://identity.provider/authorize") - (token_endpoint . "https://identity.provider/token") - (solid_oidc_supported . "https://solidproject.org/TR/solid-oidc"))) + (make <oidc-configuration> + #:jwks-uri jwks-uri + #:authorization-endpoint "https://identity.provider/authorize" + #:token-endpoint "https://identity.provider/token" + #:solid-oidc-supported "https://solidproject.org/TR/solid-oidc")) (define oidc-config-uri (string->uri "https://identity.provider/.well-known/openid-configuration")) @@ -51,7 +54,7 @@ (define* (http-get uri #:key (headers '())) (define exp (time-utc->date (make-time time-utc 0 3600))) (cond ((equal? uri oidc-config-uri) - (serve-oidc-configuration exp oidc-config)) + (serve oidc-config exp)) ((equal? uri jwks-uri) (serve jwks exp)) (else (exit 1)))) |