spec/methods_spec.rb in sloe-0.8.7 vs spec/methods_spec.rb in sloe-0.8.9

- old
+ new

@@ -1,107 +1,83 @@ -require 'sloe/junos' +require 'spec_helper' describe Sloe do - - before(:all) do - @jnx_mibs = Dir.glob("./mibs/JUNIPER-*.yaml").map { |f| File.basename(f, '.yaml') } - @args = { - :target => 'capella', - :username => 'netconf', - :password => 'netconf', - :mib_dir => './mibs', - :mib_modules => ["SNMPv2-SMI", "SNMPv2-MIB", "IF-MIB", "IP-MIB", "TCP-MIB", "UDP-MIB"].concat(@jnx_mibs) + let(:host) { ENV['hosts'].split(':').first } + let(:jnx_mibs) do + Dir.glob('./mibs/JUNIPER-*.yaml').map { |f| File.basename(f, '.yaml') } + end + let(:login) do + { + target: Envyable.load('/tmp/env.yaml', host)['ip_address'], + username: 'root', + password: 'Juniper', + port: Envyable.load('/tmp/env.yaml', host)['ssh_port'], + mib_dir: './mibs', + mib_modules: %w{SNMPv2-SMI SNMPv2-MIB IF-MIB IP-MIB TCP-MIB UDP-MIB}.concat(jnx_mibs), + snmp_port: 1161 } - - @dut = Sloe::Junos.new(@args) end + subject(:dut) { Sloe::Junos.new(login) } - context "SNMP API" do - it "snmp.get_value() returns valid value" do - @dut.snmp.get_value('sysDescr.0').should =~ /^Juniper Networks,/ + context 'SNMP API' do + it 'snmp.get_value returns valid value' do + expect(dut.snmp.get_value('sysDescr.0')).to include('Juniper Networks') end - it "snmp.get() returns one PDU" do - @pdu = @dut.snmp.get('sysDescr.0') - @pdu.varbind_list.should have(1).item + it 'snmp.get returns one PDU' do + expect(dut.snmp.get('sysDescr.0').varbind_list.size).to eq(1) end - it "snmp.get_bulk() returns a list of PDUs" do - @pdu = @dut.snmp.get_bulk(0, 5, 'system') - @pdu.varbind_list.should have(5).items + it 'snmp.get_bulk returns a list of PDUs' do + expect(dut.snmp.get_bulk(0, 5, 'system').varbind_list.size).to eq(5) end - it "snmp.get_next() returns one PDU" do - @pdu = @dut.snmp.get_next('system') - @pdu.varbind_list.should have(1).item + it 'snmp.get_next returns one PDU' do + expect(dut.snmp.get_next('system').varbind_list.size).to eq(1) end - it "snmp.walk() returns a list of PDUs none of which are nil" do - @dut.snmp.walk('system') { |vb| vb.should_not be_nil } + it 'snmp.walk returns a list of PDUs' do + vbs = [] + dut.snmp.walk('system') { |vb| vbs << vb } + expect(vbs.size).to be > 0 end end - context "JNX Enterprise MIBs" do - it "jnxBoxDescr.0 has a valid value" do - @dut.snmp.get_value('jnxBoxDescr.0').should =~ /^Juniper/ + context 'JNX Enterprise MIBs' do + it 'jnxCmCfgChgLatestUser.0 has a valid value' do + expect(dut.snmp.get_value('jnxCmCfgChgLatestUser.0')).not_to eq(SNMP::NoSuchObject) end end - context "NETCONF API" do - it "rpc.get_interface_information() functions without error" do - lambda { @dut.rpc.get_interface_information() }.should_not raise_error + context 'NETCONF API' do + it 'rpc.get_interface_information functions without error' do + expect { dut.rpc.get_interface_information }.not_to raise_error end - it "rpc.get_ospf_neighbor_information() functions without error" do - lambda { @dut.rpc.get_ospf_neighbor_information() }.should_not raise_error + it 'rpc.get_ospf_neighbor_information functions without error' do + expect { dut.rpc.get_ospf_neighbor_information }.not_to raise_error end end - context "SCP API" do - it "scp.download() functions without error" do - lambda { @dut.scp.download!('/config/juniper.conf.gz', '/var/tmp/juniper.conf.gz') }.should_not raise_error + context 'SCP API' do + it 'scp.download() functions without error' do + expect { dut.scp.download!('/config/juniper.conf.gz', '/var/tmp/juniper.conf.gz') }.not_to raise_error File.delete('/var/tmp/juniper.conf.gz') end - it "scp.upload() functions without error" do + it 'scp.upload() functions without error' do File.new('/var/tmp/test', 'w+') - lambda { @dut.scp.upload!('/var/tmp/test', 'test') }.should_not raise_error - @dut.rpc.file_delete(:path => 'test') + expect { dut.scp.upload!('/var/tmp/test', 'test') }.not_to raise_error + dut.rpc.file_delete(path: 'test') File.delete('/var/tmp/test') end end - context "CLI API" do + context 'CLI API' do it "cli('show version') functions without error" do - lambda { @dut.cli("show version") }.should_not raise_error + expect { dut.cli('show version') }.not_to raise_error end it "cli('show version') contains OS information" do - @dut.cli("show version").should be_a(String) - @dut.cli("show version").should =~ /JUNOS Base OS/ + expect(dut.cli('show version')).to include('JUNOS Base OS') end it "cli('show version', :foo => 'bar') still contains OS information" do - @dut.cli("show version", :foo => 'bar').should be_a(String) - @dut.cli("show version", :foo => 'bar').should =~ /JUNOS Base OS/ + expect(dut.cli('show version', foo: 'bar')).to include('JUNOS Base OS') end it "cli('clear interface statistics') empty reply does not cause an error" do - lambda { @dut.cli('clear interface statistics fxp0') }.should_not raise_error + expect { dut.cli('clear interface statistics fxp0') }.not_to raise_error end end - - context "Helper methods" do - before( :all ) do - Dir.mkdir( 'configs' ) - @apply = File.open( "configs/capella-apply.set", "w" ) - @apply.write( 'set system location building "In a galaxy far, far, away"' ) - @apply.close - - @delete = File.open( "configs/capella-delete.set", "w" ) - @delete.write( 'delete system location') - @delete.close - end - - it "setup() with default args updates the router config" do - lambda { @dut.setup() }.should_not raise_error - end - it "clearup() with default args updates the router config" do - lambda { @dut.clearup() }.should_not raise_error - end - - after(:all) do - FileUtils.rm_rf( 'configs' ) - end - end -end \ No newline at end of file +end