Beispiel #1
0
  def testConnectAndCheckModelsResponseCode(self,
                                            getMock,
                                            reportIssueMock,
                                            removeIssueMock):
    """
    Test a request Response whose status code is not 200
    """
    url = "url"
    apiKey = "key"
    timeout = 1.0

    # Mock the returned value of requests.get, a requests.Response
    responseMock = Mock(spec=requests.models.Response)
    responseMock.status_code = 404
    getMock.return_value = responseMock
    emailParams = {"key":"val"}

    # Code under test
    modelsMonitor._connectAndCheckModels(url, apiKey, timeout, emailParams)

    getMock.assert_called_once_with(url, auth=(apiKey, ""), timeout=timeout,
                                    verify=False)
    removeIssueMock.assert_called_once_with(
      ANY,
      modelsMonitor.Flags.REQUESTS_EXCEPTION)
    reportIssueMock.assert_called_once_with(
      modelsMonitor.Flags.HTTP_STATUS_CODE,
      url,
      modelsMonitor._getIssueString("Received abnormal HTTP status code", 404),
      {"key":"val"}
    )
Beispiel #2
0
  def testConnectAndCheckModelsSuccess(self,
                                       getMock,
                                       removeIssueMock,
                                       checkModelsStatusMock):
    """
    Tests case where no connection errors occur.
    """
    url = "url"
    apiKey = "key"
    timeout = 1.0

    responseMock = Mock(spec=requests.models.Response)
    responseMock.status_code = 200
    responseMock.json.return_value = "{}"
    getMock.return_value = responseMock
    emailParams = {"key": "value"}

    # Code under test
    modelsMonitor._connectAndCheckModels(url, apiKey, timeout, emailParams)

    getMock.assert_called_once_with(url, auth=(apiKey, ""), timeout=timeout,
                                    verify=False)
    removeIssueMock.assert_any_call(ANY,
                                    modelsMonitor.Flags.REQUESTS_EXCEPTION)
    removeIssueMock.assert_any_call(ANY, modelsMonitor.Flags.HTTP_STATUS_CODE)
    removeIssueMock.assert_any_call(ANY, modelsMonitor.Flags.RESPONSE_JSON)
    checkModelsStatusMock.assert_called_once_with("{}", url, {"key": "value"})
Beispiel #3
0
  def testConnectAndCheckModelsValueError(self,
                                          getMock,
                                          reportIssueMock,
                                          removeIssueMock):
    """
    Tests a requests Response whose status code is 200, but whose
    json method raises a ValueError.
    """
    url = "url"
    apiKey = "key"
    timeout = 1.0

    responseMock = Mock(spec=requests.models.Response)
    responseMock.status_code = 200
    responseMock.json.side_effect = ValueError()
    getMock.return_value = responseMock

    # Code under test
    modelsMonitor._connectAndCheckModels(url, apiKey, timeout, {"k":"v"})

    getMock.assert_called_once_with(url, auth=(apiKey, ""), timeout=timeout,
                                    verify=False)
    removeIssueMock.assert_any_call(ANY,
                                    modelsMonitor.Flags.REQUESTS_EXCEPTION)
    removeIssueMock.assert_any_call(ANY, modelsMonitor.Flags.HTTP_STATUS_CODE)
    reportIssueMock.assert_called_once_with(modelsMonitor.Flags.RESPONSE_JSON,
                                            url,
                                            "ValueError encountered loading "
                                            "JSON.",
                                            {"k":"v"})
Beispiel #4
0
  def testConnectAndCheckModelsRequestsException(self,
                                                 getMock,
                                                 reportIssueMock,
                                                 removeIssueMock):
    """
    Tests encountering a RequestException.
    """
    url = "url"
    apiKey = "key"
    timeout = 1.0

    excMessage = "Mock RequestException"
    getMock.side_effect = requests.exceptions.RequestException(excMessage)

    # Code under test
    modelsMonitor._connectAndCheckModels(url, apiKey, timeout, {})

    getMock.assert_called_once_with(url, auth=(apiKey, ""), timeout=timeout,
                                    verify=False)
    self.assertFalse(removeIssueMock.called)
    self.assertTrue(reportIssueMock.called)