Commit 4e516433 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

specs for api/internal

parent 2c5e4955
...@@ -5,6 +5,12 @@ module Gitlab ...@@ -5,6 +5,12 @@ module Gitlab
# #
# Check if ssh key has access to project code # Check if ssh key has access to project code
# #
# Params:
# key_id - SSH Key id
# project - project path with namespace
# action - git action (git-upload-pack or git-receive-pack)
# ref - branch name
#
get "/allowed" do get "/allowed" do
key = Key.find(params[:key_id]) key = Key.find(params[:key_id])
project = Project.find_with_namespace(params[:project]) project = Project.find_with_namespace(params[:project])
......
require 'spec_helper'
describe Gitlab::API do
include ApiHelpers
let(:user) { create(:user) }
let(:key) { create(:key, user: user) }
let(:project) { create(:project) }
describe "GET /internal/check", no_db: true do
it do
get api("/internal/check")
response.status.should == 200
json_response['api_version'].should == Gitlab::API.version
end
end
describe "GET /internal/discover" do
it do
get(api("/internal/discover"), key_id: key.id)
response.status.should == 200
json_response['email'].should == user.email
end
end
describe "GET /internal/allowed" do
context "access granted" do
before do
project.team << [user, :developer]
end
context "git pull" do
it do
get(
api("/internal/allowed"),
ref: 'master',
key_id: key.id,
project: project.path_with_namespace,
action: 'git-upload-pack'
)
response.status.should == 200
response.body.should == 'true'
end
end
context "git push" do
it do
get(
api("/internal/allowed"),
ref: 'master',
key_id: key.id,
project: project.path_with_namespace,
action: 'git-receive-pack'
)
response.status.should == 200
response.body.should == 'true'
end
end
end
context "access denied" do
before do
project.team << [user, :guest]
end
context "git pull" do
it do
get(
api("/internal/allowed"),
ref: 'master',
key_id: key.id,
project: project.path_with_namespace,
action: 'git-upload-pack'
)
response.status.should == 200
response.body.should == 'false'
end
end
context "git push" do
it do
get(
api("/internal/allowed"),
ref: 'master',
key_id: key.id,
project: project.path_with_namespace,
action: 'git-receive-pack'
)
response.status.should == 200
response.body.should == 'false'
end
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment