~ubuntuone-control-tower/ubuntuone-storage-protocol/stable-1-6

« back to all changes in this revision

Viewing changes to tests/test_client.py

  • Committer: Tarmac
  • Author(s): Rodney Dawes
  • Date: 2010-11-16 15:10:48 UTC
  • mfrom: (121.1.4 use-packages)
  • Revision ID: tarmac-20101116151048-b0e20j7lorb4yhe1
Switch to using packaged mocker and ubuntuone-dev-tools
Use pyflakes with u1lint and also run pep8
Fix a lot of pylint/pyflakes/pep8 errors

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
29
 
)
 
28
    Authenticate, MakeFile, MakeDir, PutContent, Move, Unlink)
30
29
from ubuntuone.storageprotocol import volumes
31
30
from tests import test_delta_info
32
31
 
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
39
36
 
40
37
PATH = u'~/Documents/pdfs/moño/'
45
42
USER = u'Dude'
46
43
GENERATION = 999
47
44
 
 
45
 
48
46
class FakedError(Exception):
49
47
    """Stub to replace Request.error."""
50
48
 
53
51
    """Stub to replace non-related functions."""
54
52
    return None
55
53
 
 
54
 
56
55
def faked_error(message):
57
56
    """Stub to replace Request.error."""
58
57
    raise FakedError
59
58
 
 
59
 
60
60
def was_called(self, flag):
61
61
    """Helper to assert a function was called."""
62
62
    assert not getattr(self, flag)
 
63
 
63
64
    def set_flag(*args, **kwargs):
64
65
        """Record the calling was made."""
65
66
        setattr(self, flag, True)
66
67
    return set_flag
67
68
 
 
69
 
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
72
74
    return message
73
75
 
 
76
 
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
78
81
    return message
79
82
 
 
83
 
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
84
88
    return message
85
89
 
 
90
 
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)
90
95
 
 
96
 
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
97
103
 
 
104
 
98
105
def set_share_message(message):
99
106
    """Set a simple Share message."""
100
107
    message.type = protocol_pb2.Volumes.SHARE
107
114
    message.share.accepted = False
108
115
    message.share.access_level = 0
109
116
 
 
117
 
110
118
class MethodMock(object):
111
119
    """A class to overwrite methods to know if they were called.
112
120
 
124
132
        self.called = True
125
133
        self.call_count += 1
126
134
 
 
135
 
127
136
class DummyAttribute(object):
128
137
    """Helper class to replace non-related classes."""
129
138
 
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,
408
417
                          message)
619
628
 
620
629
        self.assertTrue(self.done_called, 'done() was called')
621
630
 
 
631
 
622
632
class GetDeltaTestCase(unittest.TestCase):
623
633
    """Test cases for GetDelta op."""
624
634
 
705
715
        self.assertEquals(self.request.share_id,
706
716
                          actual_msg.get_delta.share)
707
717
 
 
718
 
708
719
class TestAuth(unittest.TestCase):
709
720
    """Tests the authentication request."""
710
721
 
712
723
        """Test that the request has the session id attribute."""
713
724
 
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)
723
734
 
724
735
 
725
736
class TestGenerationInRequests(unittest.TestCase):
739
750
 
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)
748
759
 
749
760
 
750
761
class TestGenerationInRequestsMakeDir(TestGenerationInRequests):