blob: 0b08762a7315f904de1b1a73c7a633f18f008ee4 [file] [log] [blame]
#! /usr/bin/python
# Copyright 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unit tests for devices.py."""
import mox
import unittest
import common
from fake_device_server import commands
from fake_device_server import devices
from fake_device_server import resource_delegate
from fake_device_server import server_errors
class DevicesTest(mox.MoxTestBase):
"""Tests for the Devices class."""
def setUp(self):
"""Sets up mox and a ticket / registration objects."""
mox.MoxTestBase.setUp(self)
self.devices_resource = {}
self.commands_resource = {}
self.commands = commands.Commands(
resource_delegate.ResourceDelegate(self.commands_resource))
self.devices = devices.Devices(
resource_delegate.ResourceDelegate(self.devices_resource),
self.commands)
def testCreateDevice(self):
"""Tests that we can create a new device."""
good_device_config = dict(userEmail='buffet@tasty.org',
systemName='buffet_device',
deviceKind='vendor',
channel=dict(supportedType='xmpp'))
new_device = self.devices.create_device(None, good_device_config)
self.assertTrue('id' in new_device)
new_id = new_device['id']
# New device should be registered with commands handler.
self.assertTrue((new_id, None) in self.commands.device_commands)
bad_device_config = dict(systemName='buffet_device',
deviceKind='vendor')
self.assertRaises(server_errors.HTTPError,
self.devices.create_device, None, bad_device_config)
def testGet(self):
"""Tests that we can retrieve a device correctly."""
self.devices_resource[(1234, None)] = dict(id=1234)
returned_json = self.devices.GET(1234)
self.assertEquals(returned_json, self.devices_resource[(1234, None)])
# Non-existing device.
self.assertRaises(server_errors.HTTPError,
self.devices.GET, 1235)
def testListing(self):
"""Tests that we can get a listing back correctly using the GET method.
"""
self.devices_resource[(1234, None)] = dict(id=1234)
self.devices_resource[(1235, None)] = dict(id=1235, boogity='taco')
returned_json = self.devices.GET()
self.assertEqual('clouddevices#devicesListResponse',
returned_json['kind'])
self.assertTrue('devices' in returned_json)
for device in self.devices_resource.values():
self.assertIn(device, returned_json['devices'])
def testDeleteDevice(self):
"""Tests that we correctly delete a device."""
# Register device with commands handler first.
self.commands.new_device(12345, None)
self.devices_resource[(12345, None)] = dict(id=12345, nobody='care')
self.devices.DELETE(12345)
self.assertTrue(12345 not in self.devices_resource)
# Make sure the device is deleted from the command handler.
self.assertRaises(KeyError, self.commands.remove_device, 12345, None)
# Should error out if we try to delete something that doesn't exist.
self.assertRaises(server_errors.HTTPError,
self.devices.DELETE, 12500)
if __name__ == '__main__':
unittest.main()