From f2da63369fcb754e3715091cc4fd2f93db42106e Mon Sep 17 00:00:00 2001 From: Elvin Efendi Date: Tue, 27 Oct 2015 14:49:52 -0400 Subject: better test framework, more specs and Travis CI --- spec/node_spec.rb | 44 ++++++++++++++++++++++++++++++++++++++++++++ spec/nodes_spec.rb | 35 +++++++++++++++++++++++------------ spec/spec_helper.rb | 14 ++++++++++++++ 3 files changed, 81 insertions(+), 12 deletions(-) create mode 100644 spec/node_spec.rb create mode 100644 spec/spec_helper.rb (limited to 'spec') diff --git a/spec/node_spec.rb b/spec/node_spec.rb new file mode 100644 index 0000000..c568463 --- /dev/null +++ b/spec/node_spec.rb @@ -0,0 +1,44 @@ +require 'spec_helper' + +describe Oxidized::Node do + before(:each) do + Oxidized.stubs(:asetus).returns(Asetus.new) + + Oxidized::Node.any_instance.stubs(:resolve_output) + @node = Oxidized::Node.new(name: 'example.com', + input: 'ssh', + output: 'git', + model: 'junos', + username: 'alma', + password: 'armud', + prompt: 'test_prompt') + + end + + describe '#new' do + it 'should resolve input' do + @node.input[0].to_s.split('::')[1].must_equal 'SSH' + end + it 'should resolve model' do + @node.model.class.must_equal JunOS + end + it 'should resolve username' do + @node.auth[:username].must_equal 'alma' + end + it 'should resolve password' do + @node.auth[:password].must_equal 'armud' + end + it 'should require prompt' do + @node.prompt.must_equal 'test_prompt' + end + end + + describe '#run' do + it 'should fetch the configuration' do + stub_oxidized_ssh + + status, _ = @node.run + status.must_equal :success + end + end +end diff --git a/spec/nodes_spec.rb b/spec/nodes_spec.rb index 80ed300..5f2ef95 100644 --- a/spec/nodes_spec.rb +++ b/spec/nodes_spec.rb @@ -1,33 +1,44 @@ -require 'oxidized' -Oxidized.mgr = Oxidized::Manager.new +require 'spec_helper' describe Oxidized::Nodes do before(:each) do + Resolv.any_instance.stubs(:getaddress) + Oxidized.stubs(:asetus).returns(Asetus.new) + opts = { + input: 'ssh', + output: 'git', + model: 'junos', + username: 'alma', + password: 'armud', + prompt: 'test_prompt' + } + + Oxidized::Node.any_instance.stubs(:resolve_output) @nodes_org = %w(ltt-pe1.hel kes2-rr1.tku tor-peer1.oul - hal-p2.tre sav-gr1-sw1.kuo psl-sec-pe1.hel).map { |e| Oxidized::Node.new(:name=>e) } - @nodes = Oxidized::Nodes.new @nodes_org.dup + hal-p2.tre sav-gr1-sw1.kuo psl-sec-pe1.hel).map { |e| Oxidized::Node.new(opts.merge(name: e)) } + @node = @nodes_org.delete_at(0) + @nodes = Oxidized::Nodes.new(nodes: @nodes_org.dup) end describe '#put' do it 'adds node to top of queue' do - node = Oxidized::Node.new(:name=>'kst-p1.sto') - @nodes.put node - expect(@nodes).to eq [node] + @nodes_org + @nodes.put @node + @nodes.must_equal [@node] + @nodes_org end end describe '#get' do it 'returns node from top of queue' do - expect(@nodes.get).to eq @nodes_org.first + @nodes.get.must_equal @nodes_org.first end it 'moves node from top to bottom' do @nodes.get - expect(@nodes).to end_with [@nodes_org.first] + @nodes.last.must_equal @nodes_org.first end it 'does not change node count' do before = @nodes.size @nodes.get - expect(before).to eq @nodes.size + before.must_equal @nodes.size end end @@ -35,12 +46,12 @@ describe Oxidized::Nodes do it 'moves node to top of queue' do node = @nodes[3] @nodes.next node.name - expect(@nodes).to start_with [node] + @nodes.first.must_equal node end it 'does not change node count' do before = @nodes.size @nodes.next @nodes[3].name - expect(before).to eq @nodes.size + before.must_equal @nodes.size end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..28eb9d4 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,14 @@ +require 'minitest/autorun' +require 'mocha/mini_test' +require 'oxidized' + +Oxidized.mgr = Oxidized::Manager.new + +def stub_oxidized_ssh + Oxidized::SSH.any_instance.stubs(:connect).returns(true) + Oxidized::SSH.any_instance.stubs(:node).returns(@node) + Oxidized::SSH.any_instance.expects(:cmd).at_least(1).returns("this is a command output\nModel: mx960") + Oxidized::SSH.any_instance.stubs(:connect_cli).returns(true) + Oxidized::SSH.any_instance.stubs(:disconnect).returns(true) + Oxidized::SSH.any_instance.stubs(:disconnect_cli).returns(true) +end -- cgit v1.2.1