pdksync 0.5.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/pull_request_template.md +15 -0
- data/.github/workflows/ci.yml +23 -0
- data/.github/workflows/labeller.yml +22 -0
- data/.github/workflows/mend.yml +15 -0
- data/.github/workflows/nightly.yml +22 -0
- data/.github/workflows/release.yml +16 -0
- data/.github/workflows/release_prep.yml +20 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +35 -46
- data/CHANGELOG.md +69 -44
- data/CODEOWNERS +2 -0
- data/Gemfile +10 -3
- data/README.md +330 -18
- data/Rakefile +8 -29
- data/lib/pdksync/conf/puppet_abs_supported_platforms.yaml +41 -0
- data/lib/pdksync/configuration.rb +155 -0
- data/lib/pdksync/githubclient.rb +3 -1
- data/lib/pdksync/gitplatformclient.rb +2 -2
- data/lib/pdksync/jenkinsclient.rb +50 -0
- data/lib/pdksync/logger.rb +120 -0
- data/lib/pdksync/rake_tasks.rb +100 -16
- data/lib/pdksync/utils.rb +1296 -0
- data/lib/pdksync/version.rb +3 -0
- data/lib/pdksync.rb +310 -450
- data/managed_modules.yml +16 -33
- data/pdksync.gemspec +20 -17
- data/spec/configuration_spec.rb +56 -0
- data/spec/fixtures/fake_managed_modules.yaml +2 -0
- data/spec/fixtures/pdksync.yml +2 -0
- data/spec/logger_spec.rb +44 -0
- data/spec/pdksync_spec.rb +185 -0
- data/spec/spec_helper.rb +74 -0
- data/spec/utils_spec.rb +134 -0
- metadata +88 -22
- data/.travis.yml +0 -27
- data/lib/pdksync/constants.rb +0 -78
- data/spec/lib/pdksync_spec.rb +0 -58
    
        data/managed_modules.yml
    CHANGED
    
    | @@ -1,56 +1,39 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
            ##  | 
| 3 | 
            -
            #-  | 
| 4 | 
            -
            #- puppetlabs-chocolatey
         | 
| 5 | 
            -
            #- puppetlabs-dsc
         | 
| 6 | 
            -
            #- puppetlabs-dsc_lite
         | 
| 7 | 
            -
            #- puppetlabs-iis
         | 
| 8 | 
            -
            #- puppetlabs-powershell
         | 
| 9 | 
            -
            #- puppetlabs-registry
         | 
| 10 | 
            -
            #- puppetlabs-reboot
         | 
| 11 | 
            -
            #- puppetlabs-scheduled_task
         | 
| 12 | 
            -
            #- puppetlabs-sqlserver
         | 
| 13 | 
            -
            #- puppetlabs-windows
         | 
| 14 | 
            -
            #- puppetlabs-wsus_client
         | 
| 15 | 
            -
            ## modules team
         | 
| 2 | 
            +
            ## Content and Tooling Team
         | 
| 3 | 
            +
            #- device_manager
         | 
| 16 4 | 
             
            #- puppetlabs-accounts
         | 
| 5 | 
            +
            #- puppetlabs-acl
         | 
| 17 6 | 
             
            #- puppetlabs-apache
         | 
| 18 7 | 
             
            #- puppetlabs-apt
         | 
| 19 | 
            -
            #- puppetlabs- | 
| 8 | 
            +
            #- puppetlabs-chocolatey
         | 
| 20 9 | 
             
            #- puppetlabs-concat
         | 
| 10 | 
            +
            #- puppetlabs-docker
         | 
| 21 11 | 
             
            #- puppetlabs-exec
         | 
| 22 12 | 
             
            #- puppetlabs-facter_task
         | 
| 23 13 | 
             
            #- puppetlabs-firewall
         | 
| 24 14 | 
             
            #- puppetlabs-haproxy
         | 
| 25 | 
            -
            #- puppetlabs- | 
| 15 | 
            +
            #- puppetlabs-iis
         | 
| 26 16 | 
             
            #- puppetlabs-inifile
         | 
| 27 17 | 
             
            #- puppetlabs-java
         | 
| 28 18 | 
             
            #- puppetlabs-java_ks
         | 
| 19 | 
            +
            #- puppetlabs-kubernetes
         | 
| 20 | 
            +
            #- puppetlabs-lvm 
         | 
| 29 21 | 
             
            #- puppetlabs-motd
         | 
| 22 | 
            +
            #- puppetlabs-mount_iso
         | 
| 30 23 | 
             
            #- puppetlabs-mysql
         | 
| 24 | 
            +
            #- puppetlabs-node_encrypt 
         | 
| 31 25 | 
             
            #- puppetlabs-ntp
         | 
| 32 26 | 
             
            #- puppetlabs-package
         | 
| 33 27 | 
             
            #- puppetlabs-postgresql
         | 
| 28 | 
            +
            #- puppetlabs-powershell
         | 
| 34 29 | 
             
            #- puppetlabs-puppet_conf
         | 
| 35 | 
            -
            #- puppetlabs- | 
| 30 | 
            +
            #- puppetlabs-reboot
         | 
| 31 | 
            +
            #- puppetlabs-registry
         | 
| 36 32 | 
             
            #- puppetlabs-satellite_pe_tools
         | 
| 33 | 
            +
            #- puppetlabs-scheduled_task
         | 
| 37 34 | 
             
            #- puppetlabs-service
         | 
| 35 | 
            +
            #- puppetlabs-sqlserver
         | 
| 38 36 | 
             
            #- puppetlabs-stdlib
         | 
| 39 | 
            -
            #- puppetlabs-tagmail
         | 
| 40 37 | 
             
            #- puppetlabs-tomcat
         | 
