require "spec_helper" module Lumberg describe Cpanel::Base do before(:each) do @login = { host: @whm_host, hash: @whm_hash } @server = Whm::Server.new(@login.dup) @base = Cpanel::Base.new(server: @server, api_username: "foodawg") end describe "::api_module" do it "returns the class name (without module prefix)" do described_class::api_module.should == "Base" end describe "AddonDomain subclass" do class Lumberg::Cpanel::AddonDomain < Lumberg::Cpanel::Base; end Lumberg::Cpanel::AddonDomain::api_module.should == "AddonDomain" end end describe "#initialize" do it "assigns api_username param to @api_username" do @base.api_username.should == "foodawg" end it "allows a server instance to be passed in" do @base.server.should be_a(Whm::Server) end it "allows a server hash to be passed in" do base = Cpanel::Base.new(server: @login, api_username: "foodawg") base.server.should be_a(Whm::Server) end end describe "#perform_request" do let(:valid_options) {{ api_username: "foodawg", api_module: "SomeModule", api_function: "some_function" }} context "requires api_username" do it "loads saved api_username if api_username not specified" do @base.server.should_receive(:perform_request).with( anything, hash_including( cpanel_jsonapi_module: "SomeModule", cpanel_jsonapi_func: "some_function", cpanel_jsonapi_user: "foodawg" ) ) @base.perform_request(api_module: "SomeModule", api_function: "some_function") end end context "optional api_version is specified" do it "performs the request with specified API version" do @base.server.should_receive(:perform_request).with( anything, hash_including(cpanel_jsonapi_apiversion: 1234) ) @base.perform_request(valid_options.merge(api_version: 1234)) end end context "optional api_version is not specified" do it "sets API version to 2" do @base.server.should_receive(:perform_request).with( anything, hash_including(cpanel_jsonapi_apiversion: 2) ) @base.perform_request(valid_options) end end context "optional key is specified" do it "performs the request with specified key" do @base.server.should_receive(:perform_request).with( anything, hash_including(response_key: "some_key") ) @base.perform_request(valid_options.merge(response_key: "some_key")) end end context "optional key is not specified" do it "sets key to \"cpanelresult\"" do @base.server.should_receive(:perform_request).with( anything, hash_including(response_key: "cpanelresult") ) @base.perform_request(valid_options) end end it "performs the request with \"cpanel\" function" do @base.server.should_receive(:perform_request).with("cpanel", anything) @base.perform_request(valid_options) end it "accepts additional call parameters" do @base.server.should_receive(:perform_request).with( anything, hash_including(awesome: "sauce") ) @base.perform_request(valid_options.merge({ awesome: "sauce" })) end context "@api_username is not nil" do it "uses @api_username as default for api_username param" do @base.api_username = "foodawg" @base.server.should_receive(:perform_request).with( anything, hash_including(cpanel_jsonapi_user: "foodawg") ) options = valid_options options.delete(:api_username) @base.perform_request(options) end end end end end