class_docstr: Test class for the DuoApp
docstr: DuoApp - Generate Auth, hmac Failure
docstr_tok: ["DuoApp","-","Generate","Auth",",","hmac","Failure"]
code: def test_generate_auth_hmac_failure(self, log_mock):
      """DuoApp - Generate Auth, hmac Failure"""
      self._app._config.auth["secret_key"] = {"bad_secret"}
      assert_false(self._app._generate_auth("hostname", {}))
      log_mock.assert_called_with("Could not generate hmac signature")
  
imports: import os
  from mock import Mock, patch
  from moto import mock_ssm
  from nose.tools import assert_equal, assert_false, assert_count_equal, raises
  import requests
  from streamalert.apps._apps.duo import DuoAdminApp, DuoApp, DuoAuthApp
  from tests.unit.streamalert.apps.test_helpers import get_event, put_mock_params
  from tests.unit.streamalert.shared.test_config import get_mock_lambda_context
label_desc: Use image node_id 2 for calling the TestDuoApp obj's underlying member method code with example usage: obj.test_generate_auth_hmac_failure(log_mock) without return types