tests: Fix agent teardown in release builds.
[gnupg.git] / tests / openpgp / delete-keys.scm
1 #!/usr/bin/env gpgscm
2
3 ;; Copyright (C) 2016 g10 Code GmbH
4 ;;
5 ;; This file is part of GnuPG.
6 ;;
7 ;; GnuPG is free software; you can redistribute it and/or modify
8 ;; it under the terms of the GNU General Public License as published by
9 ;; the Free Software Foundation; either version 3 of the License, or
10 ;; (at your option) any later version.
11 ;;
12 ;; GnuPG is distributed in the hope that it will be useful,
13 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 ;; GNU General Public License for more details.
16 ;;
17 ;; You should have received a copy of the GNU General Public License
18 ;; along with this program; if not, see <http://www.gnu.org/licenses/>.
19
20 (load (in-srcdir "tests" "openpgp" "defs.scm"))
21 (setup-legacy-environment)
22
23 (let* ((key keys::alfa)
24       (subkey (car key::subkeys)))
25   (assert (have-public-key? key))
26   (assert (have-public-key? subkey))
27   (assert (have-secret-key? key))
28   (assert (have-secret-key-file? key))
29   (assert (have-secret-key? subkey))
30   (assert (have-secret-key-file? subkey))
31
32   ;; Firstly, delete the secret key.
33   (call-check `(,@gpg --delete-secret-keys ,key::fpr))
34   (assert (have-public-key? key))
35   (assert (have-public-key? subkey))
36   (assert (not (have-secret-key? key)))
37   (assert (not (have-secret-key-file? key)))
38   (assert (not (have-secret-key? subkey)))
39   (assert (not (have-secret-key-file? subkey)))
40
41   ;; Now, delete the public key.
42   (call-check `(,@gpg --delete-keys ,key::fpr))
43   (assert (not (have-public-key? key)))
44   (assert (not (have-public-key? subkey))))
45
46 ;; Do the same for key one, but do the subkeys separately.
47 (let* ((key keys::one)
48        (subkey (car key::subkeys)))
49   (assert (have-public-key? key))
50   (assert (have-public-key? subkey))
51   (assert (have-secret-key? key))
52   (assert (have-secret-key-file? key))
53   (assert (have-secret-key-file? key))
54   (assert (have-secret-key? subkey))
55   (assert (have-secret-key-file? subkey))
56
57   ;; Firstly, delete the secret subkey.
58   (call-check `(,@gpg --delete-secret-keys ,subkey::fpr))
59   (assert (have-public-key? key))
60   (assert (have-public-key? subkey))
61   ;; JW: Deleting the secret subkey also deletes the secret key.  This
62   ;; is a deliberate design choice, and currently there is no way to
63   ;; delete the subkey without using --edit-key.
64   ;; XXX (assert (have-secret-key? key))
65   ;; XXX (assert (have-secret-key-file? key))
66   (assert (not (have-secret-key? subkey)))
67   (assert (not (have-secret-key-file? subkey)))
68
69   ;; Then, delete the secret key.
70   ;; JW: We already deleted the key.  See above.
71   ;; XXX (call-check `(,@gpg --delete-secret-keys ,key::fpr))
72   (assert (have-public-key? key))
73   (assert (have-public-key? subkey))
74   (assert (not (have-secret-key? key)))
75   (assert (not (have-secret-key-file? key)))
76   (assert (not (have-secret-key? subkey)))
77   (assert (not (have-secret-key-file? subkey)))
78
79   ;; Now, delete the public subkey.
80   (call-check `(,@gpg --delete-keys ,subkey::fpr))
81   ;; JW: Deleting the subkey also deletes the key.  This
82   ;; is a deliberate design choice, and currently there is no way to
83   ;; delete the subkey without using --edit-key.
84   ;; XXX (assert (have-public-key? key))
85   (assert (not (have-public-key? subkey)))
86
87   ;; Now, delete the public key.
88   ;; JW: We already deleted the key.  See above.
89   ;; XXX (call-check `(,@gpg --delete-keys ,key::fpr))
90   (assert (not (have-public-key? key)))
91   (assert (not (have-public-key? subkey))))
92
93 (let* ((key keys::two)
94       (subkey (car key::subkeys)))
95   (assert (have-public-key? key))
96   (assert (have-public-key? subkey))
97   (assert (have-secret-key? key))
98   (assert (have-secret-key-file? key))
99   (assert (have-secret-key? subkey))
100   (assert (have-secret-key-file? subkey))
101
102   ;; Delete everything at once.
103   (call-check `(,@gpg --delete-secret-and-public-key ,key::fpr))
104   (assert (not (have-public-key? key)))
105   (assert (not (have-public-key? subkey)))
106   (assert (not (have-secret-key? key)))
107   (assert (not (have-secret-key-file? key)))
108   (assert (not (have-secret-key? subkey)))
109   (assert (not (have-secret-key-file? subkey))))