# 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.
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib.cros.tendo import buffet_config
from autotest_lib.client.common_lib.cros.tendo import privet_helper
from autotest_lib.server import test
def _assert_equal(expected, actual):
"""Compares objects.
@param expected: the expected value.
@param actual: the actual value.
"""
if expected != actual:
raise error.TestFail('Expected: %r, actual: %r' % (expected, actual))
def _assert_not_empty(dictionary, key):
"""Compares objects.
@param expected: the expected value.
@param actual: the actual value.
"""
if not key in dictionary:
raise error.TestFail('Missing key: %s' % key)
if not dictionary[key]:
raise error.TestFail('Key "%s" is empty' % key)
class buffet_PrivetInfo(test.test):
"""This test verifies that the buffet responds to /privet/info request and
returns the expected JSON response object.
"""
version = 1
def warmup(self, host):
config = buffet_config.BuffetConfig(log_verbosity=3)
config.restart_with_config(host=host)
def cleanup(self, host):
buffet_config.naive_restart(host=host)
def run_once(self, host):
helper = privet_helper.PrivetHelper(host=host)
helper.ping_server() # Make sure the server is up and running.
info = helper.send_privet_request(privet_helper.URL_INFO)
# Do some sanity checks on the returned JSON object.
if info['version'] != '3.0':
raise error.TestFail('Expected privet version 3.0')
authentication = info['authentication']
_assert_not_empty(authentication, 'anonymousMaxScope')
_assert_equal(['p224_spake2'], authentication['crypto'])
_assert_equal(['anonymous', 'pairing'], authentication['mode'])
_assert_equal(['pinCode'], authentication['pairing'])
_assert_not_empty(info, 'name')
_assert_not_empty(info, 'id')
_assert_not_empty(info, 'modelManifestId')
_assert_equal(5, len(info['modelManifestId']))
manifest = info['basicModelManifest']
_assert_not_empty(manifest, 'modelName')
_assert_not_empty(manifest, 'oemName')
_assert_not_empty(manifest, 'uiDeviceKind')
_assert_equal({'id': '', 'status': 'unconfigured'}, info['gcd'])