3
from twisted.internet import reactor
4
from twisted.internet.defer import Deferred
6
from landscape.tests.helpers import LandscapeTest
7
from landscape.lib.gpg import gpg_verify
10
class GPGTest(LandscapeTest):
12
def test_gpg_verify(self):
14
L{gpg_verify} runs the given gpg binary and returns C{True} if the
15
provided signature is valid.
17
gpg_options = self.makeFile()
18
gpg = self.makeFile("#!/bin/sh\n"
19
"touch $3/trustdb.gpg\n"
20
"echo -n $@ > %s\n" % gpg_options)
22
gpg_home = self.makeDir()
23
mkdtemp_mock = self.mocker.replace("tempfile.mkdtemp")
25
self.mocker.result(gpg_home)
32
result = gpg_verify("/some/file", "/some/signature", gpg=gpg)
34
def check_result(ignored):
35
self.assertEquals(open(gpg_options).read(),
36
"--no-options --homedir %s --no-default-keyring "
37
"--ignore-time-conflict --keyring /etc/apt/trusted.gpg "
38
"--verify /some/signature /some/file" % gpg_home)
39
self.assertFalse(os.path.exists(gpg_home))
41
result.addCallback(check_result)
42
result.chainDeferred(deferred)
44
reactor.callWhenRunning(do_test)
47
def test_gpg_verify_with_non_zero_gpg_exit_code(self):
49
L{gpg_verify} runs the given gpg binary and returns C{False} if the
50
provided signature is not valid.
52
gpg = self.makeFile("#!/bin/sh\necho out; echo err >&2; exit 1\n")
54
gpg_home = self.makeDir()
55
mkdtemp_mock = self.mocker.replace("tempfile.mkdtemp")
57
self.mocker.result(gpg_home)
64
result = gpg_verify("/some/file", "/some/signature", gpg=gpg)
66
def check_failure(failure):
67
self.assertEquals(str(failure.value),
68
"%s failed (out='out\n', err='err\n', "
70
self.assertFalse(os.path.exists(gpg_home))
72
result.addCallback(self.fail)
73
result.addErrback(check_failure)
74
result.chainDeferred(deferred)
76
reactor.callWhenRunning(do_test)