From 932a5aacbd210970dddc1e3bafc11d968f55adfe Mon Sep 17 00:00:00 2001 From: jordanbreen28 Date: Wed, 15 May 2024 16:57:13 +0100 Subject: [PATCH] (CAT-372) - Add tests for vagrant provision --- spec/tasks/vagrant_spec.rb | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 spec/tasks/vagrant_spec.rb diff --git a/spec/tasks/vagrant_spec.rb b/spec/tasks/vagrant_spec.rb new file mode 100644 index 00000000..8253e23e --- /dev/null +++ b/spec/tasks/vagrant_spec.rb @@ -0,0 +1,31 @@ +require 'json' +require 'rspec' + +describe 'vagrant' do + before(:each) do + # Stub $stdin.read to return a predefined JSON string + allow($stdin).to receive(:read).and_return({ + platform: 'generic/debian10', + action: 'provision', + vars: 'role: worker1', + inventory: './spec/fixtures/litmus_inventory.yaml', + enable_synced_folder: 'true', + provider: 'provider', + cpus: 'cpus', + memory: 'memory', + hyperv_vswitch: 'hyperv_vswitch', + hyperv_smb_username: 'hyperv_smb_username' + }.to_json) + # Load the task file after stubbing $stdin, as the task file reads from $stdin on load + require_relative '../../tasks/vagrant' + end + + it 'provisions a new vagrant box when action is provision' do + result = provision(platform, inventory_location, enable_synced_folder, provider, cpus, memory, hyperv_vswitch, hyperv_smb_username, hyperv_smb_password, box_url, password, vars) + expect(result[:status]).to eq('ok') + expect(result[:node_name]).not_to be_nil + expect(result[:node]['facts']['provisioner']).to eq('vagrant') + expect(result[:node]['facts']['platform']).to eq(platform) + expect(result[:node]['vars']).to eq(JSON.parse(vars)) + end +end