diff options
Diffstat (limited to 'spec/requests/api/users_spec.rb')
-rw-r--r-- | spec/requests/api/users_spec.rb | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/spec/requests/api/users_spec.rb b/spec/requests/api/users_spec.rb index e25fe1341d5..5d7ef99c481 100644 --- a/spec/requests/api/users_spec.rb +++ b/spec/requests/api/users_spec.rb @@ -3,7 +3,8 @@ require 'spec_helper' describe Gitlab::API do include ApiHelpers - let(:user) { Factory :user } + let(:user) { Factory :user } + let(:key) { Factory :key, user: user } describe "GET /users" do context "when unauthenticated" do @@ -38,4 +39,64 @@ describe Gitlab::API do json_response['email'].should == user.email end end + + describe "GET /user/keys" do + context "when unauthenticated" do + it "should return authentication error" do + get api("/user/keys") + response.status.should == 401 + end + end + context "when authenticated" do + it "should return array of ssh keys" do + user.keys << key + user.save + get api("/user/keys", user) + response.status.should == 200 + json_response.should be_an Array + json_response.first["title"].should == key.title + end + end + end + + describe "GET /user/keys/:id" do + it "should returm single key" do + user.keys << key + user.save + get api("/user/keys/#{key.id}", user) + response.status.should == 200 + json_response["title"].should == key.title + end + it "should return 404 Not Found within invalid ID" do + get api("/user/keys/42", user) + response.status.should == 404 + end + end + + describe "POST /user/keys" do + it "should not create invalid ssh key" do + post api("/user/keys", user), { title: "invalid key" } + response.status.should == 404 + end + it "should create ssh key" do + key_attrs = Factory.attributes :key + expect { + post api("/user/keys", user), key_attrs + }.to change{ user.keys.count }.by(1) + end + end + + describe "DELETE /user/keys/:id" do + it "should delete existed key" do + user.keys << key + user.save + expect { + delete api("/user/keys/#{key.id}", user) + }.to change{user.keys.count}.by(-1) + end + it "should return 404 Not Found within invalid ID" do + delete api("/user/keys/42", user) + response.status.should == 404 + end + end end |