def test_it_read_and_decode_puppetfile_from_github_repository():
     github_repository = MagicMock()
     Puppetfile.from_github_repository(github_repository, 'env')
     github_repository.get_file_contents.assert_called_once_with(
         '/Puppetfile', ref='env')
     content = github_repository.get_file_contents()
     content.decoded_content.decode.assert_called_once_with('utf-8')
 def test_it_cannot_remove_a_git_module_not_present_in_the_puppetfile():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     puppetfile = Puppetfile(github_repository, 'env', sha='shasha')
     with pytest.raises(ModuleNotFoundException):
         puppetfile.remove_git_module('apache')
 def test_it_cannot_update_a_missing_module():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     puppetfile = Puppetfile(github_repository, 'env', sha='shasha')
     assert puppetfile.forge_modules == []
     with pytest.raises(ModuleNotFoundException):
         puppetfile.update_forge_module('puppetlabs/apache', '0.1.2')
 def test_it_cannot_add_an_existing_git_module():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     puppetfile = Puppetfile(github_repository,
                             'env',
                             sha='shasha',
                             git_modules=[GIT_MODULE_APACHE])
     with pytest.raises(ModuleAlreadyPresentException):
         puppetfile.add_git_module('apache', 'https://url/git/apache')
 def test_it_cannot_add_an_existing_module():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     forge_module_apache = ForgeModule('puppetlabs/apache')
     puppetfile = Puppetfile(github_repository,
                             'env',
                             sha='shasha',
                             forge_modules=[forge_module_apache])
     with pytest.raises(ModuleAlreadyPresentException):
         puppetfile.add_forge_module('puppetlabs/apache')
 def test_it_update_a_git_module_reference_and_reference_type():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     puppetfile = Puppetfile(github_repository,
                             'env',
                             sha='shasha',
                             git_modules=[deepcopy(GIT_MODULE_APACHE)])
     assert puppetfile.git_modules[0].reference == 'ed19f'
     puppetfile.update_git_module('apache',
                                  'master',
                                  reference_type='branch')
     assert puppetfile.git_modules[0].reference == 'master'
     assert puppetfile.git_modules[0].reference_type == 'branch'
 def test_it_remove_a_git_module_from_the_puppetfile():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     puppetfile = Puppetfile(github_repository,
                             'env',
                             sha='shasha',
                             git_modules=[GIT_MODULE_APACHE])
     assert GIT_MODULE_APACHE in puppetfile.git_modules
     puppetfile.remove_git_module('apache')
     assert puppetfile.git_modules == []
     github_repository.update_file.assert_called_once_with(
         "Puppetfile", "Puppetfile - Remove git module apache", "",
         "shasha")
 def test_it_remove_a_forge_module_from_the_puppetfile():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     forge_module_apache = ForgeModule('puppetlabs/apache', '0.1.10')
     puppetfile = Puppetfile(github_repository,
                             'env',
                             sha='shasha',
                             forge_modules=[forge_module_apache])
     assert forge_module_apache in puppetfile.forge_modules
     puppetfile.remove_forge_module('puppetlabs/apache')
     assert puppetfile.forge_modules == []
     github_repository.update_file.assert_called_once_with(
         "Puppetfile", "Puppetfile - Remove forge module puppetlabs/apache",
         "", "shasha")
 def test_it_add_a_module_to_the_puppetfile():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     puppetfile = Puppetfile(github_repository,
                             'env',
                             sha='shasha',
                             forge_modules=[FORGE_MODULE_NGINX])
     assert puppetfile.forge_modules == [FORGE_MODULE_NGINX]
     puppetfile.add_forge_module('puppetlabs/apache', '0.1.10')
     forge_module_apache = ForgeModule('puppetlabs/apache', '0.1.10')
     assert forge_module_apache in puppetfile.forge_modules
     github_repository.update_file.assert_called_once_with(
         "Puppetfile", "Puppetfile - Add forge module puppetlabs/apache",
         f"{str(FORGE_MODULE_NGINX)}mod 'puppetlabs/apache', '0.1.10'\n",
         "shasha")
 def test_it_returns_the_list_of_modules():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     git_module_custommod = GitModule('custommod',
                                      'https://url/git/custommod')
     forge_module_apache = ForgeModule('puppetlabs/apache', '0.1.10')
     forge_module_vcsrepo = ForgeModule('puppetlabs/vcsrepo', '0.2.10')
     puppetfile = Puppetfile(
         github_repository,
         'env',
         sha='shasha',
         forge_modules=[forge_module_apache, forge_module_vcsrepo],
         git_modules=[git_module_custommod])
     assert sorted(puppetfile.list_modules()) == sorted(
         ['custommod', 'puppetlabs/apache', 'puppetlabs/vcsrepo'])
 def test_it_update_a_git_module_in_the_puppetfile():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     puppetfile = Puppetfile(github_repository,
                             'env',
                             sha='shasha',
                             git_modules=[deepcopy(GIT_MODULE_APACHE)])
     assert puppetfile.git_modules[0].reference == 'ed19f'
     puppetfile.update_git_module('apache', 'a76f6fb')
     assert puppetfile.git_modules[0].reference == 'a76f6fb'
     github_repository.update_file.assert_called_once_with(
         "Puppetfile",
         "Puppetfile - Update git module apache from ed19f to a76f6fb",
         ("mod 'apache',\n"
          "  :git => 'https://url/git/apache',\n"
          "  :ref => 'a76f6fb'\n"), "shasha")
 def test_it_update_a_module_in_the_puppetfile():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     forge_module_apache = ForgeModule('puppetlabs/apache', '0.1.1')
     puppetfile = Puppetfile(github_repository,
                             'env',
                             sha='shasha',
                             forge_modules=[forge_module_apache])
     assert puppetfile.forge_modules[0].version == '0.1.1'
     puppetfile.update_forge_module('puppetlabs/apache', version='0.1.2')
     assert puppetfile.forge_modules[0].version == '0.1.2'
     github_repository.update_file.assert_called_once_with(
         "Puppetfile",
         ("Puppetfile - Update forge module puppetlabs/apache "
          "from 0.1.1 to 0.1.2"), "mod 'puppetlabs/apache', '0.1.2'\n",
         "shasha")
