19
19
pygtk.require('2.0')
21
import desktopcouch.tests as dctests
21
import desktopcouch.tests as test_environment
23
23
from desktopcouch.pair.couchdb_pairing import couchdb_io
24
24
from desktopcouch.records.server import CouchDatabase
25
25
from desktopcouch.records.record import Record
26
from twisted.trial import unittest
30
31
URI = None # use autodiscovery that desktopcouch.tests permits.
32
33
class TestCouchdbIo(unittest.TestCase):
35
36
"""setup each test"""
36
self.mgt_database = CouchDatabase('management', create=True, uri=URI)
37
self.foo_database = CouchDatabase('foo', create=True, uri=URI)
37
self.mgt_database = CouchDatabase('management', create=True, uri=URI,
38
ctx=test_environment.test_context)
39
self.foo_database = CouchDatabase('foo', create=True, uri=URI,
40
ctx=test_environment.test_context)
38
41
#create some records to pull out and test
39
42
self.foo_database.put_record(Record({
40
43
"key1_1": "val1_1", "key1_2": "val1_2", "key1_3": "val1_3",
51
54
del self.mgt_database._server['management']
52
55
del self.mgt_database._server['foo']
58
def test_obsfuscation(self):
59
t = {'url': 'https://couchdb.one.ubuntu.com/u%2Fb2%2Fc8%2F276%2Ftest', 'auth': {'oauth': {'consumer_secret': 'SeCrEtSe', 'token': '3XRjQrWX92TTTJFDTWJJ', 'consumer_key': 'ubuntuone', 'token_secret': 'jBmSeCrEtawkefwklefliwuregqwlkeh347wq87w4fiuq4fyu3q4fiqwu4fqwfiqufM6xjsPwSeCrEt4'}}}
60
cleaned_t = couchdb_io.obsfuscate(t)
61
self.failIf("SeCrEt" in str(cleaned_t), {'url': 'https://couchdb.one.ubuntu.com/u%2Fb2%2Fc8%2F276%2Ftest', 'auth': {'oauth': {'consumer_secret': 'HiddenHidd', 'token': '3XRjQrWX92TTTJFDTWJJ', 'consumer_key': 'ubuntuone', 'token_secret': 'HiddenHiddenHiddenHiddenHiddenHiddenHiddenHiddenHiddenHiddenHiddenHiddenHiddenHi'}}})
63
self.assertEqual(couchdb_io.obsfuscate(""), "")
64
self.assertEqual(couchdb_io.obsfuscate({}), {})
65
self.assertEqual(couchdb_io.obsfuscate({1:{}}), {1:{}})
66
self.assertEqual(couchdb_io.obsfuscate({1:1}), {1:1})
54
69
def test_put_static_paired_service(self):
55
70
service_name = "dummyfortest"
59
74
"token": str("opqrst"),
60
75
"token_secret": str("uvwxyz"),
62
couchdb_io.put_static_paired_service(oauth_data, service_name, uri=URI)
63
pairings = list(couchdb_io.get_pairings())
77
couchdb_io.put_static_paired_service(oauth_data, service_name, uri=URI, ctx=test_environment.test_context)
78
pairings = list(couchdb_io.get_pairings(ctx=test_environment.test_context))
65
80
def test_put_dynamic_paired_host(self):
66
81
hostname = "host%d" % (os.getpid(),)
75
90
couchdb_io.put_dynamic_paired_host(hostname, remote_uuid, oauth_data,
77
couchdb_io.put_dynamic_paired_host(hostname, remote_uuid, oauth_data,
79
couchdb_io.put_dynamic_paired_host(hostname, remote_uuid, oauth_data,
91
uri=URI, ctx=test_environment.test_context)
92
couchdb_io.put_dynamic_paired_host(hostname, remote_uuid, oauth_data,
93
uri=URI, ctx=test_environment.test_context)
94
couchdb_io.put_dynamic_paired_host(hostname, remote_uuid, oauth_data,
95
uri=URI, ctx=test_environment.test_context)
82
pairings = list(couchdb_io.get_pairings())
97
pairings = list(couchdb_io.get_pairings(ctx=test_environment.test_context))
83
98
self.assertEqual(3, len(pairings))
84
99
self.assertEqual(pairings[0].value["oauth"], oauth_data)
85
100
self.assertEqual(pairings[0].value["server"], hostname)
86
101
self.assertEqual(pairings[0].value["pairing_identifier"], remote_uuid)
88
103
for i, row in enumerate(pairings):
89
couchdb_io.remove_pairing(row.id, i == 1)
104
couchdb_io.remove_pairing(row.id, i == 1, ctx=test_environment.test_context)
91
pairings = list(couchdb_io.get_pairings())
106
pairings = list(couchdb_io.get_pairings(ctx=test_environment.test_context))
92
107
self.assertEqual(0, len(pairings))
95
110
def test_get_database_names_replicatable_bad_server(self):
96
# If this resolves, FIRE YOUR DNS PROVIDER.
111
hostname = "test.desktopcouch.example.com"
113
socket.gethostbyname(hostname)
114
raise unittest.SkipTest("nxdomain hijacked")
115
except socket.gaierror:
99
119
names = couchdb_io.get_database_names_replicatable(
100
uri='http://test.desktopcouch.example.com:9/')
120
uri='http://' + hostname + ':9/')
101
121
self.assertEqual(set(), names)
102
122
except httplib2.ServerNotFoundError:
105
125
def test_get_database_names_replicatable(self):
106
names = couchdb_io.get_database_names_replicatable(uri=URI)
126
names = couchdb_io.get_database_names_replicatable(uri=URI, ctx=test_environment.test_context)
107
127
self.assertFalse('management' in names)
108
128
self.assertTrue('foo' in names)
110
130
def test_get_my_host_unique_id(self):
111
got = couchdb_io.get_my_host_unique_id(uri=URI)
112
again = couchdb_io.get_my_host_unique_id(uri=URI)
131
got = couchdb_io.get_my_host_unique_id(uri=URI, ctx=test_environment.test_context)
132
again = couchdb_io.get_my_host_unique_id(uri=URI, ctx=test_environment.test_context)
113
133
self.assertEquals(len(got), 1)
114
134
self.assertEquals(got, again)