| 41 | 
            -
            #- puppetlabs-translate
         | 
| 42 38 | 
             
            #- puppetlabs-vcsrepo
         | 
| 43 | 
            -
            #- puppetlabs- | 
| 44 | 
            -
            ## networking team
         | 
| 45 | 
            -
            #- cisco_ios
         | 
| 46 | 
            -
            #- device_manager
         | 
| 47 | 
            -
            #- puppetlabs-panos
         | 
| 48 | 
            -
            #- puppetlabs-resource_api
         | 
| 49 | 
            -
            ## testing only
         | 
| 50 | 
            -
            #- puppetlabs-testing
         | 
| 51 | 
            -
            #- puppetlabs-testing1
         | 
| 52 | 
            -
            #- puppetlabs-testing2
         | 
| 53 | 
            -
            ## cloud and containers team
         | 
| 54 | 
            -
            #- puppetlabs-kubernetes
         | 
| 55 | 
            -
            #- puppetlabs-helm
         | 
| 56 | 
            -
            #- puppetlabs-rook
         | 
| 39 | 
            +
            #- puppetlabs-wsus_client
         | 
    
        data/pdksync.gemspec
    CHANGED
    
    | @@ -1,31 +1,34 @@ | |
| 1 1 | 
             
            lib = File.expand_path('../lib', __FILE__)
         | 
| 2 2 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 3 | 
            +
            require 'pdksync/version'
         | 
| 3 4 |  | 
| 4 5 | 
             
            Gem::Specification.new do |spec|
         | 
| 5 | 
            -
              spec.name | 
| 6 | 
            -
              spec.version | 
| 7 | 
            -
              spec.authors | 
| 8 | 
            -
              spec.email | 
| 9 | 
            -
              spec.summary | 
| 10 | 
            -
              spec.description | 
| 11 | 
            -
              spec.homepage | 
| 12 | 
            -
              spec.license | 
| 13 | 
            -
              spec.required_ruby_version = '>= 2. | 
| 6 | 
            +
              spec.name = 'pdksync'
         | 
| 7 | 
            +
              spec.version = PdkSync::VERSION
         | 
| 8 | 
            +
              spec.authors = ['Puppet']
         | 
| 9 | 
            +
              spec.email = ['']
         | 
| 10 | 
            +
              spec.summary = 'Puppet Module PDK Synchronizer'
         | 
| 11 | 
            +
              spec.description = 'Utility to synchronize common files across puppet modules using PDK Update.'
         | 
| 12 | 
            +
              spec.homepage = 'http://github.com/puppetlabs/pdksync'
         | 
| 13 | 
            +
              spec.license = 'Apache-2.0'
         | 
| 14 | 
            +
              spec.required_ruby_version = '>= 2.7'
         | 
| 14 15 |  | 
| 15 | 
            -
              spec.files | 
| 16 | 
            -
              spec.executables | 
| 17 | 
            -
              spec.test_files | 
| 16 | 
            +
              spec.files = `git ls-files -z`.split("\x0")
         | 
| 17 | 
            +
              spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         | 
| 18 | 
            +
              spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
         | 
| 18 19 | 
             
              spec.require_paths = ['lib']
         | 
| 19 20 |  | 
| 20 | 
            -
              spec.add_development_dependency 'bundler' | 
| 21 | 
            +
              spec.add_development_dependency 'bundler'
         | 
| 22 | 
            +
              spec.add_development_dependency 'codecov'
         | 
| 23 | 
            +
              spec.add_development_dependency 'pry'
         | 
| 21 24 | 
             
              spec.add_development_dependency 'rspec'
         | 
| 22 25 | 
             
              spec.add_development_dependency 'rubocop', '~> 0.50.0'
         | 
| 23 | 
            -
              spec.add_development_dependency ' | 
| 24 | 
            -
             | 
| 26 | 
            +
              spec.add_development_dependency 'simplecov'
         | 
| 27 | 
            +
              spec.add_development_dependency 'simplecov-console'
         | 
| 28 | 
            +
              spec.add_runtime_dependency 'pdk', '>= 1.14.1'
         | 
| 25 29 | 
             
              spec.add_runtime_dependency 'git', '~>1.3'
         | 
| 26 | 
            -
              spec.add_runtime_dependency 'pdk', '>= 1.4.1'
         | 
| 27 30 | 
             
              spec.add_runtime_dependency 'rake'
         | 
| 28 31 | 
             
              spec.add_runtime_dependency 'gitlab'
         | 
| 29 32 | 
             
              spec.add_runtime_dependency 'octokit'
         | 
| 30 | 
            -
              spec.add_runtime_dependency ' | 
| 33 | 
            +
              spec.add_runtime_dependency 'jenkins_api_client'
         | 
| 31 34 | 
             
            end
         | 
| @@ -0,0 +1,56 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'pdksync/configuration'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            RSpec.describe 'configuration' do
         | 
| 5 | 
            +
              before(:each) do
         | 
| 6 | 
            +
                allow(ENV).to receive(:[]).with('HOME').and_return('./')
         | 
| 7 | 
            +
                allow(ENV).to receive(:[]).with('GITHUB_TOKEN').and_return('blah')
         | 
| 8 | 
            +
                allow(ENV).to receive(:[]).with('PDKSYNC_CONFIG_PATH').and_return(nil)
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              let(:instance) do
         | 
| 12 | 
            +
                PdkSync::Configuration.new
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              it '#new' do
         | 
| 16 | 
            +
                expect(instance).to be_a PdkSync::Configuration
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              it 'passes when token is provided' do
         | 
| 20 | 
            +
                expect(instance).to be_a PdkSync::Configuration
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              it 'raises error without token' do
         | 
