Skip to content
Snippets Groups Projects
Commit 5f97f0be authored by Gabriel Mazetto's avatar Gabriel Mazetto
Browse files

More specs refactor and added missing spec for listing existing packages

parent 9df9b160
No related branches found
No related tags found
1 merge request!3Package Promotion
Pipeline #
Loading
Loading
@@ -7,6 +7,7 @@ class PackagecloudServer < WEBrick::HTTPServlet::AbstractServlet
GEM_VERSION = '{"major":"0","minor":"2","patch":"1"}'
REPO = '{"name": "test_repo","created_at": "2014-08-30T03:51:37.000Z","url": "https://packagecloud.io/joedamato/test_repo","last_push_human": "about 2 months ago","package_count_human": "4 packages","private": true,"fqname": "joedamato/test_repo"}'
REPOS = "[#{REPO}]"
PACKAGES = '[{"name":"gitlab-ce","distro_version":"ubuntu/xenial","created_at":"2017-01-21T23:50:27.000Z","version":"8.15.5","release":"ce.0","epoch": 0,"private":true,"type":"deb","filename":"gitlab-ce_8.15.5-ce.0_amd64.deb","uploader_name":"joedamato","indexed":true,"repository_html_url":"/joedamato/test_repo","package_url":"/api/v1/repos/joedamato/test_repo/package/deb/ubuntu/xenial/gitlab-ce/amd64/8.15.5-ce.0.json","downloads_detail_url":"/api/v1/repos/joedamato/test_repo/package/deb/ubuntu/xenial/gitlab-ce/amd64/8.15.5-ce.0/stats/downloads/detail.json","downloads_series_url": "/api/v1/repos/joedamato/test_repo/package/deb/ubuntu/xenial/gitlab-ce/amd64/8.15.5-ce.0/stats/downloads/series/daily.json","downloads_count_url": "/api/v1/repos/joedamato/test_repo/package/deb/ubuntu/xenial/gitlab-ce/amd64/8.15.5-ce.0/stats/downloads/count.json","package_html_url": "/joedamato/test_repo/packages/ubuntu/xenial/gitlab-ce_8.15.5-ce.0_amd64.deb","promote_url":"/api/v1/repos/joedamato/test_repo/ubuntu/xenial/gitlab-ce_8.15.5-ce.0_amd64.deb/promote.json"}]'
 
def json_response(request, response, body)
response.status = 200
Loading
Loading
@@ -67,7 +68,11 @@ class PackagecloudServer < WEBrick::HTTPServlet::AbstractServlet
when "/api/v1/repos/joedamato/test_repo.json"
json_response(request, response, REPO)
when "/api/v1/repos/joedamato/test_repo/packages.json"
created_response(request, response)
if request.request_method == "POST"
created_response(request, response)
elsif request.request_method == "GET"
json_response(request, response, PACKAGES)
end
when "/api/v1/repos/joedamato/test_repo/packages/contents.json"
plain_response(request, response, PACKAGE_CONTENTS)
when "/api/v1/gem_version.json"
Loading
Loading
Loading
Loading
@@ -96,7 +96,7 @@ describe Packagecloud do
expect(id).to be_nil
end
 
it "should raise for amiguous distro queries" do
it "should raise for ambiguous distro queries" do
expect {
@client.find_distribution_id("ubuntu")
}.to raise_error
Loading
Loading
@@ -105,91 +105,106 @@ describe Packagecloud do
end
 
context "repository level requests" do
it "POST debian package /api/v1/repos/joedamato/test_repo/packages.json" do
path = "spec/fixtures/libampsharp2.0-cil_2.0.4-1_all.deb"
size = File.size(path)
package = Package.new(:file => path)
describe "publishing a new package" do
it "POST debian package /api/v1/repos/joedamato/test_repo/packages.json" do
path = "spec/fixtures/libampsharp2.0-cil_2.0.4-1_all.deb"
size = File.size(path)
package = Package.new(:file => path)
 
result = @client.put_package("test_repo", package, 22)
expect(result.succeeded).to be_truthy
result = @client.put_package("test_repo", package, 22)
expect(result.succeeded).to be_truthy
 
#assert content type is set correctly
expect($request.content_type).to include("boundary=")
expect($request.content_type).to include("multipart/form-data")
#assert content type is set correctly
expect($request.content_type).to include("boundary=")
expect($request.content_type).to include("multipart/form-data")
 
# assert body is at least bigger than fixture file
expect($request.content_length > size).to be_truthy
end
# assert body is at least bigger than fixture file
expect($request.content_length > size).to be_truthy
end
 
it "POST debian package /api/v1/repos/joedamato/test_repo/packages.json twice" do
path = "spec/fixtures/libampsharp2.0-cil_2.0.4-1_all.deb"
package = Package.new(:file => path)
it "POST debian package /api/v1/repos/joedamato/test_repo/packages.json twice" do
path = "spec/fixtures/libampsharp2.0-cil_2.0.4-1_all.deb"
package = Package.new(:file => path)
 
@client.put_package("test_repo", package, 22)
result = @client.put_package("test_repo", package, 21)
@client.put_package("test_repo", package, 22)
result = @client.put_package("test_repo", package, 21)
 
expect(result.succeeded).to be_truthy
end
expect(result.succeeded).to be_truthy
end
 
