def test_raise_on_bad_json(self): mock_osutils = mock.Mock(spec=OSUtils) mock_osutils.get_file_contents.return_value = ( '{' ' "Resources": {' ' "foo": {' ' "Properties": {' ' "Environment": {' ' "Variables": {"Name": "Foo"}' '' ) mock_merger = mock.Mock(spec=package.TemplateMerger) p = package.TemplateMergePostProcessor( mock_osutils, mock_merger, merge_template='extras.json') template = {} config = mock.MagicMock(spec=Config) with pytest.raises(RuntimeError) as e: p.process( template, config=config, outdir='outdir', chalice_stage_name='dev', ) assert str(e.value).startswith('Expected') assert 'to be valid JSON template' in str(e.value) assert mock_merger.merge.call_count == 0
def test_can_call_merge(self): mock_osutils = mock.Mock(spec=OSUtils) file_template = { "Resources": { "foo": { "Properties": { "Environment": { "Variables": { "Name": "Foo" } } } } } } mock_osutils.get_file_contents.return_value = json.dumps(file_template) mock_merger = mock.Mock(spec=package.TemplateMerger) mock_merger.merge.return_value = {} p = package.TemplateMergePostProcessor(mock_osutils, mock_merger, merge_template='extras.json') template = { 'Resources': { 'foo': { 'Type': 'AWS::Serverless::Function', 'Properties': { 'CodeUri': 'old-dir.zip', } }, 'bar': { 'Type': 'AWS::Serverless::Function', 'Properties': { 'CodeUri': 'old-dir.zip', } }, } } config = mock.MagicMock(spec=Config) p.process(template, config=config, outdir='outdir', chalice_stage_name='dev') assert mock_osutils.file_exists.call_count == 1 assert mock_osutils.get_file_contents.call_count == 1 mock_merger.merge.assert_called_once_with(file_template, template)
def test_raise_if_file_does_not_exist(self): mock_osutils = mock.Mock(spec=OSUtils) mock_osutils.file_exists.return_value = False mock_merger = mock.Mock(spec=package.TemplateMerger) p = package.TemplateMergePostProcessor( mock_osutils, mock_merger, merge_template='extras.json') template = {} config = mock.MagicMock(spec=Config) with pytest.raises(RuntimeError) as e: p.process( template, config=config, outdir='outdir', chalice_stage_name='dev', ) assert str(e.value).startswith('Cannot find template file:') assert mock_merger.merge.call_count == 0