;; disfluid, implementation of the Solid specification ;; Copyright (C) 2021 Vivien Kraus ;; This program is free software: you can redistribute it and/or modify ;; it under the terms of the GNU Affero General Public License as ;; published by the Free Software Foundation, either version 3 of the ;; License, or (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU Affero General Public License for more details. ;; You should have received a copy of the GNU Affero General Public License ;; along with this program. If not, see . (use-modules (webid-oidc jwk) (sxml simple) (webid-oidc testing) (webid-oidc serializable) (oop goops)) (define (xml->key xml) (call-with-input-string xml read/xml)) (with-test-environment "xml-keys" (lambda () (let ((key-xml " ") (key (make #:crv 'P-256 #:x "l8tFrhx-34tV3hRICRDY9zCkDlpBhF42UQUfWVAWBFs" #:y "9VE4jf_Ok_o64zbTTlcuNJajHmt6v9TDVrU0CdvGRDA"))) (let ((parsed-once (xml->key key-xml)) (printed-once (call-with-output-string (lambda (port) (sxml->xml (->sxml key) port))))) (let ((parsed-twice (xml->key printed-once)) (printed-twice (call-with-output-string (lambda (port) (sxml->xml (->sxml parsed-once) port))))) (let ((parsed-thrice (xml->key printed-twice)) (printed-thrice (call-with-output-string (lambda (port) (sxml->xml (->sxml parsed-twice) port))))) (unless (and (equal? parsed-once key) (equal? parsed-twice parsed-once) (equal? parsed-thrice parsed-twice) (equal? printed-twice printed-once) (equal? printed-thrice printed-twice)) (exit 1))))))))