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.
		
		
		
		
		
			
		
			
				
					
					
						
							193 lines
						
					
					
						
							5.2 KiB
						
					
					
				
			
		
		
	
	
							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
 |