Commit 0e1635a6 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Fixing requests after namespaces. Fixed admin bug with access to project

parent e92b563a
...@@ -42,4 +42,14 @@ class Admin::ProjectsController < AdminController ...@@ -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 ...@@ -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
......
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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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' ...@@ -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' ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
......
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