Unit test + vault password file existence check
This commit is contained in:
parent
dd06dffe85
commit
b77bd3e6bb
|
@ -47,7 +47,7 @@ module VagrantPlugins
|
||||||
@extra_vars = nil if @extra_vars == UNSET_VALUE
|
@extra_vars = nil if @extra_vars == UNSET_VALUE
|
||||||
@inventory_path = nil if @inventory_path == UNSET_VALUE
|
@inventory_path = nil if @inventory_path == UNSET_VALUE
|
||||||
@ask_sudo_pass = false unless @ask_sudo_pass == true
|
@ask_sudo_pass = false unless @ask_sudo_pass == true
|
||||||
@ask_vault_pass = false unless @ask_sudo_pass == true
|
@ask_vault_pass = false unless @ask_vault_pass == true
|
||||||
@vault_password_file = nil if @vault_password_file == UNSET_VALUE
|
@vault_password_file = nil if @vault_password_file == UNSET_VALUE
|
||||||
@limit = nil if @limit == UNSET_VALUE
|
@limit = nil if @limit == UNSET_VALUE
|
||||||
@sudo = false unless @sudo == true
|
@sudo = false unless @sudo == true
|
||||||
|
@ -112,6 +112,15 @@ module VagrantPlugins
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Validate the existence of the vault_password_file, if specified
|
||||||
|
if vault_password_file
|
||||||
|
expanded_path = Pathname.new(vault_password_file).expand_path(machine.env.root_path)
|
||||||
|
if !expanded_path.exist?
|
||||||
|
errors << I18n.t("vagrant.provisioners.ansible.vault_password_file_invalid",
|
||||||
|
:path => expanded_path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
{ "ansible provisioner" => errors }
|
{ "ansible provisioner" => errors }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1700,6 +1700,7 @@ en:
|
||||||
no_playbook: "`playbook` must be set for the Ansible provisioner."
|
no_playbook: "`playbook` must be set for the Ansible provisioner."
|
||||||
playbook_path_invalid: "`playbook` for the Ansible provisioner does not exist on the host system: %{path}"
|
playbook_path_invalid: "`playbook` for the Ansible provisioner does not exist on the host system: %{path}"
|
||||||
inventory_path_invalid: "`inventory_path` for the Ansible provisioner does not exist on the host system: %{path}"
|
inventory_path_invalid: "`inventory_path` for the Ansible provisioner does not exist on the host system: %{path}"
|
||||||
|
vault_password_file_invalid: "`vault_password_file` for the Ansible provisioner does not exist on the host system: %{path}"
|
||||||
extra_vars_invalid: "`extra_vars` for the Ansible provisioner must be a hash or a path to an existing file. Received: %{value} (as %{type})"
|
extra_vars_invalid: "`extra_vars` for the Ansible provisioner must be a hash or a path to an existing file. Received: %{value} (as %{type})"
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
|
|
|
@ -16,6 +16,7 @@ describe VagrantPlugins::Ansible::Config do
|
||||||
config_options = subject.public_methods(false).find_all { |i| i.to_s.end_with?('=') }
|
config_options = subject.public_methods(false).find_all { |i| i.to_s.end_with?('=') }
|
||||||
config_options.map! { |i| i.to_s.sub('=', '') }
|
config_options.map! { |i| i.to_s.sub('=', '') }
|
||||||
supported_options = %w( ask_sudo_pass
|
supported_options = %w( ask_sudo_pass
|
||||||
|
ask_vault_pass
|
||||||
extra_vars
|
extra_vars
|
||||||
groups
|
groups
|
||||||
host_key_checking
|
host_key_checking
|
||||||
|
@ -29,6 +30,7 @@ describe VagrantPlugins::Ansible::Config do
|
||||||
sudo
|
sudo
|
||||||
sudo_user
|
sudo_user
|
||||||
tags
|
tags
|
||||||
|
vault_password_file
|
||||||
verbose )
|
verbose )
|
||||||
|
|
||||||
expect(config_options.sort).to eql(supported_options)
|
expect(config_options.sort).to eql(supported_options)
|
||||||
|
@ -40,6 +42,8 @@ describe VagrantPlugins::Ansible::Config do
|
||||||
expect(subject.playbook).to be_nil
|
expect(subject.playbook).to be_nil
|
||||||
expect(subject.extra_vars).to be_nil
|
expect(subject.extra_vars).to be_nil
|
||||||
expect(subject.ask_sudo_pass).to be_false
|
expect(subject.ask_sudo_pass).to be_false
|
||||||
|
expect(subject.ask_vault_pass).to be_false
|
||||||
|
expect(subject.vault_password_file).to be_nil
|
||||||
expect(subject.limit).to be_nil
|
expect(subject.limit).to be_nil
|
||||||
expect(subject.sudo).to be_false
|
expect(subject.sudo).to be_false
|
||||||
expect(subject.sudo_user).to be_nil
|
expect(subject.sudo_user).to be_nil
|
||||||
|
@ -59,6 +63,9 @@ describe VagrantPlugins::Ansible::Config do
|
||||||
describe "ask_sudo_pass option" do
|
describe "ask_sudo_pass option" do
|
||||||
it_behaves_like "any VagrantConfigProvisioner strict boolean attribute", :ask_sudo_pass, false
|
it_behaves_like "any VagrantConfigProvisioner strict boolean attribute", :ask_sudo_pass, false
|
||||||
end
|
end
|
||||||
|
describe "ask_vault_pass option" do
|
||||||
|
it_behaves_like "any VagrantConfigProvisioner strict boolean attribute", :ask_sudo_pass, false
|
||||||
|
end
|
||||||
describe "sudo option" do
|
describe "sudo option" do
|
||||||
it_behaves_like "any VagrantConfigProvisioner strict boolean attribute", :sudo, false
|
it_behaves_like "any VagrantConfigProvisioner strict boolean attribute", :sudo, false
|
||||||
end
|
end
|
||||||
|
@ -155,6 +162,17 @@ describe VagrantPlugins::Ansible::Config do
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "returns an error if vault_password_file is specified, but does not exist" do
|
||||||
|
subject.vault_password_file = non_existing_file
|
||||||
|
subject.finalize!
|
||||||
|
|
||||||
|
result = subject.validate(machine)
|
||||||
|
expect(result["ansible provisioner"]).to eql([
|
||||||
|
I18n.t("vagrant.provisioners.ansible.vault_password_file_invalid",
|
||||||
|
:path => non_existing_file)
|
||||||
|
])
|
||||||
|
end
|
||||||
|
|
||||||
it "it collects and returns all detected errors" do
|
it "it collects and returns all detected errors" do
|
||||||
subject.playbook = non_existing_file
|
subject.playbook = non_existing_file
|
||||||
subject.inventory_path = non_existing_file
|
subject.inventory_path = non_existing_file
|
||||||
|
|
Loading…
Reference in New Issue