spec/profitbricks/server_spec.rb in profitbricks-0.9.9 vs spec/profitbricks/server_spec.rb in profitbricks-1.0.0
- old
+ new
@@ -1,10 +1,13 @@
require 'spec_helper'
describe Profitbricks::Server do
- include Savon::Spec::Macros
+ include Savon::SpecHelper
+ before(:all) { savon.mock! }
+ after(:all) { savon.unmock! }
+
describe "enforcing required arguments" do
describe "on create" do
it "should require :cores and :ram" do
expect { Server.create(:cores => 1) }.to raise_error(ArgumentError, "You must provide :cores and :ram")
expect { Server.create(:ram => 256) }.to raise_error(ArgumentError, "You must provide :cores and :ram")
@@ -37,12 +40,12 @@
end
end
end
describe "on update" do
before(:each) do
- savon.expects(:create_server).returns(:minimal)
- savon.expects(:get_server).returns(:after_create)
+ savon.expects(:create_server).with(message: {arg0: {ram: 256, cores: 1}}).returns(f :create_server, :minimal)
+ savon.expects(:get_server).with(message: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f'}).returns(f :get_server, :after_create)
@server = Server.create(:ram => 256, :cores => 1)
end
it "should require :ram to be a multiple of 256" do
expect { @server.update(:ram => 100, :cores => 1) }.to raise_error(ArgumentError, ":ram has to be at least 256MiB and a multiple of it")
@@ -72,35 +75,138 @@
end
end
it "should create a new server with minimal arguments" do
- savon.expects(:create_server).returns(:minimal)
- savon.expects(:get_server).returns(:after_create)
+ savon.expects(:create_server).with(message: {arg0: {ram: 256, cores: 1, server_name: 'Test Server', data_center_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}}).returns(f :create_server, :minimal)
+ savon.expects(:get_server).with(message: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f'}).returns(f :get_server, :after_create)
s = Server.create(:cores => 1, :ram => 256, :name => 'Test Server', :data_center_id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
s.cores.should == 1
s.ram.should == 256
s.name.should == 'Test Server'
s.data_center_id.should == "b3eebede-5c78-417c-b1bc-ff5de01a0602"
end
+
it "should reboot on request" do
- savon.expects(:get_server).returns(:after_create)
- savon.expects(:reboot_server).returns(:success)
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ savon.expects(:reboot_server).with(message: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f'}).returns(f :reboot_server, :success)
s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
s.reboot.should == true
end
+ it "should reset on request" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ savon.expects(:reset_server).with(message: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f'}).returns(f :reset_server, :success)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ s.reset.should == true
+ end
+
+ it "should start on request" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ savon.expects(:start_server).with(message: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f'}).returns(f :start_server, :success)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ s.start.should == true
+ end
+
+ it "should power off on request" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ savon.expects(:power_off_server).with(message: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f'}).returns(f :power_off_server, :success)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ s.power_off.should == true
+ end
+
+ it "should shutdown on request" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ savon.expects(:shutdown_server).with(message: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f'}).returns(f :shutdown_server, :success)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ s.shutdown.should == true
+ end
+
+ it "should check if its running" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ savon.expects(:get_server).with(message: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f'}).returns(f :get_server, :after_create)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ s.running?.should == false
+ end
+
+ it "should wait until it is running" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ s.should_receive(:running?).and_return(false,true)
+ s.wait_for_running
+ end
+
+ it "should return false on provisioned?" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ savon.expects(:get_server).with(message: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f'}).returns(f :get_server, :after_create)
+ s.provisioned?.should == false
+ end
+
+ it "should return true on provisioned?" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ savon.expects(:get_server).with(message: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f'}).returns(f :get_server, :connected_storage)
+ s.provisioned?.should == true
+ end
+
+ it "should wait for provisioning to finish" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ s.should_receive(:provisioned?).and_return(false,true)
+ s.wait_for_provisioning
+ end
+
+ it "should call Nic.create correctly via the create_nic helper" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ Nic.should_receive(:create).with(:server_id => "b7a5f3d1-324a-4490-aa8e-56cdec436e3f")
+ s.create_nic({})
+ end
+
it "should be deleted" do
- savon.expects(:get_server).returns(:after_create)
- savon.expects(:delete_server).returns(:success)
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ savon.expects(:delete_server).with(message: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f'}).returns(f :delete_server, :success)
s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
s.delete.should == true
end
+ it "should return all Servers" do
+ savon.expects(:get_all_data_centers).with(message: {}).returns(f :get_all_data_centers, :test_datacenter)
+ savon.expects(:get_data_center).with(message: {data_center_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_data_center, :two_servers_with_storage)
+ #DataCenter.should_receive(:all).and_return
+ servers = Server.all
+ servers.class.should == Array
+ servers.length.should == 2
+ servers.first.class.should == Server
+ end
+
+ it "should return all connected_storages via the storages helper" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :connected_storage)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ s.connected_storages.class.should == Array
+ s.connected_storages.length.should == 1
+ s.connected_storages.first.class.should == Storage
+ end
+
+ describe "nic helper methods" do
+ it "should return all public ip adresses" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :two_nics)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ s.public_ips.should == ["46.16.73.167"]
+ end
+
+ it "should return all private ip adresses" do
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :two_nics)
+ s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
+ s.private_ips.should == ["10.14.38.11"]
+ end
+ end
+
describe "updating" do
it "should update basic attributes correctly" do
- savon.expects(:get_server).returns(:after_create)
- savon.expects(:update_server).returns(:basic)
+ savon.expects(:get_server).with(message: {server_id: 'b3eebede-5c78-417c-b1bc-ff5de01a0602'}).returns(f :get_server, :after_create)
+ savon.expects(:update_server).with(message: {arg0: {server_id: 'b7a5f3d1-324a-4490-aa8e-56cdec436e3f', server_name: 'Power of two', os_type: 'WINDOWS', cores: 2, ram: 512}}).returns(f :update_server, :basic)
s = Server.find(:id => "b3eebede-5c78-417c-b1bc-ff5de01a0602")
s.update(:cores => 2, :ram => 512, :name => "Power of two", :os_type => 'WINDOWS')
s.cores.should == 2
s.ram.should == 512
s.name.should == "Power of two"
\ No newline at end of file