bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 
2052.3.2
by John Arbash Meinel
 Change Copyright .. by Canonical to Copyright ... Canonical  | 
1  | 
# Copyright (C) 2005 Canonical Ltd
 | 
| 
1442.1.55
by Robert Collins
 move environment preservation up to the root test case, making it available to all tests  | 
2  | 
#   Authors: Robert Collins <robert.collins@canonical.com>
 | 
3  | 
#
 | 
|
4  | 
# This program is free software; you can redistribute it and/or modify
 | 
|
5  | 
# it under the terms of the GNU General Public License as published by
 | 
|
6  | 
# the Free Software Foundation; either version 2 of the License, or
 | 
|
7  | 
# (at your option) any later version.
 | 
|
8  | 
#
 | 
|
9  | 
# This program is distributed in the hope that it will be useful,
 | 
|
10  | 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
|
11  | 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
|
12  | 
# GNU General Public License for more details.
 | 
|
13  | 
#
 | 
|
14  | 
# You should have received a copy of the GNU General Public License
 | 
|
15  | 
# along with this program; if not, write to the Free Software
 | 
|
16  | 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
|
17  | 
||
18  | 
"""Tests for signing and verifying blobs of data via gpg."""
 | 
|
19  | 
||
20  | 
# import system imports here
 | 
|
21  | 
import os  | 
|
22  | 
import sys  | 
|
23  | 
||
| 
1551.8.12
by Aaron Bentley
 Add test case for clearing PB  | 
24  | 
from bzrlib import errors, ui  | 
| 
1442.1.57
by Robert Collins
 check that we get the right command line from the default gpg strategy.  | 
25  | 
import bzrlib.gpg as gpg  | 
| 
1185.31.25
by John Arbash Meinel
 Renamed all of the tests from selftest/foo.py to tests/test_foo.py  | 
26  | 
from bzrlib.tests import TestCase, TestCaseInTempDir  | 
| 
1442.1.55
by Robert Collins
 move environment preservation up to the root test case, making it available to all tests  | 
27  | 
|
| 
1442.1.57
by Robert Collins
 check that we get the right command line from the default gpg strategy.  | 
28  | 
class FakeConfig(object):  | 
29  | 
||
30  | 
def gpg_signing_command(self):  | 
|
| 
1442.1.58
by Robert Collins
 gpg signing of content  | 
31  | 
return "false"  | 
| 
1442.1.57
by Robert Collins
 check that we get the right command line from the default gpg strategy.  | 
32  | 
|
| 
1442.1.55
by Robert Collins
 move environment preservation up to the root test case, making it available to all tests  | 
33  | 
|
34  | 
class TestCommandLine(TestCase):  | 
|
| 
1442.1.57
by Robert Collins
 check that we get the right command line from the default gpg strategy.  | 
35  | 
|
36  | 
def test_signing_command_line(self):  | 
|
37  | 
my_gpg = gpg.GPGStrategy(FakeConfig())  | 
|
| 
1185.78.4
by John Arbash Meinel
 Reverting gpg changes, should not be mainline, see gpg_uses_tempfile plugin.  | 
38  | 
self.assertEqual(['false', '--clearsign'],  | 
| 
1442.1.57
by Robert Collins
 check that we get the right command line from the default gpg strategy.  | 
39  | 
my_gpg._command_line())  | 
| 
1442.1.58
by Robert Collins
 gpg signing of content  | 
40  | 
|
41  | 
def test_checks_return_code(self):  | 
|
42  | 
        # This test needs a unix like platform - one with 'false' to run.
 | 
|
43  | 
        # if you have one, please make this work :)
 | 
|
44  | 
my_gpg = gpg.GPGStrategy(FakeConfig())  | 
|
45  | 
self.assertRaises(errors.SigningFailed, my_gpg.sign, 'content')  | 
|
46  | 
||
| 
1551.8.12
by Aaron Bentley
 Add test case for clearing PB  | 
47  | 
def assertProduces(self, content):  | 
48  | 
        # This needs a 'cat' command or similar to work.
 | 
|
| 
1442.1.58
by Robert Collins
 gpg signing of content  | 
49  | 
my_gpg = gpg.GPGStrategy(FakeConfig())  | 
| 
1185.31.54
by John Arbash Meinel
 Win32 not only doesn't have cat, it changes line-endings too. Should be fixed.  | 