| 24 | 
            +
                allow(ENV).to receive(:[]).with('GITHUB_TOKEN').and_return(nil)
         | 
| 25 | 
            +
                expect { instance }.to raise_error(ArgumentError)
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              it '#custom_config' do
         | 
| 29 | 
            +
                expect(instance.custom_config).to be_a Hash
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              it '#custom_config does not exist' do
         | 
| 33 | 
            +
                expect(instance.custom_config('/tmp/blah')).to be_a Hash
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              it '#custom_config exists' do
         | 
| 37 | 
            +
                config = File.join(fixtures_dir, 'pdksync.yml')
         | 
| 38 | 
            +
                data = instance.custom_config(config)
         | 
| 39 | 
            +
                expect(data).to be_a Hash
         | 
| 40 | 
            +
                expect(data[:namespace]).to eq('voxpupuli')
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              it '#locate_config_path' do
         | 
| 44 | 
            +
                expect(instance.local_config_path).to be_nil
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              it '#locate_config_path with value' do
         | 
| 48 | 
            +
                config = File.join(fixtures_dir, 'pdksync.yml')
         | 
| 49 | 
            +
                expect(instance.locate_config_path(config)).to eq(config)
         | 
| 50 | 
            +
              end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
              it 'gets a different config file path when variable is used' do
         | 
| 53 | 
            +
                allow(ENV).to receive(:[]).with('PDKSYNC_CONFIG_PATH').and_return(File.join(fixtures_dir, 'pdksync.yml'))
         | 
| 54 | 
            +
                expect(instance.locate_config_path(ENV['PDKSYNC_CONFIG_PATH'])).to eq(File.join(fixtures_dir, 'pdksync.yml'))
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
            end
         | 
    
        data/spec/logger_spec.rb
    ADDED
    
    | @@ -0,0 +1,44 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'pdksync/logger'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            RSpec.describe 'logger' do
         | 
| 5 | 
            +
              before(:each) do
         | 
| 6 | 
            +
                allow(ENV).to receive(:[]).with('PDKSYNC_LOG_FILENAME').and_return('dev/')
         | 
| 7 | 
            +
                allow(ENV).to receive(:[]).with('LOG_LEVEL').and_return(nil)
         | 
| 8 | 
            +
                # allow(PdkSync::Logger).to receive(:logger).and_return(PdkSync::Logger.logger($stderr))
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              let(:logger) do
         | 
| 12 | 
            +
                PdkSync::Logger.instance_variable_set('@logger', nil)
         | 
| 13 | 
            +
                PdkSync::Logger.logger
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              it '#self.logger' do
         | 
| 17 | 
            +
                expect(PdkSync::Logger.logger).to be_a Logger
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              it '#self.debug' do
         | 
| 21 | 
            +
                allow(ENV).to receive(:[]).with('LOG_LEVEL').and_return('debug')
         | 
| 22 | 
            +
                expect(logger.debug('this is a debug')).to be_truthy
         | 
| 23 | 
            +
                # wasn't able to capture stdout with rspec, no idea why
         | 
| 24 | 
            +
                # expect { logger.debug("this is a debug") }.to output(/DEBUG - PdkSync: this is a debug/).to_stdout
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              it '#self.warn' do
         | 
| 28 | 
            +
                allow(ENV).to receive(:[]).with('LOG_LEVEL').and_return('warn')
         | 
| 29 | 
            +
                # wasn't able to capture stdout with rspec, no idea why
         | 
| 30 | 
            +
                expect(logger.warn('this is a warning')).to be_truthy # output(/WARN - PdkSync: this is a warning/).to_stdout
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              it '#self.info' do
         | 
| 34 | 
            +
                allow(ENV).to receive(:[]).with('LOG_LEVEL').and_return('info')
         | 
| 35 | 
            +
                # wasn't able to capture stdout with rspec, no idea why
         | 
| 36 | 
            +
                expect(logger.info('this is a info')).to be_truthy # output(/INFO - PdkSync: this is a info/).to_stderr
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              it '#self.fatal' do
         | 
| 40 | 
            +
                allow(ENV).to receive(:[]).with('LOG_LEVEL').and_return('error')
         | 
| 41 | 
            +
                # wasn't able to capture stdout with rspec, no idea why
         | 
| 42 | 
            +
                expect(logger.fatal('this is a fatal')).to be_truthy # output(/FATAL - PdkSync: this is a fatal/).to_stderr
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
            end
         | 
| @@ -0,0 +1,185 @@ | |
| 1 | 
            +
            require 'pdksync'
         | 
| 2 | 
            +
            require 'spec_helper'
         | 
| 3 | 
            +
            require 'git'
         | 
| 4 | 
            +
            require 'fileutils'
         | 
| 5 | 
            +
            require 'octokit'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            describe PdkSync do
         | 
| 8 | 
            +
              before(:all) do
         | 
| 9 | 
            +
                @pdksync_dir = './modules_pdksync'
         | 
| 10 | 
            +
                @pdksync_gem_dir = './gems_pdksync'
         | 
| 11 | 
            +
                module_name = 'puppetlabs-motd'
         | 
| 12 | 
            +
                gem_name = 'puppet-strings'
         | 
| 13 | 
            +
                @module_names = ['puppetlabs-motd']
         | 
| 14 | 
            +
                @output_path_module = "#{@pdksync_dir}/#{module_name}"
         | 
| 15 | 
            +
                @output_path_gem = "#{@pdksync_gem_dir}/#{gem_name}"
         | 
| 16 | 
            +
                @folder = Dir.pwd
         | 
| 17 | 
            +
                # Make changes to modules_managed.yaml file
         | 
| 18 | 
            +
                text = File.read('managed_modules.yml')
         | 
