25
25
from ubuntuone.storageprotocol import protocol_pb2, sharersp, delta, request
26
26
from ubuntuone.storageprotocol.client import (
27
27
StorageClient, CreateUDF, ListVolumes, DeleteVolume, GetDelta,
28
Authenticate, MakeFile, MakeDir, PutContent, Move, Unlink
28
Authenticate, MakeFile, MakeDir, PutContent, Move, Unlink)
30
29
from ubuntuone.storageprotocol import volumes
31
30
from tests import test_delta_info
33
32
# let's not get picky about aatributes outside __init__ in tests
34
# pylint: disable-msg=W0201
35
33
# pylint: disable=W0201
36
34
# it's ok to access internals in the test suite
37
# pylint: disable-msg=W0212
38
35
# pylint: disable=W0212
40
37
PATH = u'~/Documents/pdfs/moño/'
53
51
"""Stub to replace non-related functions."""
56
55
def faked_error(message):
57
56
"""Stub to replace Request.error."""
60
60
def was_called(self, flag):
61
61
"""Helper to assert a function was called."""
62
62
assert not getattr(self, flag)
63
64
def set_flag(*args, **kwargs):
64
65
"""Record the calling was made."""
65
66
setattr(self, flag, True)
68
70
def build_list_volumes():
69
71
"""Build a LIST_VOLUMES message."""
70
72
message = protocol_pb2.Message()
71
73
message.type = protocol_pb2.Message.VOLUMES_INFO
74
77
def build_volume_created():
75
78
"""Build VOLUME_CREATED message."""
76
79
message = protocol_pb2.Message()
77
80
message.type = protocol_pb2.Message.VOLUME_CREATED
80
84
def build_volume_deleted():
81
85
"""Build VOLUME_DELETED message."""
82
86
message = protocol_pb2.Message()
83
87
message.type = protocol_pb2.Message.VOLUME_DELETED
86
91
def set_root_message(message):
87
92
"""Set a simple Root message."""
88
93
message.type = protocol_pb2.Volumes.ROOT
89
94
message.root.node = str(NODE)
91
97
def set_udf_message(message):
92
98
"""Set a simple UDFs message."""
93
99
message.type = protocol_pb2.Volumes.UDF
95
101
message.udf.node = str(NODE)
96
102
message.udf.suggested_path = PATH
98
105
def set_share_message(message):
99
106
"""Set a simple Share message."""
100
107
message.type = protocol_pb2.Volumes.SHARE
402
411
def test_handle_volume_created_if_volume_is_buggy(self):
403
412
"""Test handle_VOLUME_CREATED if the volume is buggy."""
404
413
message = build_volume_created()
405
message.volume_created.type = -1 # invalid type!
414
message.volume_created.type = -1 # invalid type!
406
415
self.client.set_volume_created_callback(lambda vol: None)
407
416
self.assertRaises(TypeError, self.client.handle_VOLUME_CREATED,
705
715
self.assertEquals(self.request.share_id,
706
716
actual_msg.get_delta.share)
708
719
class TestAuth(unittest.TestCase):
709
720
"""Tests the authentication request."""
712
723
"""Test that the request has the session id attribute."""
714
725
SESSION_ID = "opaque_session_id"
715
request = Authenticate(FakedProtocol(), None)
716
request.done = MethodMock()
726
req = Authenticate(FakedProtocol(), None)
727
req.done = MethodMock()
717
728
message = protocol_pb2.Message()
718
729
message.type = protocol_pb2.Message.AUTH_AUTHENTICATED
719
730
message.session_id = SESSION_ID
720
request.processMessage(message)
721
self.assert_(request.done.called)
722
self.assertEqual(request.session_id, SESSION_ID)
731
req.processMessage(message)
732
self.assert_(req.done.called)
733
self.assertEqual(req.session_id, SESSION_ID)
725
736
class TestGenerationInRequests(unittest.TestCase):
740
751
def test_make(self):
741
752
"""Test the request for new_generation."""
742
request = self.build_request()
743
request.done = MethodMock()
753
req = self.build_request()
754
req.done = MethodMock()
744
755
message = self.build_message()
745
request.processMessage(message)
746
self.assert_(request.done.called)
747
self.assertEqual(request.new_generation, GENERATION)
756
req.processMessage(message)
757
self.assert_(req.done.called)
758
self.assertEqual(req.new_generation, GENERATION)
750
761
class TestGenerationInRequestsMakeDir(TestGenerationInRequests):