summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2021-09-21 19:49:24 +0200
committerVivien Kraus <vivien@planete-kraus.eu>2021-09-21 22:34:45 +0200
commit0d74f8c1ca9c1e9bf9a04b85f598ba7a175d1d86 (patch)
treebcac166559940b2785e5925aedd2ce39e751d9fa /tests
parent3be4b418a4ec1e94d28401810ff8629ddc86adf9 (diff)
OIDC configuration: use GOOPS and document it
Diffstat (limited to 'tests')
-rw-r--r--tests/client-workflow.scm38
-rw-r--r--tests/oidc-configuration.scm58
-rw-r--r--tests/resource-server.scm47
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))))