# 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'])