示例#1
0
    def setUp(self):
        server = MockSocketIOServer()
        self.environ = {}
        socket = MockSocket(server, {})
        self.environ['socketio'] = socket
        self.ns = GameNamespace(self.environ, '/game')

        # Create mock objects for testing the socket
        self.ns.emit = MagicMock()
        self.ns.broadcast_to_room = MagicMock()
        self.ns.emit_to_room = MagicMock()
        self.ns.get_time = MagicMock(return_value=12242012)

        # Create a game with one user
        User.objects.create_user("hosting_player", "email", "password")
        self.user = authenticate(username="******", password="******")

        self.aMap = Map(creator=self.user, num_players=3, data="{}", map_name="Oogie Boogie")
        self.aMap.save()

        self.game, self.players_json = Game.create_new_game(self.aMap.id, self.user)

        self.ns.request = MockRequest()
        self.ns.request.user = self.user
        self.ns.request.META = {
            'QUERY_STRING': 'id=' + str(self.game.id)
        }
示例#2
0
class SocketIOTest(TestCase):
    def setUp(self):
        server = MockSocketIOServer()
        self.environ = {}
        socket = MockSocket(server, {})
        self.environ['socketio'] = socket
        self.ns = GameNamespace(self.environ, '/game')

        # Create mock objects for testing the socket
        self.ns.emit = MagicMock()
        self.ns.broadcast_to_room = MagicMock()
        self.ns.emit_to_room = MagicMock()
        self.ns.get_time = MagicMock(return_value=12242012)

        # Create a game with one user
        User.objects.create_user("hosting_player", "email", "password")
        self.user = authenticate(username="******", password="******")

        self.aMap = Map(creator=self.user, num_players=3, data="{}", map_name="Oogie Boogie")
        self.aMap.save()

        self.game, self.players_json = Game.create_new_game(self.aMap.id, self.user)

        self.ns.request = MockRequest()
        self.ns.request.user = self.user
        self.ns.request.META = {
            'QUERY_STRING': 'id=' + str(self.game.id)
        }

    def setUpState(self):
        self.ns.recv_connect()
        self.ns.on_join()

    def test_recv_connect(self):
        self.ns.recv_connect()
        self.assertEqual(self.ns.session['user'], self.user)
        self.assertEqual(self.ns.session['game_id'], self.game.id)

    def test_on_join(self):
        self.ns.recv_connect()
        self.ns.on_join()
        selfData = {
            'isHost': True,
            'map_id': self.game.map.id,
            'player_list': [v for v in self.players_json],
            'player_id': 0
        }
        self.ns.emit.assert_called_with('game_data', selfData)
        data = {
            'username': self.user.username,
            'timestamp': self.ns.get_time(),
            'player_id': 0
        }
        self.ns.emit_to_room.assert_called_with(str(self.game.id), 'join', data)

    def test_get_time(self):
        time = self.ns.get_time()
        self.assertEqual(time, 12242012)

    def test_broadcast_message(self):
        self.setUpState()
        self.ns.broadcast_message('message', {'data': 'data'})
        self.ns.broadcast_to_room.assert_called_with(str(self.game.id), 'message', {
            'player_id': 0,
            'timestamp': 12242012,
            'data': 'data'
        })

    def test_on_click(self):
        self.setUpState()
        self.ns.on_click({'data': 'data'})
        self.ns.broadcast_to_room.assert_called_with(str(self.game.id), 'click', {
            'player_id': 0,
            'timestamp': 12242012,
            'data': 'data'
        })

    def test_on_drag(self):
        self.setUpState()
        self.ns.on_drag({'data': 'data'})
        self.ns.broadcast_to_room.assert_called_with(str(self.game.id), 'drag', {
            'player_id': 0,
            'timestamp': 12242012,
            'data': 'data'
        })

    def test_on_start(self):
        self.setUpState()
        self.ns.on_start()
        self.ns.broadcast_to_room.assert_called_with(str(self.game.id), 'start', {
            'player_id': 0,
            'timestamp': 12242012
        })

    def test_on_start_guest(self):
        User.objects.create_user("joining_player", "email", "password")
        self.joiner = authenticate(username="******", password="******")
        self.ns.request.user = self.joiner
        self.setUpState()
        self.ns.on_start()
        self.assertFalse(self.ns.broadcast_to_room.called)

    def test_on_leave(self):
        self.setUpState()
        self.ns.on_leave()
        self.ns.broadcast_to_room.assert_called_with(str(self.game.id), 'leave', {
            'player_id': 0,
            'timestamp': 12242012
        })

    def test_on_key(self):
        self.setUpState()
        self.ns.on_key({'data': 'data'})
        self.ns.broadcast_to_room.assert_called_with(str(self.game.id), 'key', {
            'player_id': 0,
            'timestamp': 12242012,
            'data': 'data'
        })

    def test_on_deadUnits(self):
        self.setUpState()
        self.ns.on_deadUnits({'data': 'data'})
        self.ns.broadcast_to_room.assert_called_with(str(self.game.id), 'deadUnits', {
            'player_id': 0,
            'timestamp': 12242012,
            'data': 'data'
        })

    def test_on_lostGame(self):
        self.setUpState()
        self.ns.on_lostGame()
        self.ns.broadcast_to_room.assert_called_with(str(self.game.id), 'lostGame', {
            'player_id': 0,
            'timestamp': 12242012,
        })

    def test_on_wonGame(self):
        self.setUpState()
        self.ns.on_wonGame()
        self.ns.broadcast_to_room.assert_called_with(str(self.game.id), 'wonGame', {
            'player_id': 0,
            'timestamp': 12242012,
        })

    def test_disconnect(self):
        self.setUpState()
        self.ns.disconnect()
        self.ns.broadcast_to_room.assert_called_with(str(self.game.id), 'leave', {
            'player_id': 0,
            'timestamp': 12242012
        })