blob: 95cb7b303eb98c7088a5c53b0c8a9ef70890fabc [file] [log] [blame]
# -*- coding: utf-8 -*-
# Copyright 2017 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 som."""
from __future__ import print_function
import json
import mock
from chromite.lib import auth
from chromite.lib import cros_test_lib
from chromite.lib import som
class SheriffOMaticClientTest(cros_test_lib.MockTestCase):
"""Tests for SheriffOMaticClient."""
def setUp(self):
self.mock_http = mock.MagicMock()
self.PatchObject(auth, 'AuthorizedHttp', return_value=self.mock_http)
self.client = som.SheriffOMaticClient(host='foo.com')
def testSendRequest(self):
"""Test SendRequest."""
self.mock_http.request.return_value = ({'status': 200}, 'test')
self.assertEqual(self.client.SendRequest('http://foo.com/abc',
som.POST_METHOD, 'in', False),
'test')
self.assertEqual(self.mock_http.request.call_count, 1)
def testSendRequestFailure(self):
"""Test SendRequest with bad HTTP status code."""
self.mock_http.request.return_value = ({'status': 400}, 'test')
self.assertRaises(som.SheriffOMaticResponseException,
self.client.SendRequest,
'http://foo.com/abc', som.POST_METHOD, 'in', False)
self.assertEqual(self.mock_http.request.call_count, 4)
def testSendAlerts(self):
"""Test SendAlerts."""
self.mock_http.request.return_value = ({'status': 200}, '')
body = json.dumps({'test': 'stuff'})
self.assertEqual(self.client.SendAlerts(body), '')
self.mock_http.request.assert_called_with(
'https://foo.com/api/v1/alerts/chromeos', som.POST_METHOD,
body=body, headers={'Content-Type': 'application/json'})
self.assertEqual(self.mock_http.request.call_count, 1)
def testSendAlertsSpaces(self):
"""Test SendAlerts with space in hostname."""
self.client = som.SheriffOMaticClient(host='bar.com ')
self.mock_http.request.return_value = ({'status': 200}, '')
body = json.dumps({'test': 'stuff'})
self.assertEqual(self.client.SendAlerts(body), '')
self.mock_http.request.assert_called_with(
'https://bar.com/api/v1/alerts/chromeos', som.POST_METHOD,
body=body, headers={'Content-Type': 'application/json'})
self.assertEqual(self.mock_http.request.call_count, 1)