-(define-syntax-rule (test-error-condition name pred message-rx exp)
- (test-assert name
- (guard (condition ((pred condition)
- (and (string-match message-rx
- (condition-message condition))
- #t))
- (else #f))
- exp
- #f)))
-
-(test-error-condition "corrupt signature data"
- nar-signature-error? "corrupt"
- (assert-valid-signature (string->canonical-sexp "(foo bar baz)") "irrelevant"
- (open-input-string "irrelevant")
- (public-keys->acl (list %public-key))))
-
-(test-error-condition "unauthorized public key"
- nar-signature-error? "unauthorized"
- (assert-valid-signature (narinfo-signature->canonical-sexp
- (signature-field "foo"))
- "irrelevant"
- (open-input-string "irrelevant")
- (public-keys->acl '())))
-
-(test-error-condition "invalid signature"
- nar-signature-error? "invalid signature"
- (let ((message "this is the message that we sign"))
- (assert-valid-signature (narinfo-signature->canonical-sexp
- (signature-field message
- #:public-key %wrong-public-key))
- (sha256 (string->utf8 message))
- (open-input-string "irrelevant")
- (public-keys->acl (list %wrong-public-key)))))