Esempio n. 13
0
    def get_puppetfile(self) -> Puppetfile:
        """
        Retrieve the puppetfile present in the current Puppet environment.

        :rtype: :class:`control_repository.puppetfile.Puppetfile`
        :return: A Puppet Puppetfile object
        """
        return Puppetfile.from_github_repository(self._github_repository,
                                                 self._name)
 def test_it_add_a_git_module_to_the_puppetfile():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = ('')
     puppetfile = Puppetfile(github_repository,
                             'env',
                             sha='shasha',
                             git_modules=[GIT_MODULE_NGINX])
     assert puppetfile.git_modules == [GIT_MODULE_NGINX]
     puppetfile.add_git_module('apache',
                               'https://url/git/apache',
                               reference_type='ref',
                               reference='ed19f')
     assert GIT_MODULE_APACHE in puppetfile.git_modules
     github_repository.update_file.assert_called_once_with(
         "Puppetfile", "Puppetfile - Add git module apache",
         (f'{str(GIT_MODULE_NGINX)}'
          "mod 'apache',\n"
          "  :git => 'https://url/git/apache',\n"
          "  :ref => 'ed19f'\n"), "shasha")
 def test_it_parse_modules_with_both_simple_and_double_quotes():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = (
         "mod \"custommod\",\n"
         "    :git => \"https://url/git/custommod\"\n"
         "mod 'puppetlabs/apache', '0.1.10'\n"
         "mod \"puppetlabs/vcsrepo\", \"0.2.10\"")
     forge_module_apache = ForgeModule('puppetlabs/apache', '0.1.10')
     forge_module_vcsrepo = ForgeModule('puppetlabs/vcsrepo', '0.2.10')
     git_module_custommod = GitModule('custommod',
                                      'https://url/git/custommod')
     puppetfile = Puppetfile.from_github_repository(github_repository,
                                                    'env')
     assert forge_module_apache in puppetfile.forge_modules
     assert forge_module_vcsrepo in puppetfile.forge_modules
     assert git_module_custommod in puppetfile.git_modules
 def test_it_returns_a_puppetfile_with_both_git_and_forge_modules():
     github_repository = MagicMock()
     content = github_repository.get_file_contents()
     content.decoded_content.decode.return_value = (
         "mod 'apache',\n"
         "    :git => 'https://url/git/apache',\n"
         "    :ref => 'ed19f'\n"
         "mod 'custommod',\n"
         "    :git => 'https://url/git/custommod'\n"
         "mod 'puppetlabs/apache', '0.1.10'\n"
         "mod 'puppetlabs/vcsrepo', '0.2.10'")
     forge_module_apache = ForgeModule('puppetlabs/apache', '0.1.10')
     forge_module_vcsrepo = ForgeModule('puppetlabs/vcsrepo', '0.2.10')
     git_module_custommod = GitModule('custommod',
                                      'https://url/git/custommod')
     puppetfile = Puppetfile.from_github_repository(github_repository,
                                                    'env')
     assert forge_module_apache in puppetfile.forge_modules
     assert forge_module_vcsrepo in puppetfile.forge_modules
     assert GIT_MODULE_APACHE in puppetfile.git_modules
     assert git_module_custommod in puppetfile.git_modules
 def test_it_set_file_sha():
     github_repository = MagicMock()
     github_repository.get_file_contents().sha = 'shasha'
     puppetfile = Puppetfile.from_github_repository(github_repository,
                                                    'env')
     assert puppetfile.sha == 'shasha'
 def test_whith_no_puppetfile_in_github_repository():
     github_repository = MagicMock()
     github_repository.get_file_contents.side_effect = GithubException(
         404, 'file not found')
     with pytest.raises(PuppetfileNotFoundException):
         Puppetfile.from_github_repository(github_repository, 'env')