require "spec_helper"
require "yaml"
describe Rallycat::Connection do
before do
@responder = lambda do |env|
# 'https://rally1.rallydev.com/slm/webservice/current/user'
[200, {}, ['bar']]
end
@rc_file_path = File.expand_path("~/.rallycatrc")
end
describe '#initialize' do
it "raises when no config file is present" do
# Force file to not exist.
YAML.stub(:load_file).with(@rc_file_path).and_raise(Errno::ENOENT)
lambda {
Artifice.activate_with @responder do
@connection = Rallycat::Connection.new
end
}.should raise_error Rallycat::InvalidConfigError,
"Your rallycat config file is missing or invalid. See 'rallycat help'."
end
it "raises when the credentials are invalid" do
responder = lambda do |env|
[401, {}, "Invalid, homes."]
end
YAML.stub(:load_file).with(@rc_file_path).and_return({
'username' => "",
'password' => ""
})
lambda {
Artifice.activate_with responder do
@connection = Rallycat::Connection.new
end
}.should raise_error Rallycat::InvalidCredentialsError,
"Your Rally credentials are invalid."
end
end
describe "#api" do
before do
responder = lambda do |env|
# 'https://rally1.rallydev.com/slm/webservice/current/user'
[200, {}, ['bar']]
end
YAML.stub(:load_file).with(@rc_file_path).and_return({
'username' => "bitches@rallydev.com",
'password' => "wesuckatsoftware"
})
end
it "creates a rally connection using user's rallycatrc config file" do
Artifice.activate_with @responder do
@connection = Rallycat::Connection.new
end
rally_connection = @connection.api
rally_connection.should be_kind_of(RallyRestAPI)
rally_connection.username.should eq("bitches@rallydev.com")
rally_connection.password.should eq("wesuckatsoftware")
end
it "creates a rally connection given the username and password provided" do
Artifice.activate_with @responder do
@connection = Rallycat::Connection.new("hoes@rallydev.com", "wesuckatpasswords")
end
rally_connection = @connection.api
rally_connection.should be_kind_of(RallyRestAPI)
rally_connection.username.should eq("hoes@rallydev.com")
rally_connection.password.should eq("wesuckatpasswords")
end
end
end