def test_fail_to_generate_shell_when_requested_version_does_not_exists(self, verification): # Arrange templates = {'tosca/resource/test': [ShellTemplate('test-resource', '', 'url/test', '8.1', 'resource')]} repo_info = ('quali', 'resource-test') httpretty.register_uri(httpretty.GET, "https://api.github.com/repos/quali/resource-test/zipball/1.1", body='', status=404, stream=True) template_compiler = Mock() standards = Mock() standards.fetch.return_value = {"resource": ['1.0.0', '1.0.1']} template_versions = ['master', '1.0.0', '1.0.1'] # Act with patch.object(TemplateRetriever, 'get_templates', return_value=templates), \ patch('shellfoundry.utilities.template_url._parse_repo_url', return_value=repo_info), \ patch.object(TempDirContext, '__enter__', return_value=self.fs.CreateDirectory('mock_temp').name), \ patch.object(TemplateVersions, 'get_versions_of_template', return_value=template_versions), \ self.assertRaises(BadParameter) as context: command_executor = NewCommandExecutor(template_retriever=TemplateRetriever(), repository_downloader=RepositoryDownloader(), template_compiler=template_compiler, standards=standards, standard_versions=StandardVersionsFactory()) command_executor._get_template_params = Mock(return_value={}) command_executor.new('new_shell', 'tosca/resource/test', '1.1') # Assert self.assertTrue('Requested standard version (\'1.1\') does not match template version. \n' 'Available versions for test-resource: 1.0.0, 1.0.1' in context.exception, 'Actual: {}'.format(context.exception))
def test_integration_latest_version_is_default_when_version_was_not_specified(self, verification): # Arrange templates = {'tosca/resource/test': [ShellTemplate('test-resource', '', 'url', '8.1', 'resource')]} repo_info = ('quali', 'resource-test') zipfile = mock_template_zip_file() httpretty.register_uri(httpretty.GET, "https://api.github.com/repos/quali/resource-test/zipball/2.0.1", body=zipfile.read(), content_type='application/zip', content_disposition="attachment; filename=quali-resource-test-dd2ba19.zip", stream=True) template_compiler = Mock() standards = Mock() standards.fetch.return_value = {"resource": ['2.0.0', '2.0.1']} # Act with patch.object(TemplateRetriever, 'get_templates', return_value=templates), \ patch('shellfoundry.utilities.template_url._parse_repo_url', return_value=repo_info), \ patch.object(TempDirContext, '__enter__', return_value=self.fs.CreateDirectory('mock_temp').name): command_executor = NewCommandExecutor(template_retriever=TemplateRetriever(), repository_downloader=RepositoryDownloader(), template_compiler=template_compiler, standards=standards, standard_versions=StandardVersionsFactory()) command_executor._get_template_params = Mock(return_value={}) command_executor.new('new_shell', 'tosca/resource/test') # Assert template_compiler.compile_template.smarter_assert_called_once_with( CookiecutterTemplateCompiler.compile_template, shell_name='new_shell', template_path=os.path.join('mock_temp', 'root'), extra_context={}, running_on_same_folder=False)
def test_can_generate_shell_from_local_template(self, verification): # Arrange template_retriever = Mock() template_retriever.get_templates = Mock(return_value={'base': [ShellTemplate('base', '', 'url', '7.0')]}) repo_downloader = Mock() repo_downloader.download_template.return_value = 'repo_path' template_compiler = Mock() standards = Mock() standards.fetch.return_value = {} command_executor = NewCommandExecutor(template_retriever=template_retriever, repository_downloader=repo_downloader, standards=standards, template_compiler=template_compiler) command_executor._get_template_params = Mock(return_value={}) local_template = self.fs.CreateDirectory('shell_template_root').name # Act command_executor.new('new_shell', 'local:{template_dir}'.format(template_dir=local_template), 'master') template_compiler.compile_template.smarter_assert_called_once_with( CookiecutterTemplateCompiler.compile_template, shell_name='new_shell', template_path='shell_template_root', extra_context={}, running_on_same_folder=False)