From 98c0689e8f6123d7a390d5ca2a93ef813a4a3b00 Mon Sep 17 00:00:00 2001 From: Tim Smith Date: Tue, 29 Nov 2016 14:59:49 -0800 Subject: Rework the specs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These specs weren’t covering the actual meat of the plugin. They mocked out the methods, when the methods are where the majority of logic exists. Instead of mocking those methods mock out the files on disk. This also serves to document the structure of the files we’re parsing in the plugin so that’s another win. Signed-off-by: Tim Smith --- spec/unit/plugins/joyent_spec.rb | 78 +++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/spec/unit/plugins/joyent_spec.rb b/spec/unit/plugins/joyent_spec.rb index a6670126..851826fc 100644 --- a/spec/unit/plugins/joyent_spec.rb +++ b/spec/unit/plugins/joyent_spec.rb @@ -1,71 +1,83 @@ -require "spec_helper" +require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "/spec_helper.rb")) describe Ohai::System, "plugin joyent" do - before(:each) do - @plugin = get_plugin("joyent") - end + let(:plugin) { get_plugin("joyent") } describe "without joyent" do before(:each) do - allow(@plugin).to receive(:is_smartos?).and_return(false) + allow(plugin).to receive(:is_smartos?).and_return(false) end - it "should NOT create joyent" do - @plugin.run - expect(@plugin[:joyent]).to be_nil + it "DOES NOT create joyent mash" do + plugin.run + expect(plugin[:joyent]).to be_nil end end describe "with joyent" do before(:each) do - allow(@plugin).to receive(:is_smartos?).and_return(true) - @plugin[:virtualization] = Mash.new - @plugin[:virtualization][:guest_uuid] = "global" + allow(plugin).to receive(:is_smartos?).and_return(true) + plugin[:virtualization] = Mash.new + plugin[:virtualization][:guest_uuid] = "global" end - it "should create joyent" do - @plugin.run - expect(@plugin[:joyent]).not_to be_nil + it "creates joyent mash" do + plugin.run + expect(plugin[:joyent]).not_to be_nil end describe "under global zone" do before(:each) do - @plugin.run + plugin.run end - it "should ditect global zone" do - expect(@plugin[:joyent][:sm_uuid]).to eql "global" + it "detects global zone" do + expect(plugin[:joyent][:sm_uuid]).to eql "global" end - it "should NOT create sm_id" do - expect(@plugin[:joyent][:sm_id]).to be_nil + it "DOES NOT create sm_id" do + expect(plugin[:joyent][:sm_id]).to be_nil end end describe "under smartmachine" do before(:each) do - @plugin[:virtualization][:guest_uuid] = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" - @plugin[:virtualization][:guest_id] = "30" - allow(@plugin).to receive(:collect_product_file).and_return(["Name: Joyent Instance", "Image: base64 13.4.2", "Documentation: http://wiki.joyent.com/jpc2/SmartMachine+Base"]) - allow(@plugin).to receive(:collect_pkgsrc).and_return("http://pkgsrc.joyent.com/packages/SmartOS/2013Q4/x86_64/All") - @plugin.run + plugin[:virtualization][:guest_uuid] = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" + plugin[:virtualization][:guest_id] = "30" + + etc_product = <<-EOS +Name: Joyent Instance +Image: pkgbuild 16.3.1 +Documentation: https://docs.joyent.com/images/smartos/pkgbuild + EOS + + pkg_install_conf = <<-EOS +GPG_KEYRING_VERIFY=/opt/local/etc/gnupg/pkgsrc.gpg +GPG_KEYRING_PKGVULN=/opt/local/share/gnupg/pkgsrc-security.gpg +PKG_PATH=https://pkgsrc.joyent.com/packages/SmartOS/2016Q3/x86_64/All +VERIFIED_INSTALLATION=trusted + EOS + + allow(::File).to receive(:read).with("/etc/product").and_return(etc_product) + allow(::File).to receive(:read).with("/opt/local/etc/pkg_install.conf").and_return(pkg_install_conf) + plugin.run end - it "should retrive zone uuid" do - expect(@plugin[:joyent][:sm_uuid]).to eql "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" + it "retrieves zone uuid" do + expect(plugin[:joyent][:sm_uuid]).to eql "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" end - it "should collect sm_id" do - expect(@plugin[:joyent][:sm_id]).to eql "30" + it "collects sm_id" do + expect(plugin[:joyent][:sm_id]).to eql "30" end - it "should collect images" do - expect(@plugin[:joyent][:sm_image_id]).not_to be_nil - expect(@plugin[:joyent][:sm_image_ver]).not_to be_nil + it "collects images" do + expect(plugin[:joyent][:sm_image_id]).to eql "pkgbuild" + expect(plugin[:joyent][:sm_image_ver]).to eql "16.3.1" end - it "should collect pkgsrc" do - expect(@plugin[:joyent][:sm_pkgsrc]).to eql "http://pkgsrc.joyent.com/packages/SmartOS/2013Q4/x86_64/All" + it "collects pkgsrc" do + expect(plugin[:joyent][:sm_pkgsrc]).to eql "https://pkgsrc.joyent.com/packages/SmartOS/2016Q3/x86_64/All" end end end -- cgit v1.2.1