| 19 | 
            +
                new_contents = text.gsub(%r{#- puppetlabs-motd$}, '- puppetlabs-motd')
         | 
| 20 | 
            +
                File.open('managed_modules.yml', 'w') { |file| file.puts new_contents }
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              let(:platform) { Object.new }
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              before(:each) do
         | 
| 26 | 
            +
                allow(ENV).to receive(:[]).with('HOME').and_return('./')
         | 
| 27 | 
            +
                allow(ENV).to receive(:[]).with('GIT_DIR').and_return(nil)
         | 
| 28 | 
            +
                allow(ENV).to receive(:[]).with('GIT_WORK_TREE').and_return(nil)
         | 
| 29 | 
            +
                allow(ENV).to receive(:[]).with('GIT_INDEX_FILE').and_return(nil)
         | 
| 30 | 
            +
                allow(ENV).to receive(:[]).with('PDKSYNC_LOG_FILENAME').and_return(nil)
         | 
| 31 | 
            +
                allow(ENV).to receive(:[]).with('LOG_LEVEL').and_return(nil)
         | 
| 32 | 
            +
                allow(ENV).to receive(:[]).with('GIT_SSH').and_return(nil)
         | 
| 33 | 
            +
                allow(ENV).to receive(:[]).with('GIT_PATH').and_return(nil)
         | 
| 34 | 
            +
                allow(ENV).to receive(:[]).with('GITHUB_TOKEN').and_return('blah')
         | 
| 35 | 
            +
                allow(ENV).to receive(:[]).with('GEMFURY_TOKEN').and_return('blah')
         | 
| 36 | 
            +
                allow(ENV).to receive(:[]).with('PDKSYNC_VERSION_CHECK').and_return(nil)
         | 
| 37 | 
            +
                allow(ENV).to receive(:[]).with('http_proxy').and_return(nil)
         | 
| 38 | 
            +
                allow(ENV).to receive(:[]).with('HTTP_PROXY').and_return(nil)
         | 
| 39 | 
            +
                allow(ENV).to receive(:[]).with('PDKSYNC_CONFIG_PATH').and_return(nil)
         | 
| 40 | 
            +
                allow(ENV).to receive(:[]).with('TERM').and_return(nil)
         | 
| 41 | 
            +
                allow(ENV).to receive(:[]).with('NO_COLOR').and_return(nil)
         | 
| 42 | 
            +
                allow(PdkSync::Utils).to receive(:return_modules).and_return(@module_names)
         | 
| 43 | 
            +
                allow(PdkSync::Utils).to receive(:validate_modules_exist).and_return(@module_names)
         | 
| 44 | 
            +
                allow(PdkSync::Utils).to receive(:setup_client).and_return(git_client)
         | 
| 45 | 
            +
                Dir.chdir(@folder)
         | 
| 46 | 
            +
                allow(PdkSync::GitPlatformClient).to receive(:new).and_return(platform)
         | 
| 47 | 
            +
                allow(Octokit).to receive(:tags).with('puppetlabs/pdk').and_return([{ name: '1' }])
         | 
| 48 | 
            +
                allow(PdkSync::Utils.configuration).to receive(:git_base_uri).and_return('https://github.com')
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              let(:git_client) do
         | 
| 52 | 
            +
                double(PdkSync::GitPlatformClient)
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              context 'main method' do
         | 
| 56 | 
            +
                it 'runs clone sucessfully' do
         | 
| 57 | 
            +
                  allow(PdkSync::Utils).to receive(:setup_client).and_return(git_client)
         | 
| 58 | 
            +
                  FileUtils.rm_rf(@pdksync_dir)
         | 
| 59 | 
            +
                  PdkSync::Utils.create_filespace
         | 
| 60 | 
            +
                  PdkSync.main(steps: [:clone])
         | 
| 61 | 
            +
                  expect(Dir.exist?(@pdksync_dir)).to be(true)
         | 
| 62 | 
            +
                  expect(Dir.exist?(@output_path_module)).to be(true)
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                it 'runs pdk convert, and files have changed' do
         | 
| 66 | 
            +
                  PdkSync.main(steps: [:pdk_convert])
         | 
| 67 | 
            +
                  File.exist?("#{@output_path_module}/convert_report.txt")
         | 
| 68 | 
            +
                end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                it 'raise when running a command with no argument' do
         | 
| 71 | 
            +
                  expect { PdkSync.main(steps: [:run_a_command]) }.to raise_error(RuntimeError, %r{"run_a_command" requires an argument to run.})
         | 
| 72 | 
            +
                end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                it 'runs a command "touch cat.meow"' do
         | 
| 75 | 
            +
                  PdkSync.main(steps: [:run_a_command], args: { command: 'touch cat.meow' })
         | 
| 76 | 
            +
                  expect File.exist?("#{@output_path_module}/cat.meow")
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                it 'raise when create_commit with no arguments' do
         | 
| 80 | 
            +
                  expect { PdkSync.main(steps: [:create_commit]) }.to raise_error(RuntimeError, %r{Needs a branch_name and commit_message})
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                it 'raise when create_pr with no arguments' do
         | 
| 84 | 
            +
                  expect { PdkSync.main(steps: [:create_pr]) }.to raise_error(RuntimeError, %r{Needs a pr_title})
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                it 'create_pr with 1 argument' do
         | 
| 88 | 
            +
                  expect { PdkSync.main(steps: [:create_pr], args: { pr_title: 'some title' }) }.to_not raise_error
         | 
| 89 | 
            +
                end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                it 'raise when clean_branches with no arguments' do
         | 
| 92 | 
            +
                  expect { PdkSync.main(steps: [:clean_branches]) }.to raise_error(RuntimeError, %r{Needs a branch_name, and the branch name contains the string pdksync})
         | 
| 93 | 
            +
                end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                it 'raise when gem_file_update with no arguments' do
         | 
| 96 | 
            +
                  expect { PdkSync.main(steps: [:gem_file_update]) }.to raise_error(NoMethodError)
         | 
| 97 | 
            +
                end
         | 
| 98 | 
            +
                it 'gem_file_update runs with invalid gem_line given' do
         | 
| 99 | 
            +
                  expect { PdkSync.main(steps: [:gem_file_update], args: { gem_to_test: 'puppet_litmus', gem_line: "gem 'puppet_litmus'\, git: 'https://github.com/test/puppet_litmus.git'" }) }. to raise_error(Errno::ENOENT) # rubocop:disable Metrics/LineLength
         | 
| 100 | 
            +
                end
         | 
| 101 | 
            +
                it 'gem_file_update runs with invalid gem_sha_replacer' do
         | 
| 102 | 
            +
                  expect { PdkSync.main(steps: [:gem_file_update], args: { gem_to_test: 'puppet_litmus', gem_sha_finder: 'jsjsjsjsjsjsjs', gem_sha_replacer: 'abcdefgjhkk' }) }.to raise_error(RuntimeError) # , ("Couldn't find sha: abcdefgjhkk in your repository: puppet_litmus")) # rubocop:disable Metrics/LineLength
         | 
| 103 | 
            +
                end
         | 
| 104 | 
            +
                it 'gem_file_update runs with invalid gem_version_replacer' do
         | 
| 105 | 
            +
                  expect { PdkSync.main(steps: [:gem_file_update], args: { gem_to_test: 'puppet_litmus', gem_version_finder: '<= 0.4.9', gem_version_replacer: '<= 1.4.11' }) }.to raise_error(RuntimeError) # , ("Couldn't find version: 1.4.11 in your repository: puppet_litmus")) # rubocop:disable Metrics/LineLength
         | 
| 106 | 
            +
                end
         | 
| 107 | 
            +
                it 'gem_file_update runs with invalid gem_branch_replacer' do
         | 
| 108 | 
            +
                  expect { PdkSync.main(steps: [:gem_file_update], args: { gem_to_test: 'puppet_litmus', gem_branch_finder: 'jsjsjsjsjsjsjs', gem_branch_replacer: 'abcdefgjhkk' }) }.to raise_error(RuntimeError) # , "Couldn't find branch: abcdefgjhkk in your repository: puppet_litmus") # rubocop:disable Metrics/LineLength
         | 
| 109 | 
            +
                end
         | 
| 110 | 
            +
                it 'raise when run_tests with no arguments' do
         | 
| 111 | 
            +
                  expect { PdkSync.main(steps: [:run_tests_locally]) }.to raise_error(NoMethodError) # , %r{run_tests" requires arguments (module_type) to run.})
         | 
| 112 | 
            +
                end
         | 
| 113 | 
            +
                it 'raise when run_tests_jenkins with no arguments' do
         | 
| 114 | 
            +
                  allow(ENV).to receive(:[]).with('JENKINS_USERNAME').and_return('JENKINS_USERNAME')
         | 
| 115 | 
            +
                  allow(ENV).to receive(:[]).with('JENKINS_PASSWORD').and_return('JENKINS_PASSWORD')
         | 
| 116 | 
            +
                  expect { PdkSync.main(steps: [:run_tests_jenkins], args: {}) }.to raise_error(RuntimeError) # , "run_tests_jenkins requires arguments (github_repo, github_branch) to run"
         | 
| 117 | 
            +
                end
         | 
| 118 | 
            +
                it 'raise errors without jenkins credentials' do
         | 
| 119 | 
            +
                  allow(ENV).to receive(:[]).with('JENKINS_USERNAME').and_return(nil)
         | 
| 120 | 
            +
                  allow(ENV).to receive(:[]).with('JENKINS_PASSWORD').and_return(nil)
         | 
| 121 | 
            +
                  expect { PdkSync.main(steps: [:run_tests_jenkins], args: { jenkins_server_url: 'https//jenkins.com', github_repo: 'test', github_branch: 'test' }) }.to raise_error(RuntimeError, %r{Jenkins access token for Jenkins not set})
         | 
| 122 | 
            +
                end
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                describe 'gem_file_update with valid values' do
         | 
| 125 | 
            +
                  before(:all) do
         | 
| 126 | 
            +
                    PdkSync.main(steps: [:gem_file_update], args: {
         | 
| 127 | 
            +
                                   gem_to_test: 'puppet_litmus',
         | 
| 128 | 
            +
                                   gem_line: "gem 'puppet_litmus'\, git: 'https://github.com/puppetlabs/puppet_litmus.git'\, branch: 'main'\, ref: '04da90638f5b5fd7f007123c8c0cc551c8cb3e54'\, '=0.1.0'"
         | 
| 129 | 
            +
                                 })
         | 
| 130 | 
            +
                  end
         | 
| 131 | 
            +
                  it 'gem_file_update with valid gem_branch_replacer' do
         | 
| 132 | 
            +
                    PdkSync.main(steps: [:gem_file_update], args: { gem_to_test: 'puppet_litmus',
         | 
| 133 | 
            +
                                                                    gem_branch_finder: 'master', gem_branch_replacer: 'main' })
         | 
| 134 | 
            +
                    expect(File.read('Gemfile')).to match(%r{main})
         | 
| 135 | 
            +
                  end
         | 
| 136 | 
            +
                  it 'gem_file_update runs, and contains the gem_sha given' do
         | 
| 137 | 
            +
                    PdkSync.main(steps: [:gem_file_update], args: { gem_to_test: 'puppet_litmus',
         | 
| 138 | 
            +
                                                                    gem_sha_finder: '04da90638f5b5fd7f007123c8c0cc551c8cb3e54', gem_sha_replacer: '95ed1c62ffcf89003eb0fe9d66989caa45884538' })
         | 
| 139 | 
            +
                    expect(File.read('Gemfile')).to match(%r{95ed1c62ffcf89003eb0fe9d66989caa45884538})
         | 
| 140 | 
            +
                  end
         | 
| 141 | 
            +
                  it 'gem_file_update runs, and contains the gem_version given' do
         | 
| 142 | 
            +
                    PdkSync.main(steps: [:gem_file_update], args: { gem_to_test: 'puppet_litmus',
         | 
| 143 | 
            +
                                                                    gem_version_finder: '=0.1.0', gem_version_replacer: '<=0.3.0' })
         | 
| 144 | 
            +
                    expect(File.read('Gemfile')).to match(%r{0.3.0})
         | 
| 145 | 
            +
                  end
         | 
| 146 | 
            +
                  it 'gem_file_update with valid gem_line' do
         | 
| 147 | 
            +
                    PdkSync.main(steps: [:gem_file_update], args: { gem_to_test: 'puppet_litmus',
         | 
| 148 | 
            +
                                                                    gem_line: "gem 'puppet_litmus'\, git: 'https://github.com/puppetlabs/puppet_litmus.git'" })
         | 
| 149 | 
            +
                    expect(File.read('Gemfile')).to match(%r{gem 'puppet_litmus', git: 'https://github.com/puppetlabs/puppet_litmus.git'})
         | 
| 150 | 
            +
                  end
         | 
| 151 | 
            +
                  it 'multigem updated in the module gemfile' do
         | 
| 152 | 
            +
                    PdkSync.main(steps: [:multi_gemfile_update], args: { gem_name: 'puppet-module', gemfury_username: 'tester' })
         | 
| 153 | 
            +
                    expect File.exist?("#{@output_path_module}/Gemfile")
         | 
| 154 | 
            +
                  end
         | 
| 155 | 
            +
                end
         | 
| 156 | 
            +
              end
         | 
| 157 | 
            +
              context 'main method' do
         | 
| 158 | 
            +
                let(:platform) { Object.new }
         | 
| 159 | 
            +
             | 
| 160 | 
            +
                it 'runs clone gem sucessfully' do
         | 
| 161 | 
            +
                  allow(PdkSync::Utils).to receive(:setup_client).and_return(git_client)
         | 
| 162 | 
            +
                  FileUtils.rm_rf(@pdksync_gem_dir)
         | 
| 163 | 
            +
                  PdkSync::Utils.create_filespace_gem
         | 
| 164 | 
            +
                  PdkSync.main(steps: [:clone_gem], args: { gem_name: 'puppet-strings' })
         | 
| 165 | 
            +
                  expect(Dir.exist?(@pdksync_dir)).to be(true)
         | 
| 166 | 
            +
                  expect(Dir.exist?(@pdksync_gem_dir)).to be(true)
         | 
| 167 | 
            +
                  expect(Dir.exist?(@output_path_gem)).to be(true)
         | 
| 168 | 
            +
                end
         | 
| 169 | 
            +
                it 'raise when running a command with no argument' do
         | 
| 170 | 
            +
                  expect { PdkSync.main(steps: [:multi_gem_testing]) }.to raise_error(RuntimeError, %r{"multi_gem_testing" requires arguments to run version_file and build_gem})
         | 
| 171 | 
            +
                end
         | 
| 172 | 
            +
                it 'runs a command for updating the version and building the gem' do
         | 
| 173 | 
            +
                  allow(Octokit).to receive(:tags).with('puppetlabs/puppet-strings').and_return([{ name: '1' }])
         | 
| 174 | 
            +
                  PdkSync.main(steps: [:multi_gem_testing], args: { gem_name: 'puppet-strings', version_file: 'lib/puppet-strings/version.rb', build_gem: 'rake build', gem_path: 'pkg', gem_username: 'tester' })
         | 
| 175 | 
            +
                  expect File.exist?("#{@output_path_gem}/pkg")
         | 
| 176 | 
            +
                end
         | 
| 177 | 
            +
              end
         | 
| 178 | 
            +
              after(:all) do
         | 
| 179 | 
            +
                # Make changes to modules_managed.yaml file
         | 
| 180 | 
            +
                Dir.chdir(@folder)
         | 
| 181 | 
            +
                text = File.read('managed_modules.yml')
         | 
| 182 | 
            +
                new_contents = text.gsub(%r{- puppetlabs-motd$}, '#- puppetlabs-motd')
         | 
| 183 | 
            +
                File.open('managed_modules.yml', 'w') { |file| file.puts new_contents }
         | 
| 184 | 
            +
              end
         | 
| 185 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | @@ -0,0 +1,74 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            if ENV['SIMPLECOV'] == 'yes'
         | 
| 4 | 
            +
              begin
         | 
| 5 | 
            +
                require 'simplecov'
         | 
| 6 | 
            +
                require 'simplecov-console'
         | 
| 7 | 
            +
                require 'codecov'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                SimpleCov.formatters = [
         | 
| 10 | 
            +
                  SimpleCov::Formatter::HTMLFormatter,
         | 
| 11 | 
            +
                  SimpleCov::Formatter::Console,
         | 
| 12 | 
            +
                  SimpleCov::Formatter::Codecov
         | 
| 13 | 
            +
                ]
         | 
| 14 | 
            +
                SimpleCov.start do
         | 
| 15 | 
            +
                  track_files 'lib/**/*.rb'
         | 
| 16 | 
            +
                  add_filter '/spec'
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  # do not track vendored files
         | 
| 19 | 
            +
                  add_filter '/vendor'
         | 
| 20 | 
            +
                  add_filter '/.vendor'
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  # do not track gitignored files
         | 
| 23 | 
            +
                  # this adds about 4 seconds to the coverage check
         | 
| 24 | 
            +
                  # this could definitely be optimized
         | 
| 25 | 
            +
                  add_filter do |f|
         | 
| 26 | 
            +
                    # system returns true if exit status is 0, which with git-check-ignore means file is ignored
         | 
| 27 | 
            +
                    system("git check-ignore --quiet #{f.filename}")
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              rescue LoadError
         | 
| 31 | 
            +
                raise 'Add the simplecov, simplecov-console, codecov gems to Gemfile to enable this task'
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            require 'rspec'
         | 
| 36 | 
            +
            require 'git'
         | 
| 37 | 
            +
            require 'fileutils'
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            def pupmods_dir
         | 
| 40 | 
            +
              @pupmods_dir ||= begin
         | 
| 41 | 
            +
                p = File.join(fixtures_dir, 'puppetlabs')
         | 
| 42 | 
            +
                FileUtils.mkdir_p(p) unless File.exist?(p)
         | 
| 43 | 
            +
                p
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
            end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            def remote_testing_repo
         | 
| 48 | 
            +
              File.join(pupmods_dir, 'puppetlabs-motd.git')
         | 
| 49 | 
            +
            end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            # localizes the remote repo for faster testing, download once and use the local machine as the remote repo
         | 
| 52 | 
            +
            def setup_fake_module
         | 
| 53 | 
            +
              Git.clone('https://github.com/puppetlabs/puppetlabs-motd.git', remote_testing_repo) unless Dir.exist?(File.join(remote_testing_repo, '.git'))
         | 
| 54 | 
            +
            end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            def destroy_fake_modules
         | 
| 57 | 
            +
              FileUtils.rm_rf(pupmods_dir)
         | 
| 58 | 
            +
            end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            def fixtures_dir
         | 
| 61 | 
            +
              @fixtures_dir ||= File.join(__dir__, 'fixtures')
         | 
| 62 | 
            +
            end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            RSpec.configure do |config|
         | 
| 65 | 
            +
              config.before(:suite) do
         | 
| 66 | 
            +
                setup_fake_module
         | 
| 67 | 
            +
                # provide a fake github token for the tests
         | 
| 68 | 
            +
                ENV['GITHUB_TOKEN'] = 'github-token'
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
              config.before(:each) do
         | 
| 71 | 
            +
                allow(PdkSync::Utils.configuration).to receive(:git_base_uri).and_return("file://#{fixtures_dir}")
         | 
| 72 | 
            +
              end
         | 
| 73 | 
            +
              config.after(:suite) { FileUtils.rm_rf(pupmods_dir) }
         | 
| 74 | 
            +
            end
         | 
    
        data/spec/utils_spec.rb
    ADDED
    
    | @@ -0,0 +1,134 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'pdksync/utils'
         | 
| 3 | 
            +
            require 'tempfile'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe 'PdkSync::Utils' do
         | 
| 6 | 
            +
              before(:all) do
         | 
| 7 | 
            +
                @tmp_dir = Dir.mktmpdir('testing')
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              let(:cloned_module) do
         | 
| 11 | 
            +
                begin
         | 
| 12 | 
            +
                  Git.open(@tmp_dir)
         | 
| 13 | 
            +
                rescue ArgumentError
         | 
| 14 | 
            +
                  PdkSync::Utils.clone_directory('puppetlabs',
         | 
| 15 | 
            +
                                                 'puppetlabs-motd', @tmp_dir)
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              let(:metadata_file) do
         | 
| 20 | 
            +
                File.join(@tmp_dir, 'metadata.json')
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              before(:each) do
         | 
| 24 | 
            +
                cloned_module
         | 
| 25 | 
            +
                cloned_module.config('user.name', 'puppetlabs')
         | 
| 26 | 
            +
                cloned_module.config('user.email', 'email@email.com')
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              after(:all) do
         | 
| 30 | 
            +
                FileUtils.remove_entry @tmp_dir
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              it '#self.clone_directory' do
         | 
| 34 | 
            +
                Dir.mktmpdir do |dir|
         | 
| 35 | 
            +
                  PdkSync::Utils.clone_directory('puppetlabs',
         | 
| 36 | 
            +
                                                 'puppetlabs-motd', dir)
         | 
| 37 | 
            +
                  expect(cloned_module).to be_a Git::Base
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              it '#self.create_commit' do
         | 
| 42 | 
            +
                File.write(File.join(@tmp_dir, 'README.md'), rand(32_332))
         | 
| 43 | 
            +
                expect(PdkSync::Utils.create_commit(cloned_module, 'main', 'boom')).to match(%r{1 file changed})
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              it '#self.run_command' do
         | 
| 47 | 
            +
                expect(PdkSync::Utils.run_command('./', 'pwd', nil)).to eq(0)
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              it '#self.pdk_update' do
         | 
| 51 | 
            +
                expect(PdkSync::Utils.pdk_update(@tmp_dir)).to eq(0)
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
              it '#self.return_template_ref' do
         | 
| 55 | 
            +
                expect(PdkSync::Utils.return_template_ref(metadata_file)).to match(%r{heads/main-0-|tags/})
         | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
              it '#self.module_templates_url' do
         | 
| 59 | 
            +
                allow(Octokit).to receive(:tags).with('puppetlabs/pdk').and_return([{ name: 'v1.14.1' }])
         | 
| 60 | 
            +
                url, version = PdkSync::Utils.module_templates_url(metadata_file).split('#')
         | 
| 61 | 
            +
                expect(url).to eq('https://github.com/puppetlabs/pdk-templates.git')
         | 
| 62 | 
            +
                expect(version).to match(%r{main})
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
              it '#self.change_module_template_url' do
         | 
| 66 | 
            +
                url = 'https://github.com/nwops/pdk-templates'
         | 
| 67 | 
            +
                ref = 'special'
         | 
| 68 | 
            +
                expect(PdkSync::Utils.change_module_template_url(url, ref, metadata_file)).to eq('https://github.com/nwops/pdk-templates#special')
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              it '#self.checkout_branch' do
         | 
| 72 | 
            +
                PdkSync::Utils.checkout_branch(cloned_module, 'sync1234')
         | 
| 73 | 
            +
                branch = cloned_module.branches.find { |b| b.name.eql?('pdksync_sync1234') }
         | 
| 74 | 
            +
                expect(branch).to be_a Git::Branch
         | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
              it '#self.check_pdk_version is false' do
         | 
| 78 | 
            +
                process = double
         | 
| 79 | 
            +
                allow(process).to receive(:exitstatus).and_return(true)
         | 
| 80 | 
            +
                allow(Octokit).to receive(:tags).with('puppetlabs/pdk').and_return([{ name: 'v1.14.1' }])
         | 
| 81 | 
            +
                allow(PdkSync::Utils).to receive(:return_pdk_path).and_return('/opt/puppetlabs/pdk/bin/pdk')
         | 
| 82 | 
            +
                allow(Open3).to receive(:capture3).with('/opt/puppetlabs/pdk/bin/pdk --version').and_return(['1.14.0', nil, process])
         | 
| 83 | 
            +
                expect(PdkSync::Utils.check_pdk_version).to be false
         | 
| 84 | 
            +
              end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
              it '#self.check_pdk_version is true' do
         | 
| 87 | 
            +
                process = double
         | 
| 88 | 
            +
                allow(process).to receive(:exitstatus).and_return(true)
         | 
| 89 | 
            +
                allow(PdkSync::Utils).to receive(:return_pdk_path).and_return('/opt/puppetlabs/pdk/bin/pdk')
         | 
| 90 | 
            +
                allow(Open3).to receive(:capture3).with('/opt/puppetlabs/pdk/bin/pdk --version').and_return(['1.14.0', nil, process])
         | 
| 91 | 
            +
                allow(Octokit).to receive(:tags).with('puppetlabs/pdk').and_return([{ name: 'v1.14.0' }])
         | 
| 92 | 
            +
                expect(PdkSync::Utils.check_pdk_version).to be true
         | 
| 93 | 
            +
              end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
              it '#self.check_gem_latest_version' do
         | 
| 96 | 
            +
                process = double
         | 
| 97 | 
            +
                allow(process).to receive(:exitstatus).and_return(true)
         | 
| 98 | 
            +
                allow(Octokit).to receive(:tags).with('puppetlabs/puppet_module_gems').and_return([{ name: '0.4.0' }])
         | 
| 99 | 
            +
                expect(PdkSync::Utils.check_gem_latest_version('puppet_module_gems')).to eq '0.4.0'
         | 
| 100 | 
            +
              end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
              it '#self.update_gem_latest_version_by_one' do
         | 
| 103 | 
            +
                expect(PdkSync::Utils.update_gem_latest_version_by_one('0.4.0')).to eq Gem::Version.new('0.5')
         | 
| 104 | 
            +
              end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
              it '#self.create_filespace' do
         | 
| 107 | 
            +
                expect(PdkSync::Utils.create_filespace).to eq('modules_pdksync')
         | 
| 108 | 
            +
              end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
              it '#self.setup_client' do
         | 
| 111 | 
            +
                g = double(PdkSync::GitPlatformClient)
         | 
| 112 | 
            +
                expect(PdkSync::GitPlatformClient).to receive(:new).with(:github,
         | 
| 113 | 
            +
                                                                         {access_token: 'github-token',
         | 
| 114 | 
            +
                                                                         api_endpoint: nil,
         | 
| 115 | 
            +
                                                                         gitlab_api_endpoint: 'https://gitlab.com/api/v4'}).and_return(g)
         | 
| 116 | 
            +
                expect(PdkSync::Utils.setup_client).to eq(g)
         | 
| 117 | 
            +
              end
         | 
| 118 | 
            +
             | 
| 119 | 
            +
              it '#self.return_modules' do
         | 
| 120 | 
            +
                allow_any_instance_of(PdkSync::Configuration).to receive(:managed_modules).and_return(File.join(fixtures_dir, 'fake_managed_modules.yaml'))
         | 
| 121 | 
            +
                expect(PdkSync::Utils.return_modules).to eq(['puppetlabs/puppetlabs-motd'])
         | 
| 122 | 
            +
              end
         | 
| 123 | 
            +
             | 
| 124 | 
            +
              it '#self.validate_modules_exist' do
         | 
| 125 | 
            +
                client = double
         | 
| 126 | 
            +
                allow_any_instance_of(PdkSync::Configuration).to receive(:managed_modules).and_return(File.join(fixtures_dir, 'fake_managed_modules.yaml'))
         | 
| 127 | 
            +
                allow(client).to receive(:repository?).with('puppetlabs/puppetlabs-motd').and_return(true)
         | 
| 128 | 
            +
                expect(PdkSync::Utils.validate_modules_exist(client, ['puppetlabs-motd'])).to be true
         | 
| 129 | 
            +
              end
         | 
| 130 | 
            +
             | 
| 131 | 
            +
              it '#self.create_filespace_gem' do
         | 
| 132 | 
            +
                expect(PdkSync::Utils.create_filespace_gem).to eq('gems_pdksync')
         | 
| 133 | 
            +
              end
         | 
| 134 | 
            +
            end
         |