From 672a8d54988dfafce4e3288a63f6cf67bf13c292 Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Sun, 11 May 2014 22:51:32 +0500 Subject: [PATCH] test Request class --- lib/gitlab/request.rb | 25 ++++++++------- spec/gitlab/objectified_hash_spec.rb | 5 +++ spec/gitlab/request_spec.rb | 48 ++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 12 deletions(-) create mode 100644 spec/gitlab/request_spec.rb diff --git a/lib/gitlab/request.rb b/lib/gitlab/request.rb index c0539a8c8..e87fec90d 100644 --- a/lib/gitlab/request.rb +++ b/lib/gitlab/request.rb @@ -71,17 +71,6 @@ def validate(response) response.parsed_response end - # Sets a private_token parameter for requests. - # @raise [Error::MissingCredentials] if private_token not set. - def set_private_token_param(options, path=nil) - # session doesn't require private_token param - return if path == '/session' - - raise Error::MissingCredentials.new("Please set a private_token for user") unless @private_token - private_token_param = {:private_token => @private_token} - options[:query] = options[:query] ? options[:query].merge(private_token_param) : private_token_param - end - # Sets a base_uri and default_params for requests. # @raise [Error::MissingCredentials] if endpoint not set. def set_request_defaults(endpoint, private_token, sudo=nil) @@ -89,11 +78,23 @@ def set_request_defaults(endpoint, private_token, sudo=nil) @private_token = private_token self.class.base_uri endpoint - self.class.default_params :sudo => sudo unless sudo.nil? + self.class.default_params :sudo => sudo + self.class.default_params.delete(:sudo) if sudo.nil? end private + # Sets a private_token parameter for requests. + # @raise [Error::MissingCredentials] if private_token not set. + def set_private_token_param(options, path=nil) + # session doesn't require private_token param + return if path == '/session' + + raise Error::MissingCredentials.new("Please set a private_token for user") unless @private_token + private_token_param = {:private_token => @private_token} + options[:query] = options[:query] ? options[:query].merge(private_token_param) : private_token_param + end + def error_message(response) "Server responded with code #{response.code}, message: #{response.parsed_response.message}. " \ "Request URI: #{response.request.base_uri}#{response.request.path}" diff --git a/spec/gitlab/objectified_hash_spec.rb b/spec/gitlab/objectified_hash_spec.rb index d9372a8d0..d5693d039 100644 --- a/spec/gitlab/objectified_hash_spec.rb +++ b/spec/gitlab/objectified_hash_spec.rb @@ -6,6 +6,11 @@ @oh = Gitlab::ObjectifiedHash.new @hash end + it "should objectify hash" do + @oh.a.should == @hash[:a] + @oh.b.should == @hash[:b] + end + describe "#to_hash" do it "should return an original hash" do @oh.to_hash.should == @hash diff --git a/spec/gitlab/request_spec.rb b/spec/gitlab/request_spec.rb new file mode 100644 index 000000000..7bad6ce82 --- /dev/null +++ b/spec/gitlab/request_spec.rb @@ -0,0 +1,48 @@ +require 'spec_helper' + +describe Gitlab::Request do + it { should respond_to :get } + it { should respond_to :post } + it { should respond_to :put } + it { should respond_to :delete } + + describe ".default_options" do + it "should have default values" do + default_options = Gitlab::Request.default_options + default_options.should be_a Hash + default_options[:parser].should be_a Proc + default_options[:format].should == :json + default_options[:headers].should == {'Accept' => 'application/json'} + default_options[:default_params].should be_nil + end + end + + describe ".parse" do + it "should return ObjectifiedHash" do + body = JSON.unparse({a: 1, b: 2}) + Gitlab::Request.parse(body).should be_an Gitlab::ObjectifiedHash + end + end + + describe "#set_request_defaults" do + context "when endpoint is not set" do + it "should raise Error::MissingCredentials" do + expect { + Gitlab::Request.new.set_request_defaults(nil, 1234000) + }.to raise_error(Gitlab::Error::MissingCredentials, 'Please set an endpoint to API') + end + end + + context "when endpoint is set" do + it "should set base_uri" do + Gitlab::Request.new.set_request_defaults('http://rabbit-hole.example.org', 1234000) + Gitlab::Request.base_uri.should == "http://rabbit-hole.example.org" + end + + it "should set default_params" do + Gitlab::Request.new.set_request_defaults('http://rabbit-hole.example.org', 1234000, 'sudoer') + Gitlab::Request.default_params.should == {:sudo => 'sudoer'} + end + end + end +end