summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2020-01-21 14:51:37 -0800
committerTim Smith <tsmith84@gmail.com>2020-01-21 14:51:37 -0800
commitbb5a1116e62de2b672f09f0e069afa14747299d6 (patch)
tree465dc702ef18cacbc9cf8c7554ac0bb67a8ed539
parent77b0b194866b354aa40db6ae734cca2533f7249c (diff)
downloadchef-windows_utils.tar.gz
Add specs for the windows helperswindows_utils
A copy and tweak of the architecture specs Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r--chef-utils/spec/spec_helper.rb2
-rw-r--r--chef-utils/spec/unit/dsl/windows_spec.rb63
2 files changed, 65 insertions, 0 deletions
diff --git a/chef-utils/spec/spec_helper.rb b/chef-utils/spec/spec_helper.rb
index 20d49fd766..98dce52440 100644
--- a/chef-utils/spec/spec_helper.rb
+++ b/chef-utils/spec/spec_helper.rb
@@ -10,6 +10,7 @@ HELPER_MODULES = [
ChefUtils::DSL::PlatformFamily,
ChefUtils::DSL::Service,
ChefUtils::DSL::Which,
+ ChefUtils::DSL::Windows,
].freeze
ARCH_HELPERS = (ChefUtils::DSL::Architecture.methods - Module.methods).freeze
@@ -17,6 +18,7 @@ OS_HELPERS = (ChefUtils::DSL::OS.methods - Module.methods).freeze
PLATFORM_HELPERS = (ChefUtils::DSL::Platform.methods - Module.methods).freeze
PLATFORM_FAMILY_HELPERS = (ChefUtils::DSL::PlatformFamily.methods - Module.methods).freeze
INTROSPECTION_HELPERS = (ChefUtils::DSL::Introspection.methods - Module.methods).freeze
+WINDOWS_HELPERS = (ChefUtils::DSL::Windows.methods - Module.methods).freeze
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
RSpec.configure do |config|
diff --git a/chef-utils/spec/unit/dsl/windows_spec.rb b/chef-utils/spec/unit/dsl/windows_spec.rb
new file mode 100644
index 0000000000..e069c175ee
--- /dev/null
+++ b/chef-utils/spec/unit/dsl/windows_spec.rb
@@ -0,0 +1,63 @@
+#
+# Copyright:: Copyright 2020, Chef Software Inc.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+require "spec_helper"
+
+def windows_reports_true_for(*args)
+ args.each do |method|
+ it "reports true for #{method}" do
+ expect(described_class.send(method, node)).to be true
+ end
+ end
+ (WINDOWS_HELPERS - args).each do |method|
+ it "reports false for #{method}" do
+ expect(described_class.send(method, node)).to be false
+ end
+ end
+end
+
+RSpec.describe ChefUtils::DSL::Windows do
+ ( HELPER_MODULES - [ described_class ] ).each do |klass|
+ it "does not have methods that collide with #{klass}" do
+ expect((klass.methods - Module.methods) & WINDOWS_HELPERS).to be_empty
+ end
+ end
+
+ WINDOWS_HELPERS.each do |helper|
+ it "has the #{helper} in the ChefUtils module" do
+ expect(ChefUtils).to respond_to(helper)
+ end
+ end
+
+ context "on Windows Server Core" do
+ let(:node) { { "kernel" => { "server_core" => true } } }
+
+ windows_reports_true_for(:windows_server_core?)
+ end
+
+ context "on Windows Workstation" do
+ let(:node) { { "kernel" => { "product_type" => "Workstation" } } }
+
+ windows_reports_true_for(:windows_workstation?)
+ end
+
+ context "on Windows Server" do
+ let(:node) { { "kernel" => { "product_type" => "Server" } } }
+
+ windows_reports_true_for(:windows_server?)
+ end
+end