You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/lib/gitlab-cli/spec/gitlab/client/users_spec.rb

193 lines
5.2 KiB

require 'spec_helper'
describe Gitlab::Client do
describe ".users" do
before do
stub_get("/users", "users")
@users = Gitlab.users
end
it "should get the correct resource" do
expect(a_get("/users")).to have_been_made
end
it "should return an array of users" do
expect(@users).to be_an Array
expect(@users.first.email).to eq("john@example.com")
end
end
describe ".user" do
context "with user ID passed" do
before do
stub_get("/users/1", "user")
@user = Gitlab.user(1)
end
it "should get the correct resource" do
expect(a_get("/users/1")).to have_been_made
end
it "should return information about a user" do
expect(@user.email).to eq("john@example.com")
end
end
context "without user ID passed" do
before do
stub_get("/user", "user")
@user = Gitlab.user
end
it "should get the correct resource" do
expect(a_get("/user")).to have_been_made
end
it "should return information about an authorized user" do
expect(@user.email).to eq("john@example.com")
end
end
end
describe ".create_user" do
context "when successful request" do
before do
stub_post("/users", "user")
@user = Gitlab.create_user("email", "pass")
end
it "should get the correct resource" do
body = {:email => "email", :password => "pass", :name => "email"}
expect(a_post("/users").with(:body => body)).to have_been_made
end
it "should return information about a created user" do
expect(@user.email).to eq("john@example.com")
end
end
context "when bad request" do
it "should throw an exception" do
stub_post("/users", "error_already_exists", 409)
expect {
Gitlab.create_user("email", "pass")
}.to raise_error(Gitlab::Error::Conflict, "Server responded with code 409, message: 409 Already exists. Request URI: #{Gitlab.endpoint}/users")
end
end
end
describe ".edit_user" do
before do
@options = { :name => "Roberto" }
stub_put("/users/1", "user").with(:body => @options)
@user = Gitlab.edit_user(1, @options)
end
it "should get the correct resource" do
expect(a_put("/users/1").with(:body => @options)).to have_been_made
end
end
describe ".session" do
after do
Gitlab.endpoint = 'https://api.example.com'
Gitlab.private_token = 'secret'
end
before do
stub_request(:post, "#{Gitlab.endpoint}/session").
to_return(:body => load_fixture('session'), :status => 200)
@session = Gitlab.session("email", "pass")
end
context "when endpoint is not set" do
it "should raise Error::MissingCredentials" do
Gitlab.endpoint = nil
expect {
Gitlab.session("email", "pass")
}.to raise_error(Gitlab::Error::MissingCredentials, 'Please set an endpoint to API')
end
end
context "when private_token is not set" do
it "should not raise Error::MissingCredentials" do
Gitlab.private_token = nil
expect { Gitlab.session("email", "pass") }.to_not raise_error
end
end
context "when endpoint is set" do
it "should get the correct resource" do
expect(a_request(:post, "#{Gitlab.endpoint}/session")).to have_been_made
end
it "should return information about a created session" do
expect(@session.email).to eq("john@example.com")
expect(@session.private_token).to eq("qEsq1pt6HJPaNciie3MG")
end
end
end
describe ".ssh_keys" do
before do
stub_get("/user/keys", "keys")
@keys = Gitlab.ssh_keys
end
it "should get the correct resource" do
expect(a_get("/user/keys")).to have_been_made
end
it "should return an array of SSH keys" do
expect(@keys).to be_an Array
expect(@keys.first.title).to eq("narkoz@helium")
end
end
describe ".ssh_key" do
before do
stub_get("/user/keys/1", "key")
@key = Gitlab.ssh_key(1)
end
it "should get the correct resource" do
expect(a_get("/user/keys/1")).to have_been_made
end
it "should return information about an SSH key" do
expect(@key.title).to eq("narkoz@helium")
end
end
describe ".create_ssh_key" do
before do
stub_post("/user/keys", "key")
@key = Gitlab.create_ssh_key("title", "body")
end
it "should get the correct resource" do
body = {:title => "title", :key => "body"}
expect(a_post("/user/keys").with(:body => body)).to have_been_made
end
it "should return information about a created SSH key" do
expect(@key.title).to eq("narkoz@helium")
end
end
describe ".delete_ssh_key" do
before do
stub_delete("/user/keys/1", "key")
@key = Gitlab.delete_ssh_key(1)
end
it "should get the correct resource" do
expect(a_delete("/user/keys/1")).to have_been_made
end
it "should return information about a deleted SSH key" do
expect(@key.title).to eq("narkoz@helium")
end
end
end