Fix CI tests

This commit is contained in:
Kamil Trzcinski 2016-05-12 13:03:04 -05:00
parent 4d84ba43d8
commit 5c2f2fd289
13 changed files with 31 additions and 20 deletions

View file

@ -1,7 +1,6 @@
class Projects::ContainerRegistryController < Projects::ApplicationController
before_action :authorize_read_container_registry!
before_action :authorize_update_container_registry!, only: [:destroy]
before_action :tag, except: [:index]
layout 'project'
def index

View file

@ -34,7 +34,7 @@ module GitlabRoutingHelper
end
def project_container_registry_path(project, *args)
namespace_project_container_registry_index_url(project.namespace, project, *args)
namespace_project_container_registry_index_path(project.namespace, project, *args)
end
def activity_project_path(project, *args)

View file

@ -291,7 +291,7 @@ class Ability
rules += named_abilities('build')
end
unless project.container_registry_enabled
unless project.container_registry_enabled && Gitlab.config.registry.enabled
rules += named_abilities('container_registry')
end

View file

@ -128,7 +128,7 @@ class Namespace < ActiveRecord::Base
gitlab_shell.add_namespace(path_was)
if any_project_has_container_registry_tags?
raise Exception.new('namespace cannot be moved, because at least one project has tags in container registry')
raise Exception.new('Namespace cannot be moved, because at least one project has tags in container registry')
end
if gitlab_shell.mv_namespace(path_was, path)

View file

@ -377,7 +377,7 @@ class Project < ActiveRecord::Base
def container_registry_repository
@container_registry_repository ||= begin
token = Jwt::ContainerRegistryAuthenticationService.full_access_token(path_with_namespace)
token = JWT::ContainerRegistryAuthenticationService.full_access_token(path_with_namespace)
url = Gitlab.config.registry.api_url
host_port = Gitlab.config.registry.host_port
registry = ContainerRegistry::Registry.new(url, token: token, path: host_port)
@ -814,7 +814,7 @@ class Project < ActiveRecord::Base
if has_container_registry_tags?
# we currently doesn't support renaming repository if it contains tags in container registry
raise Exception.new('repository cannot be renamed, due to tags in container registry')
raise Exception.new('Project cannot be renamed, because tags are present in its container registry')
end
if gitlab_shell.mv_repository(old_path_with_namespace, new_path_with_namespace)

View file

@ -14,7 +14,7 @@ module JWT
def self.full_access_token(*names)
registry = Gitlab.config.registry
token = ::Jwt::RSAToken.new(registry.key)
token = ::JWT::RSAToken.new(registry.key)
token.issuer = registry.issuer
token.audience = AUDIENCE
token[:access] = names.map do |name|

View file

@ -64,7 +64,9 @@ module Projects
end
def remove_registry_tags
project.image_registry.delete_tags
return unless Gitlab.config.registry.enabled
project.container_registry_repository.delete_tags
end
def raise_error(message)

View file

@ -36,7 +36,7 @@ module Projects
if project.has_container_registry_tags?
# we currently doesn't support renaming repository if it contains tags in container registry
raise TransferError.new('Repository cannot be renamed, due to tags in container registry')
raise TransferError.new('Project cannot be transferred, because tags are present in its container registry')
end
project.expire_caches_before_rename(old_path)

View file

@ -14,7 +14,8 @@
= pluralize(tag.layers.size, "layer")
%td
= time_ago_in_words(tag.created_at)
%td.content
.controls.hidden-xs.pull-right
= link_to namespace_project_container_registry_path(@project.namespace, @project, tag.name), class: 'btn btn-remove has-tooltip', title: "Remove", data: { confirm: "Are you sure?" }, method: :delete do
= icon("trash cred")
- if can?(current_user, :update_container_registry, @project)
%td.content
.controls.hidden-xs.pull-right
= link_to namespace_project_container_registry_path(@project.namespace, @project, tag.name), class: 'btn btn-remove has-tooltip', title: "Remove", data: { confirm: "Are you sure?" }, method: :delete do
= icon("trash cred")

View file

@ -18,7 +18,7 @@
%code
docker login #{Gitlab.config.registry.host_port}
%br
Then you are free to create and upload a container images with build and push commands:
Then you are free to create and upload a container image with build and push commands:
%pre
docker build -t #{escape_once(@project.container_registry_repository_url)} .
%br
@ -33,7 +33,8 @@
%th Image ID
%th Size
%th Created
%th
- if can?(current_user, :update_container_registry, @project)
%th
- @tags.each do |tag|
= render 'tag', tag: tag

View file

@ -55,7 +55,7 @@ module ContainerRegistry
conn.request :json
conn.headers['Accept'] = MANIFEST_VERSION
conn.response :json, :content_type => /\bjson$/
conn.response :json, content_type: /\bjson$/
if options[:user] && options[:password]
conn.request(:basic_auth, options[:user].to_s, options[:password].to_s)

View file

@ -30,19 +30,21 @@ module ContainerRegistry
def tags
return @tags if defined?(@tags)
return [] unless manifest && manifest['tags']
@tags = manifest['tags'].map do |tag|
ContainerRegistry::Tag.new(self, tag)
end
@tags ||= []
end
def delete_tags
return unless tags
tags.each(:delete)
end
def mount_blob(blob)
return unless blob
client.repository_mount_blob(name, blob.digest, blob.repository.name)
end

View file

@ -5,14 +5,18 @@ describe "Container Registry" do
let(:repository) { project.container_registry_repository }
let(:tag_name) { 'latest' }
let(:tags) { [tag_name] }
before do
let(:registry_settings) do
{
enabled: true
}
end
before do
login_as(:user)
project.team << [@user, :developer]
stub_container_registry(*tags)
allow(Gitlab.config.registry).to receive_messages(registry_settings)
allow(JWT::ContainerRegistryAuthenticationService).to receive(:full_access_token).and_return('token')
end
describe 'GET /:project/container_registry' do
@ -22,6 +26,7 @@ describe "Container Registry" do
context 'when no tags' do
let(:tags) { [] }
it { expect(page).to have_content('No images in Container Registry for this project') }
end
@ -37,7 +42,8 @@ describe "Container Registry" do
it do
expect_any_instance_of(::ContainerRegistry::Tag).to receive(:delete).and_return(true)
click_on 'Remove'
end
end
end
end