Skip to content
Snippets Groups Projects
Commit 34a6f83d authored by Jacob Vosmaer (GitLab)'s avatar Jacob Vosmaer (GitLab)
Browse files

Fix API

parent 771f14b9
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -99,7 +99,7 @@ module API
 
begin
RepositoryArchiveCacheWorker.perform_async
header *Gitlab::Workhorse.send_git_archive(@project, params[:ref], params[:format])
header *Gitlab::Workhorse.send_git_archive(user_project, params[:sha], params[:format])
rescue
not_found!('File')
end
Loading
Loading
Loading
Loading
@@ -3,9 +3,9 @@ require 'json'
 
module Gitlab
class Workhorse
class << self
SEND_DATA_HEADER = 'Gitlab-Workhorse-Send-Data'
SEND_DATA_HEADER = 'Gitlab-Workhorse-Send-Data'
 
class << self
def send_git_blob(repository, blob)
params = {
'RepoPath' => repository.path_to_repo,
Loading
Loading
Loading
Loading
@@ -4,6 +4,7 @@ require 'mime/types'
describe API::API, api: true do
include ApiHelpers
include RepoHelpers
include WorkhorseHelpers
 
let(:user) { create(:user) }
let(:user2) { create(:user) }
Loading
Loading
@@ -91,21 +92,27 @@ describe API::API, api: true do
get api("/projects/#{project.id}/repository/archive", user)
repo_name = project.repository.name.gsub("\.git", "")
expect(response.status).to eq(200)
expect(json_response['ArchivePath']).to match(/#{repo_name}\-[^\.]+\.tar.gz/)
type, params = workhorse_send_data
expect(type).to eq('git-archive')
expect(params['ArchivePath']).to match(/#{repo_name}\-[^\.]+\.tar.gz/)
end
 
it "should get the archive.zip" do
get api("/projects/#{project.id}/repository/archive.zip", user)
repo_name = project.repository.name.gsub("\.git", "")
expect(response.status).to eq(200)
expect(json_response['ArchivePath']).to match(/#{repo_name}\-[^\.]+\.zip/)
type, params = workhorse_send_data
expect(type).to eq('git-archive')
expect(params['ArchivePath']).to match(/#{repo_name}\-[^\.]+\.zip/)
end
 
it "should get the archive.tar.bz2" do
get api("/projects/#{project.id}/repository/archive.tar.bz2", user)
repo_name = project.repository.name.gsub("\.git", "")
expect(response.status).to eq(200)
expect(json_response['ArchivePath']).to match(/#{repo_name}\-[^\.]+\.tar.bz2/)
type, params = workhorse_send_data
expect(type).to eq('git-archive')
expect(params['ArchivePath']).to match(/#{repo_name}\-[^\.]+\.tar.bz2/)
end
 
it "should return 404 for invalid sha" do
Loading
Loading
module WorkhorseHelpers
extend self
def workhorse_send_data
@_workhorse_send_data ||= begin
header = response.headers[Gitlab::Workhorse::SEND_DATA_HEADER]
split_header = header.split(':')
type = split_header.shift
header = split_header.join(':')
[
type,
JSON.parse(Base64.urlsafe_decode64(header)),
]
end
end
end
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment