def test_stack_create_with_template_id(self, stack_create, manager,
                                           make_proxy):
        options = mock.Mock(proxy=mock.Mock(heat_host="foo.com"))
        controller = HeatWrapperController(options)
        request = mock.MagicMock()
        manager.return_value.get_template.return_value = {
            "template_id": {
                "key": "value"
            }
        }
        proxy = make_proxy.return_value
        body = {'template_id': 'wordpress'}
        request.get_response.return_value = mock.MagicMock(
            status_code=201, json_body={"stack": {"id": "1234"}})

        controller.stack_create(request, '10021', body)

        self.assertEquals(request.body, '{"template": {"key": "value"}}')
        request.get_response.assert_called_once_with(proxy)

        stack_create.assert_called_once_with({
            'tenant': '10021',
            'stack_id': "1234",
            'supported': True
        })
    def test_stack_create_with_invalid_template_id(self, stack_create,
                                                   manager):
        options = mock.Mock(proxy=mock.Mock(heat_host="foo.com"))
        controller = HeatWrapperController(options)
        request = mock.MagicMock()
        manager.return_value.get_template.return_value = None
        body = {'template_id': 'wordpress'}
        result = controller.stack_create(request, '10021', body)

        self.assertIsInstance(result, exc.HTTPNotFound)
        self.assertFalse(request.get_response.called)
        self.assertFalse(stack_create.called)
    def test_stack_create_with_template(self, stack_create, manager,
                                        make_proxy):
        proxy = make_proxy.return_value
        options = mock.Mock(proxy=mock.Mock(heat_host="foo.com"))
        controller = HeatWrapperController(options)
        request = mock.MagicMock()
        mock_catalog = manager.return_value.get_catalog.return_value
        mock_catalog.is_supported_template.return_value = True
        request.get_response.return_value = mock.MagicMock(
            status_code=201, json_body={"stack": {"id": "1234"}})

        controller.stack_create(request, '10021', {'template': {}})

        request.get_response.assert_called_once_with(proxy)
        stack_create.assert_called_once_with({
            'tenant': '10021',
            'stack_id': "1234",
            'supported': True
        })