diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/fixtures/0131-timezone-basic.installfile | 6 | ||||
-rw-r--r-- | tests/fixtures/0132-timezone-invalid.installfile | 7 | ||||
-rw-r--r-- | tests/fixtures/0133-timezone-malicious.installfile | 7 | ||||
-rw-r--r-- | tests/fixtures/0134-timezone-subtz.installfile | 6 | ||||
-rw-r--r-- | tests/spec/validator_spec.rb | 78 |
5 files changed, 79 insertions, 25 deletions
diff --git a/tests/fixtures/0131-timezone-basic.installfile b/tests/fixtures/0131-timezone-basic.installfile new file mode 100644 index 0000000..ca8306a --- /dev/null +++ b/tests/fixtures/0131-timezone-basic.installfile @@ -0,0 +1,6 @@ +network false +hostname test.machine +pkginstall adelie-base +rootpw $6$gumtLGmHwOVIRpQR$2M9PUO24hy5mofzWWf9a.YLbzOgOlUby1g0hDj.wG67E2wrrvys59fq02PPdxBdbgkLZFtjfEx6MHZwMBamwu/ +mount /dev/sda1 / +timezone UTC diff --git a/tests/fixtures/0132-timezone-invalid.installfile b/tests/fixtures/0132-timezone-invalid.installfile new file mode 100644 index 0000000..53e8446 --- /dev/null +++ b/tests/fixtures/0132-timezone-invalid.installfile @@ -0,0 +1,7 @@ +network false +hostname test.machine +pkginstall adelie-base +rootpw $6$gumtLGmHwOVIRpQR$2M9PUO24hy5mofzWWf9a.YLbzOgOlUby1g0hDj.wG67E2wrrvys59fq02PPdxBdbgkLZFtjfEx6MHZwMBamwu/ +mount /dev/sda1 / +# This is in Africa, not America. +timezone America/Nairobi diff --git a/tests/fixtures/0133-timezone-malicious.installfile b/tests/fixtures/0133-timezone-malicious.installfile new file mode 100644 index 0000000..519d3ec --- /dev/null +++ b/tests/fixtures/0133-timezone-malicious.installfile @@ -0,0 +1,7 @@ +network false +hostname test.machine +pkginstall adelie-base +rootpw $6$gumtLGmHwOVIRpQR$2M9PUO24hy5mofzWWf9a.YLbzOgOlUby1g0hDj.wG67E2wrrvys59fq02PPdxBdbgkLZFtjfEx6MHZwMBamwu/ +mount /dev/sda1 / +# Try to get the Runner to copy /etc/passwd to /target/etc/localtime +timezone ../../../etc/passwd diff --git a/tests/fixtures/0134-timezone-subtz.installfile b/tests/fixtures/0134-timezone-subtz.installfile new file mode 100644 index 0000000..72af414 --- /dev/null +++ b/tests/fixtures/0134-timezone-subtz.installfile @@ -0,0 +1,6 @@ +network false +hostname test.machine +pkginstall adelie-base +rootpw $6$gumtLGmHwOVIRpQR$2M9PUO24hy5mofzWWf9a.YLbzOgOlUby1g0hDj.wG67E2wrrvys59fq02PPdxBdbgkLZFtjfEx6MHZwMBamwu/ +mount /dev/sda1 / +timezone Pacific/Galapagos diff --git a/tests/spec/validator_spec.rb b/tests/spec/validator_spec.rb index b07e383..457aa93 100644 --- a/tests/spec/validator_spec.rb +++ b/tests/spec/validator_spec.rb @@ -160,6 +160,44 @@ RSpec.describe 'HorizonScript validation', :type => :aruba do run_validate expect(last_command_started).to have_output(/error: .*rootpw.*/) end + context "for 'language' key" do + # Runner.Validate.language + # Runner.Validate.language.Format + it "supports a simple language" do + use_fixture '0115-language-simple.installfile' + run_validate + expect(last_command_started).to have_output(PARSER_SUCCESS) + expect(last_command_started).to have_output(VALIDATOR_SUCCESS) + end + it "supports a language_territory value" do + use_fixture '0116-language-country.installfile' + run_validate + expect(last_command_started).to have_output(PARSER_SUCCESS) + expect(last_command_started).to have_output(VALIDATOR_SUCCESS) + end + it "supports the UTF-8 codeset" do + use_fixture '0117-language-codeset.installfile' + run_validate + expect(last_command_started).to have_output(PARSER_SUCCESS) + expect(last_command_started).to have_output(VALIDATOR_SUCCESS) + end + it "supports the special case C.UTF-8" do + use_fixture '0118-language-c-exception.installfile' + run_validate + expect(last_command_started).to have_output(PARSER_SUCCESS) + expect(last_command_started).to have_output(VALIDATOR_SUCCESS) + end + it "requires a valid language" do + use_fixture '0119-language-invalid.installfile' + run_validate + expect(last_command_started).to have_output(/error: .*language.*invalid/) + end + it "requires the UTF-8 codeset" do + use_fixture '0120-language-iso.installfile' + run_validate + expect(last_command_started).to have_output(/error: .*language.*codeset/) + end + end context "for 'firmware' key" do it "always supports 'false' value" do use_fixture '0112-firmware-false.installfile' @@ -186,43 +224,33 @@ RSpec.describe 'HorizonScript validation', :type => :aruba do expect(last_command_started).to have_output(/error: .*firmware.*value/) end end - context "for 'language' key" do - # Runner.Validate.language - # Runner.Validate.language.Format - it "supports a simple language" do - use_fixture '0115-language-simple.installfile' + context "for 'timezone' key" do + # Runner.Validate.timezone. + it "fails with an invalid value" do + use_fixture '0132-timezone-invalid.installfile' run_validate - expect(last_command_started).to have_output(PARSER_SUCCESS) - expect(last_command_started).to have_output(VALIDATOR_SUCCESS) + expect(last_command_started).to have_output(/error: .*timezone.*invalid/) end - it "supports a language_territory value" do - use_fixture '0116-language-country.installfile' + # Runner.Validate.timezone. + it "fails with a maliciously invalid value" do + use_fixture '0133-timezone-malicious.installfile' run_validate - expect(last_command_started).to have_output(PARSER_SUCCESS) - expect(last_command_started).to have_output(VALIDATOR_SUCCESS) + expect(last_command_started).to have_output(/error: .*timezone.*invalid/) end - it "supports the UTF-8 codeset" do - use_fixture '0117-language-codeset.installfile' + # Runner.Validate.timezone.zoneinfo. + it "succeeds with simple value" do + use_fixture '0131-timezone-basic.installfile' run_validate expect(last_command_started).to have_output(PARSER_SUCCESS) expect(last_command_started).to have_output(VALIDATOR_SUCCESS) end - it "supports the special case C.UTF-8" do - use_fixture '0118-language-c-exception.installfile' + # Runner.Validate.timezone.zoneinfo. + it "succeeds with Locality/Zone value" do + use_fixture '0134-timezone-subtz.installfile' run_validate expect(last_command_started).to have_output(PARSER_SUCCESS) expect(last_command_started).to have_output(VALIDATOR_SUCCESS) end - it "requires a valid language" do - use_fixture '0119-language-invalid.installfile' - run_validate - expect(last_command_started).to have_output(/error: .*language.*invalid/) - end - it "requires the UTF-8 codeset" do - use_fixture '0120-language-iso.installfile' - run_validate - expect(last_command_started).to have_output(/error: .*language.*codeset/) - end end context "for 'mount' key" do # Runner.Validate.mount. |