it "POST gem package /api/v1/repos/joedamato/test_repo/packages.json" do
path = "spec/fixtures/chewbacca-1.0.0.gem"
size = File.size(path)
package = Package.new(:file => path)
it "POST gem package /api/v1/repos/joedamato/test_repo/packages.json" do
path = "spec/fixtures/chewbacca-1.0.0.gem"
size = File.size(path)
package = Package.new(:file => path)
 
result = @client.put_package("test_repo", package)
expect(result.succeeded).to be_truthy
result = @client.put_package("test_repo", package)
expect(result.succeeded).to be_truthy
 
#assert content type is set correctly
expect($request.content_type).to include("boundary=")
expect($request.content_type).to include("multipart/form-data")
#assert content type is set correctly
expect($request.content_type).to include("boundary=")
expect($request.content_type).to include("multipart/form-data")
 
# assert body is at least bigger than fixture file
expect($request.content_length > size).to be_truthy
end
# assert body is at least bigger than fixture file
expect($request.content_length > size).to be_truthy
end
 
it "POST debian package /api/v1/repos/joedamato/test_repo/packages.json with string distro_version_id" do
allow(@client).to receive(:find_distribution_id).and_return(3)
path = "spec/fixtures/libampsharp2.0-cil_2.0.4-1_all.deb"
size = File.size(path)
package = Package.new(:file => path)
it "POST debian package /api/v1/repos/joedamato/test_repo/packages.json with string distro_version_id" do
allow(@client).to receive(:find_distribution_id).and_return(3)
path = "spec/fixtures/libampsharp2.0-cil_2.0.4-1_all.deb"
size = File.size(path)
package = Package.new(:file => path)
 
result = @client.put_package("test_repo", package, "ubuntu/breezy")
result = @client.put_package("test_repo", package, "ubuntu/breezy")
 
expect(@client).to have_received(:find_distribution_id)
expect(result.succeeded).to be_truthy
expect(@client).to have_received(:find_distribution_id)
expect(result.succeeded).to be_truthy
 
#assert content type is set correctly
expect($request.content_type).to include("boundary=")
expect($request.content_type).to include("multipart/form-data")
#assert content type is set correctly
expect($request.content_type).to include("boundary=")
expect($request.content_type).to include("multipart/form-data")
 
# assert body is at least bigger than fixture file
expect($request.content_length > size).to be_truthy
end
# assert body is at least bigger than fixture file
expect($request.content_length > size).to be_truthy
end
 
it "POST source package /api/v1/repos/joedamato/test_repo/packages.json" do
dsc = File.dirname(__FILE__) + '/fixtures/natty_dsc/jake_1.0-7.dsc'
jake_orig = File.dirname(__FILE__) + '/fixtures/natty_dsc/jake_1.0.orig.tar.bz2'
jake_debian = File.dirname(__FILE__) + '/fixtures/natty_dsc/jake_1.0-7.debian.tar.gz'
it "POST source package /api/v1/repos/joedamato/test_repo/packages.json" do
dsc = File.dirname(__FILE__) + '/fixtures/natty_dsc/jake_1.0-7.dsc'
jake_orig = File.dirname(__FILE__) + '/fixtures/natty_dsc/jake_1.0.orig.tar.bz2'
jake_debian = File.dirname(__FILE__) + '/fixtures/natty_dsc/jake_1.0-7.debian.tar.gz'
 
source_packages = { "jake_1.0.orig.tar.bz2" => open(jake_orig),
"jake_1.0-7.debian.tar.gz" => open(jake_debian), }
source_packages = { "jake_1.0.orig.tar.bz2" => open(jake_orig),
"jake_1.0-7.debian.tar.gz" => open(jake_debian), }
 
dsc_size = File.size(dsc)
jake_orig_size = File.size(jake_orig)
jake_debian_size = File.size(jake_debian)
combined_size = dsc_size + jake_orig_size + jake_debian_size
dsc_size = File.size(dsc)
jake_orig_size = File.size(jake_orig)
jake_debian_size = File.size(jake_debian)
combined_size = dsc_size + jake_orig_size + jake_debian_size
 
package = Package.new(:file => dsc, :source_files => source_packages)
package = Package.new(:file => dsc, :source_files => source_packages)
 
result = @client.put_package("test_repo", package, 22)
expect(result.succeeded).to be_truthy
result = @client.put_package("test_repo", package, 22)
expect(result.succeeded).to be_truthy
 
#assert content type is set correctly
expect($request.content_type).to include("boundary=")
expect($request.content_type).to include("multipart/form-data")
#assert content type is set correctly
expect($request.content_type).to include("boundary=")
expect($request.content_type).to include("multipart/form-data")
 
# assert body is at least bigger than fixture file
expect($request.content_length > combined_size).to be_truthy
# assert body is at least bigger than fixture file
expect($request.content_length > combined_size).to be_truthy
end
end
describe "listing existing packages in a repository" do
it "returns a json list of packages" do
result = @client.list_packages("test_repo")
expect(result.succeeded).to be_truthy
expect(result.response).to be_a(Array)
package = result.response.first
expect(package["name"]).to eq("gitlab-ce")
expect(package["distro_version"]).to eq("ubuntu/xenial")
expect(package["filename"]).to eq("gitlab-ce_8.15.5-ce.0_amd64.deb")
end
end
 
it "POST /api/v1/repos/joedamato/test_repo/packages/contents.json" do
Loading
Loading
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