~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/tests/test_chat.py

  • Committer: William Grant
  • Date: 2012-06-28 01:52:02 UTC
  • Revision ID: me@williamgrant.id.au-20120628015202-f6ru7o367gt6nvgz
Hah

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
import os
20
20
import random
21
21
 
 
22
try:
 
23
    import json
 
24
except ImportError:
 
25
    import simplejson as json
 
26
 
22
27
from nose.tools import assert_equal, raises
23
28
 
24
29
import ivle.chat
87
92
        for i in range(10):
88
93
            assert_equal(ivle.chat.recv_netstring(self.s2), messages[i])
89
94
 
 
95
    def test_encode(self):
 
96
        """Check that we correctly encode a basic object
 
97
        """
 
98
        MESSAGE = {}
 
99
        MAGIC = "3EE"
 
100
        content = json.dumps(MESSAGE)
 
101
        # Digest can be formed with `echo -n "${content}${MAGIC}" | md5sum`
 
102
        DIGEST = '2b59b68e1ac0852b87fb7e64946f2658'
 
103
        expected = {'digest': DIGEST,
 
104
                'content': content}
 
105
        encoded = ivle.chat.encode(MESSAGE, MAGIC)
 
106
        assert_equal(json.loads(encoded), expected)
 
107
 
 
108
    def test_encode_decode(self):
 
109
        """Check that a round trip encoding and decoding works
 
110
        """
 
111
        MESSAGE = {'message': 'Hello, world'}
 
112
        MAGIC = "MagicString"
 
113
        encoded = ivle.chat.encode(MESSAGE, MAGIC)
 
114
        decoded = ivle.chat.decode(encoded, MAGIC)
 
115
        assert_equal(decoded, MESSAGE)
 
116
 
 
117
    @raises(ivle.chat.ProtocolError)
 
118
    def test_decode_bad_magic(self):
 
119
        """Check that a bad digest causes a ProtocolError to be raised
 
120
        """
 
121
        CHATMESSAGE = ('{"content": "{\\"a\\": \\"b\\"}", "digest": ' +
 
122
                '"eb860a5fe8fdbef19ffb79e3a5c47113"}')
 
123
        CORRECTMAGIC = "AEIOU"
 
124
        INCORRECTMAGIC = "ABCDE"
 
125
 
 
126
        # Check our "correct" string decodes without a ProtocolError
 
127
        try:
 
128
            ivle.chat.decode(CHATMESSAGE, CORRECTMAGIC)
 
129
        except ivle.chat.ProtocolError:
 
130
            raise AssertionError("ProtocolError with 'correct' magic")
 
131
 
 
132
        # This should raise the ProtocolError
 
133
        ivle.chat.decode(CHATMESSAGE, INCORRECTMAGIC)