cookbooks/aws-parallelcluster-platform/spec/unit/resources/fetch_dna_files_spec.rb (65 lines of code) (raw):

require 'spec_helper' class ConvergeFetchDnaFiles def self.share(chef_run, extra_chef_attribute_location: nil) chef_run.converge_dsl('aws-parallelcluster-platform') do fetch_dna_files 'share' do extra_chef_attribute_location extra_chef_attribute_location action :share end end end def self.cleanup(chef_run) chef_run.converge_dsl('aws-parallelcluster-platform') do fetch_dna_files 'cleanup' do action :cleanup end end end end describe 'fetch_dna_files resource' do for_all_oses do |platform, version| context "on #{platform}#{version}" do cached(:script_dir) { 'SCRIPT_DIR' } cached(:shared_dir) { 'SHARED_DIR' } cached(:region) { 'REGION' } context "when we share dna files" do cached(:chef_run) do runner = runner(platform: platform, version: version, step_into: ['fetch_dna_files']) do |node| node.override['cluster']['scripts_dir'] = script_dir node.override['cluster']['shared_dir'] = shared_dir node.override['cluster']['node_type'] = 'HeadNode' node.override['cluster']['region'] = region node.override['kitchen'] = true end ConvergeFetchDnaFiles.share(runner, extra_chef_attribute_location: "#{kitchen_instance_types_data_path}") end cached(:node) { chef_run.node } # it "it copies data from /tmp/extra.json" do # is_expected.to create_remote_file("copy extra.json") # .with(path: "#{shared_dir}/dna/extra.json") # .with(source: "file://#{kitchen_instance_types_data_path}") # end it 'runs share_compute_fleet_dna.py to get dna files' do is_expected.to run_execute('Run share_compute_fleet_dna.py to get user_data.sh and share dna.json with ComputeFleet').with( command: "#{cookbook_virtualenv_path}/bin/python #{node['cluster']['scripts_dir']}/share_compute_fleet_dna.py" \ " --region #{node['cluster']['region']}" ) end end context "when we cleanup dna files" do cached(:chef_run) do runner = runner(platform: platform, version: version, step_into: ['fetch_dna_files']) do |node| node.override['cluster']['scripts_dir'] = script_dir node.override['cluster']['shared_dir'] = shared_dir node.override['cluster']['node_type'] = 'HeadNode' node.override['cluster']['region'] = region end allow_any_instance_of(Object).to receive(:aws_domain).and_return(aws_domain) ConvergeFetchDnaFiles.cleanup(runner) end cached(:node) { chef_run.node } it 'cleanups dna files' do is_expected.to run_execute("Cleanup dna.json and extra.json from #{node['cluster']['shared_dir']}/dna").with( command: "#{cookbook_virtualenv_path}/bin/python #{node['cluster']['scripts_dir']}/share_compute_fleet_dna.py" \ " --region #{node['cluster']['region']} --cleanup" ) end end end end end