50  | 
if sys.platform == 'win32':  | 
51  | 
            # Windows doesn't come with cat, and we don't require it
 | 
|
52  | 
            # so lets try using python instead.
 | 
|
53  | 
            # But stupid windows and line-ending conversions. 
 | 
|
54  | 
            # It is too much work to make sys.stdout be in binary mode.
 | 
|
55  | 
            # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65443
 | 
|
| 
1185.57.1
by John Arbash Meinel
 Use the correct python in case it isn't in the path  | 
56  | 
my_gpg._command_line = lambda:[sys.executable, '-c',  | 
| 
1185.78.4
by John Arbash Meinel
 Reverting gpg changes, should not be mainline, see gpg_uses_tempfile plugin.  | 
57  | 
'import sys; sys.stdout.write(sys.stdin.read())']  | 
| 
1185.31.54
by John Arbash Meinel
 Win32 not only doesn't have cat, it changes line-endings too. Should be fixed.  | 
58  | 
new_content = content.replace('\n', '\r\n')  | 
59  | 
||
60  | 
self.assertEqual(new_content, my_gpg.sign(content))  | 
|
61  | 
else:  | 
|
| 
1185.78.4
by John Arbash Meinel
 Reverting gpg changes, should not be mainline, see gpg_uses_tempfile plugin.  | 
62  | 
my_gpg._command_line = lambda:['cat', '-']  | 
| 
1185.31.54
by John Arbash Meinel
 Win32 not only doesn't have cat, it changes line-endings too. Should be fixed.  | 
63  | 
self.assertEqual(content, my_gpg.sign(content))  | 
| 
1442.1.62
by Robert Collins
 Allow creation of testaments from uncommitted data, and use that to get signatures before committing revisions.  | 
64  | 
|
| 
1551.8.12
by Aaron Bentley
 Add test case for clearing PB  | 
65  | 
def test_returns_output(self):  | 
66  | 
content = "some content\nwith newlines\n"  | 
|
67  | 
self.assertProduces(content)  | 
|
68  | 
||
69  | 
def test_clears_progress(self):  | 
|
70  | 
content = "some content\nwith newlines\n"  | 
|
71  | 
old_clear_term = ui.ui_factory.clear_term  | 
|
| 
1551.8.13
by Aaron Bentley
 Tweak test_clears_progress  | 
72  | 
clear_term_called = []  | 
| 
1551.8.12
by Aaron Bentley
 Add test case for clearing PB  | 
73  | 
def clear_term():  | 
74  | 
old_clear_term()  | 
|
| 
1551.8.13
by Aaron Bentley
 Tweak test_clears_progress  | 
75  | 
clear_term_called.append(True)  | 
| 
1551.8.12
by Aaron Bentley
 Add test case for clearing PB  | 
76  | 
ui.ui_factory.clear_term = clear_term  | 
77  | 
try:  | 
|
78  | 
self.assertProduces(content)  | 
|
79  | 
finally:  | 
|
80  | 
ui.ui_factory.clear_term = old_clear_term  | 
|
81  | 
self.assertEqual([True], clear_term_called)  | 
|
82  | 
||
| 
2273.1.1
by John Arbash Meinel
 ``GPGStrategy.sign()`` will now raise ``BzrBadParameterUnicode`` if  | 
83  | 
def test_aborts_on_unicode(self):  | 
| 
2273.1.2
by John Arbash Meinel
 Cleanup docstring for Aaron Bentley  | 
84  | 
"""You can't sign Unicode text; it must be encoded first."""  | 
| 
2273.1.1
by John Arbash Meinel
 ``GPGStrategy.sign()`` will now raise ``BzrBadParameterUnicode`` if  | 
85  | 
self.assertRaises(errors.BzrBadParameterUnicode,  | 
86  | 
self.assertProduces, u'foo')  | 
|
87  | 
||
| 
1442.1.62
by Robert Collins
 Allow creation of testaments from uncommitted data, and use that to get signatures before committing revisions.  | 
88  | 
|
89  | 
class TestDisabled(TestCase):  | 
|
90  | 
||
91  | 
def test_sign(self):  | 
|
92  | 
self.assertRaises(errors.SigningFailed,  | 
|
93  | 
gpg.DisabledGPGStrategy(None).sign, 'content')  |