Fixing requests after namespaces. Fixed admin bug with access to project
This commit is contained in:
parent
e92b563acf
commit
0e1635a68a
|
@ -42,4 +42,14 @@ class Admin::ProjectsController < AdminController
|
||||||
|
|
||||||
redirect_to projects_url, notice: 'Project was successfully deleted.'
|
redirect_to projects_url, notice: 'Project was successfully deleted.'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def project
|
||||||
|
id = params[:project_id] || params[:id]
|
||||||
|
id = id.split("/") if id.include?("/")
|
||||||
|
|
||||||
|
@project ||= Project.find_by_path(id)
|
||||||
|
@project || render_404
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -88,7 +88,7 @@ module ApplicationHelper
|
||||||
[ "Users", users.map {|u| [u.human_name, u.id]} ]
|
[ "Users", users.map {|u| [u.human_name, u.id]} ]
|
||||||
]
|
]
|
||||||
|
|
||||||
if selected == :current_user
|
if selected == :current_user && current_user.namespace
|
||||||
selected = current_user.namespace.id
|
selected = current_user.namespace.id
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
class UserObserver < ActiveRecord::Observer
|
class UserObserver < ActiveRecord::Observer
|
||||||
def after_create(user)
|
def after_create(user)
|
||||||
user.create_namespace(code: user.username, name: user.name)
|
user.create_namespace(path: user.username, name: user.name)
|
||||||
|
|
||||||
log_info("User \"#{user.name}\" (#{user.email}) was created")
|
log_info("User \"#{user.name}\" (#{user.email}) was created")
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ class UserObserver < ActiveRecord::Observer
|
||||||
|
|
||||||
def after_save user
|
def after_save user
|
||||||
if user.username_changed? and user.namespace
|
if user.username_changed? and user.namespace
|
||||||
user.namespace.update_attributes(code: user.username)
|
user.namespace.update_attributes(path: user.username)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -38,10 +38,7 @@ module Gitlab
|
||||||
# Example Request
|
# Example Request
|
||||||
# POST /projects
|
# POST /projects
|
||||||
post do
|
post do
|
||||||
params[:code] ||= params[:name]
|
attrs = attributes_for_keys [:name,
|
||||||
params[:path] ||= params[:name]
|
|
||||||
attrs = attributes_for_keys [:path,
|
|
||||||
:name,
|
|
||||||
:description,
|
:description,
|
||||||
:default_branch,
|
:default_branch,
|
||||||
:issues_enabled,
|
:issues_enabled,
|
||||||
|
|
|
@ -13,7 +13,7 @@ describe CommitsController do
|
||||||
describe "GET show" do
|
describe "GET show" do
|
||||||
context "as atom feed" do
|
context "as atom feed" do
|
||||||
it "should render as atom" do
|
it "should render as atom" do
|
||||||
get :show, project_id: project.code, id: "master.atom"
|
get :show, project_id: project.path, id: "master.atom"
|
||||||
response.should be_success
|
response.should be_success
|
||||||
response.content_type.should == 'application/atom+xml'
|
response.content_type.should == 'application/atom+xml'
|
||||||
end
|
end
|
||||||
|
|
|
@ -12,7 +12,7 @@ FactoryGirl.define do
|
||||||
factory :user, aliases: [:author, :assignee, :owner] do
|
factory :user, aliases: [:author, :assignee, :owner] do
|
||||||
email { Faker::Internet.email }
|
email { Faker::Internet.email }
|
||||||
name
|
name
|
||||||
username 'john'
|
username { Faker::Internet.user_name }
|
||||||
password "123456"
|
password "123456"
|
||||||
password_confirmation { password }
|
password_confirmation { password }
|
||||||
|
|
||||||
|
|
|
@ -169,9 +169,7 @@ describe Notify do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'project access changed' do
|
describe 'project access changed' do
|
||||||
let(:project) { create(:project,
|
let(:project) { create(:project) }
|
||||||
path: "Fuu",
|
|
||||||
code: "Fuu") }
|
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:users_project) { create(:users_project,
|
let(:users_project) { create(:users_project,
|
||||||
project: project,
|
project: project,
|
||||||
|
|
|
@ -13,7 +13,12 @@ describe UserObserver do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when a new user is created' do
|
context 'when a new user is created' do
|
||||||
let(:user) { double(:user, id: 42, password: 'P@ssword!', name: 'John', email: 'u@mail.local', username: 'root') }
|
let(:user) { double(:user, id: 42,
|
||||||
|
password: 'P@ssword!',
|
||||||
|
name: 'John',
|
||||||
|
email: 'u@mail.local',
|
||||||
|
username: 'root',
|
||||||
|
create_namespace: true) }
|
||||||
let(:notification) { double :notification }
|
let(:notification) { double :notification }
|
||||||
|
|
||||||
it 'sends an email' do
|
it 'sends an email' do
|
||||||
|
|
|
@ -2,9 +2,7 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe UsersProjectObserver do
|
describe UsersProjectObserver do
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:project) { create(:project,
|
let(:project) { create(:project) }
|
||||||
code: "Fuu",
|
|
||||||
path: "Fuu" ) }
|
|
||||||
let(:users_project) { create(:users_project,
|
let(:users_project) { create(:users_project,
|
||||||
project: project,
|
project: project,
|
||||||
user: user )}
|
user: user )}
|
||||||
|
|
|
@ -2,9 +2,7 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe "Admin::Hooks" do
|
describe "Admin::Hooks" do
|
||||||
before do
|
before do
|
||||||
@project = create(:project,
|
@project = create(:project)
|
||||||
name: "LeGiT",
|
|
||||||
code: "LGT")
|
|
||||||
login_as :admin
|
login_as :admin
|
||||||
|
|
||||||
@system_hook = create(:system_hook)
|
@system_hook = create(:system_hook)
|
||||||
|
|
|
@ -39,8 +39,8 @@ describe "Admin::Projects" do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should have project edit page" do
|
it "should have project edit page" do
|
||||||
page.should have_content("Project name")
|
page.should have_content("Edit project")
|
||||||
page.should have_content("URL")
|
page.should have_button("Save Project")
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "Update project" do
|
describe "Update project" do
|
||||||
|
@ -60,39 +60,6 @@ describe "Admin::Projects" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "GET /admin/projects/new" do
|
|
||||||
before do
|
|
||||||
visit admin_projects_path
|
|
||||||
click_link "New Project"
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should be correct path" do
|
|
||||||
current_path.should == new_admin_project_path
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should have labels for new project" do
|
|
||||||
page.should have_content("Project name is")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "POST /admin/projects" do
|
|
||||||
before do
|
|
||||||
visit new_admin_project_path
|
|
||||||
fill_in 'project_name', with: 'NewProject'
|
|
||||||
expect { click_button "Create project" }.to change { Project.count }.by(1)
|
|
||||||
@project = Project.last
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should be correct path" do
|
|
||||||
current_path.should == admin_project_path(@project)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should show project" do
|
|
||||||
page.should have_content(@project.name)
|
|
||||||
page.should have_content(@project.path)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "Add new team member" do
|
describe "Add new team member" do
|
||||||
before do
|
before do
|
||||||
@new_user = create(:user)
|
@new_user = create(:user)
|
||||||
|
|
|
@ -23,6 +23,7 @@ describe "Admin::Users" do
|
||||||
@password = "123ABC"
|
@password = "123ABC"
|
||||||
visit new_admin_user_path
|
visit new_admin_user_path
|
||||||
fill_in "user_name", with: "Big Bang"
|
fill_in "user_name", with: "Big Bang"
|
||||||
|
fill_in "user_username", with: "bang"
|
||||||
fill_in "user_email", with: "bigbang@mail.com"
|
fill_in "user_email", with: "bigbang@mail.com"
|
||||||
fill_in "user_password", with: @password
|
fill_in "user_password", with: @password
|
||||||
fill_in "user_password_confirmation", with: @password
|
fill_in "user_password_confirmation", with: @password
|
||||||
|
|
|
@ -11,7 +11,7 @@ describe Gitlab::API do
|
||||||
|
|
||||||
describe "GET /projects/:id/milestones" do
|
describe "GET /projects/:id/milestones" do
|
||||||
it "should return project milestones" do
|
it "should return project milestones" do
|
||||||
get api("/projects/#{project.code}/milestones", user)
|
get api("/projects/#{project.path}/milestones", user)
|
||||||
response.status.should == 200
|
response.status.should == 200
|
||||||
json_response.should be_an Array
|
json_response.should be_an Array
|
||||||
json_response.first['title'].should == milestone.title
|
json_response.first['title'].should == milestone.title
|
||||||
|
@ -20,7 +20,7 @@ describe Gitlab::API do
|
||||||
|
|
||||||
describe "GET /projects/:id/milestones/:milestone_id" do
|
describe "GET /projects/:id/milestones/:milestone_id" do
|
||||||
it "should return a project milestone by id" do
|
it "should return a project milestone by id" do
|
||||||
get api("/projects/#{project.code}/milestones/#{milestone.id}", user)
|
get api("/projects/#{project.path}/milestones/#{milestone.id}", user)
|
||||||
response.status.should == 200
|
response.status.should == 200
|
||||||
json_response['title'].should == milestone.title
|
json_response['title'].should == milestone.title
|
||||||
end
|
end
|
||||||
|
@ -28,7 +28,7 @@ describe Gitlab::API do
|
||||||
|
|
||||||
describe "POST /projects/:id/milestones" do
|
describe "POST /projects/:id/milestones" do
|
||||||
it "should create a new project milestone" do
|
it "should create a new project milestone" do
|
||||||
post api("/projects/#{project.code}/milestones", user),
|
post api("/projects/#{project.path}/milestones", user),
|
||||||
title: 'new milestone'
|
title: 'new milestone'
|
||||||
response.status.should == 201
|
response.status.should == 201
|
||||||
json_response['title'].should == 'new milestone'
|
json_response['title'].should == 'new milestone'
|
||||||
|
@ -38,7 +38,7 @@ describe Gitlab::API do
|
||||||
|
|
||||||
describe "PUT /projects/:id/milestones/:milestone_id" do
|
describe "PUT /projects/:id/milestones/:milestone_id" do
|
||||||
it "should update a project milestone" do
|
it "should update a project milestone" do
|
||||||
put api("/projects/#{project.code}/milestones/#{milestone.id}", user),
|
put api("/projects/#{project.path}/milestones/#{milestone.id}", user),
|
||||||
title: 'updated title'
|
title: 'updated title'
|
||||||
response.status.should == 200
|
response.status.should == 200
|
||||||
json_response['title'].should == 'updated title'
|
json_response['title'].should == 'updated title'
|
||||||
|
|
|
@ -53,7 +53,6 @@ describe Gitlab::API do
|
||||||
|
|
||||||
it "should assign attributes to project" do
|
it "should assign attributes to project" do
|
||||||
project = attributes_for(:project, {
|
project = attributes_for(:project, {
|
||||||
path: project.name.parameterize,
|
|
||||||
description: Faker::Lorem.sentence,
|
description: Faker::Lorem.sentence,
|
||||||
default_branch: 'stable',
|
default_branch: 'stable',
|
||||||
issues_enabled: false,
|
issues_enabled: false,
|
||||||
|
@ -257,7 +256,7 @@ describe Gitlab::API do
|
||||||
describe "POST /projects/:id/snippets" do
|
describe "POST /projects/:id/snippets" do
|
||||||
it "should create a new project snippet" do
|
it "should create a new project snippet" do
|
||||||
post api("/projects/#{project.path}/snippets", user),
|
post api("/projects/#{project.path}/snippets", user),
|
||||||
title: 'api test', file_name: 'sample.rb', path: 'test'
|
title: 'api test', file_name: 'sample.rb', code: 'test'
|
||||||
response.status.should == 201
|
response.status.should == 201
|
||||||
json_response['title'].should == 'api test'
|
json_response['title'].should == 'api test'
|
||||||
end
|
end
|
||||||
|
@ -266,10 +265,10 @@ describe Gitlab::API do
|
||||||
describe "PUT /projects/:id/snippets/:shippet_id" do
|
describe "PUT /projects/:id/snippets/:shippet_id" do
|
||||||
it "should update an existing project snippet" do
|
it "should update an existing project snippet" do
|
||||||
put api("/projects/#{project.path}/snippets/#{snippet.id}", user),
|
put api("/projects/#{project.path}/snippets/#{snippet.id}", user),
|
||||||
path: 'updated path'
|
code: 'updated code'
|
||||||
response.status.should == 200
|
response.status.should == 200
|
||||||
json_response['title'].should == 'example'
|
json_response['title'].should == 'example'
|
||||||
snippet.reload.content.should == 'updated path'
|
snippet.reload.content.should == 'updated code'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue