~free.ekanayaka/landscape-client/lucid-1.4.4-0ubuntu0.10.04

« back to all changes in this revision

Viewing changes to landscape/lib/tests/test_gpg.py

  • Committer: Bazaar Package Importer
  • Author(s): Free Ekanayaka
  • Date: 2009-12-16 10:50:05 UTC
  • mfrom: (1.1.12 upstream)
  • Revision ID: james.westby@ubuntu.com-20091216105005-svplwdorkgz6vja7
Tags: 1.4.0-0ubuntu0.10.04.0
* New upstream release with several bug fixes:
  - Fix landscape daemons fail to start when too many groups are
    available (LP: #456124)
  - Fix landscape programs wake up far too much. (LP: #340843)
  - Fix Package manager fails with 'no such table: task' (LP #465846)
  - Fix test suite leaving temporary files around (LP #476418)
  - Fix the 1hr long wait for user data to be uploaded following a
    resynchronisation (LP #369000)

* Add support for Ubuntu release upgrades:
  - Add helper function to fetch many files at once (LP: #450629)
  - Handle release-upgrade messages in the packagemanager
    plugin (LP: #455217)
  - Add a release-upgrader task handler (LP: #462543)
  - Support upgrade-tool environment variables (LP: #463321)

* Add initial support for Smart package locking:
  - Detect and report changes about Smart package locks (#488108)

* Packaging fixes:
  - Turn unnecessary Pre-Depends on python-gobject into a regular Depends
  - If it's empty, remove /etc/landscape upon purge

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import os
 
2
 
 
3
from twisted.internet import reactor
 
4
from twisted.internet.defer import Deferred
 
5
 
 
6
from landscape.tests.helpers import LandscapeTest
 
7
from landscape.lib.gpg import gpg_verify
 
8
 
 
9
 
 
10
class GPGTest(LandscapeTest):
 
11
 
 
12
    def test_gpg_verify(self):
 
13
        """
 
14
        L{gpg_verify} runs the given gpg binary and returns C{True} if the
 
15
        provided signature is valid.
 
16
        """
 
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)
 
21
        os.chmod(gpg, 0755)
 
22
        gpg_home = self.makeDir()
 
23
        mkdtemp_mock = self.mocker.replace("tempfile.mkdtemp")
 
24
        mkdtemp_mock()
 
25
        self.mocker.result(gpg_home)
 
26
        self.mocker.replay()
 
27
 
 
28
        deferred = Deferred()
 
29
 
 
30
        def do_test():
 
31
 
 
32
            result = gpg_verify("/some/file", "/some/signature", gpg=gpg)
 
33
 
 
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))
 
40
 
 
41
            result.addCallback(check_result)
 
42
            result.chainDeferred(deferred)
 
43
 
 
44
        reactor.callWhenRunning(do_test)
 
45
        return deferred
 
46
 
 
47
    def test_gpg_verify_with_non_zero_gpg_exit_code(self):
 
48
        """
 
49
        L{gpg_verify} runs the given gpg binary and returns C{False} if the
 
50
        provided signature is not valid.
 
51
        """
 
52
        gpg = self.makeFile("#!/bin/sh\necho out; echo err >&2; exit 1\n")
 
53
        os.chmod(gpg, 0755)
 
54
        gpg_home = self.makeDir()
 
55
        mkdtemp_mock = self.mocker.replace("tempfile.mkdtemp")
 
56
        mkdtemp_mock()
 
57
        self.mocker.result(gpg_home)
 
58
        self.mocker.replay()
 
59
 
 
60
        deferred = Deferred()
 
61
 
 
62
        def do_test():
 
63
 
 
64
            result = gpg_verify("/some/file", "/some/signature", gpg=gpg)
 
65
 
 
66
            def check_failure(failure):
 
67
                self.assertEquals(str(failure.value),
 
68
                                  "%s failed (out='out\n', err='err\n', "
 
69
                                  "code='1')" % gpg)
 
70
                self.assertFalse(os.path.exists(gpg_home))
 
71
 
 
72
            result.addCallback(self.fail)
 
73
            result.addErrback(check_failure)
 
74
            result.chainDeferred(deferred)
 
75
 
 
76
        reactor.callWhenRunning(do_test)
 
77
        return deferred