summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/controllers/commit_controller_spec.rb74
-rw-r--r--spec/controllers/commits_controller_spec.rb2
-rw-r--r--spec/controllers/merge_requests_controller_spec.rb85
-rw-r--r--spec/factories.rb38
-rw-r--r--spec/helpers/gitlab_markdown_helper_spec.rb6
-rw-r--r--spec/lib/project_mover_spec.rb65
-rw-r--r--spec/mailers/notify_spec.rb4
-rw-r--r--spec/models/event_spec.rb6
-rw-r--r--spec/models/group_spec.rb27
-rw-r--r--spec/models/issue_spec.rb10
-rw-r--r--spec/models/key_spec.rb6
-rw-r--r--spec/models/merge_request_spec.rb22
-rw-r--r--spec/models/milestone_spec.rb12
-rw-r--r--spec/models/namespace_spec.rb78
-rw-r--r--spec/models/note_spec.rb6
-rw-r--r--spec/models/project_hooks_spec.rb14
-rw-r--r--spec/models/project_spec.rb28
-rw-r--r--spec/models/protected_branch_spec.rb10
-rw-r--r--spec/models/service_hook_spec.rb20
-rw-r--r--spec/models/service_spec.rb27
-rw-r--r--spec/models/snippet_spec.rb10
-rw-r--r--spec/models/system_hook_spec.rb9
-rw-r--r--spec/models/user_spec.rb34
-rw-r--r--spec/models/users_project_spec.rb12
-rw-r--r--spec/models/web_hook_spec.rb9
-rw-r--r--spec/models/wiki_spec.rb6
-rw-r--r--spec/observers/user_observer_spec.rb7
-rw-r--r--spec/observers/users_project_observer_spec.rb4
-rw-r--r--spec/requests/admin/admin_hooks_spec.rb4
-rw-r--r--spec/requests/admin/admin_projects_spec.rb50
-rw-r--r--spec/requests/admin/admin_users_spec.rb1
-rw-r--r--spec/requests/api/issues_spec.rb10
-rw-r--r--spec/requests/api/merge_requests_spec.rb12
-rw-r--r--spec/requests/api/milestones_spec.rb8
-rw-r--r--spec/requests/api/notes_spec.rb98
-rw-r--r--spec/requests/api/projects_spec.rb56
-rw-r--r--spec/requests/gitlab_flavored_markdown_spec.rb12
-rw-r--r--spec/requests/projects_spec.rb11
-rw-r--r--spec/routing/admin_routing_spec.rb8
-rw-r--r--spec/routing/project_routing_spec.rb11
-rw-r--r--spec/spec_helper.rb5
-rw-r--r--spec/workers/post_receive_spec.rb14
42 files changed, 678 insertions, 253 deletions
diff --git a/spec/controllers/commit_controller_spec.rb b/spec/controllers/commit_controller_spec.rb
new file mode 100644
index 00000000000..5aef4c676ee
--- /dev/null
+++ b/spec/controllers/commit_controller_spec.rb
@@ -0,0 +1,74 @@
+require 'spec_helper'
+
+describe CommitController do
+ let(:project) { create(:project) }
+ let(:user) { create(:user) }
+ let(:commit) { project.last_commit_for("master") }
+
+ before do
+ sign_in(user)
+
+ project.add_access(user, :read, :admin)
+ end
+
+ describe "#show" do
+ shared_examples "export as" do |format|
+ it "should generally work" do
+ get :show, project_id: project.code, id: commit.id, format: format
+
+ expect(response).to be_success
+ end
+
+ it "should generate it" do
+ Commit.any_instance.should_receive(:"to_#{format}")
+
+ get :show, project_id: project.code, id: commit.id, format: format
+ end
+
+ it "should render it" do
+ get :show, project_id: project.code, id: commit.id, format: format
+
+ expect(response.body).to eq(commit.send(:"to_#{format}"))
+ end
+
+ it "should not escape Html" do
+ Commit.any_instance.stub(:"to_#{format}").and_return('HTML entities &<>" ')
+
+ get :show, project_id: project.code, id: commit.id, format: format
+
+ expect(response.body).to_not include('&amp;')
+ expect(response.body).to_not include('&gt;')
+ expect(response.body).to_not include('&lt;')
+ expect(response.body).to_not include('&quot;')
+ end
+ end
+
+ describe "as diff" do
+ include_examples "export as", :diff
+ let(:format) { :diff }
+
+ it "should really only be a git diff" do
+ get :show, project_id: project.code, id: commit.id, format: format
+
+ expect(response.body).to start_with("diff --git")
+ end
+ end
+
+ describe "as patch" do
+ include_examples "export as", :patch
+ let(:format) { :patch }
+
+ it "should really be a git email patch" do
+ get :show, project_id: project.code, id: commit.id, format: format
+
+ expect(response.body).to start_with("From #{commit.id}")
+ end
+
+ it "should contain a git diff" do
+ get :show, project_id: project.code, id: commit.id, format: format
+
+ expect(response.body).to match(/^diff --git/)
+ end
+ end
+ end
+end
diff --git a/spec/controllers/commits_controller_spec.rb b/spec/controllers/commits_controller_spec.rb
index bf335634da9..da33fd8a2b5 100644
--- a/spec/controllers/commits_controller_spec.rb
+++ b/spec/controllers/commits_controller_spec.rb
@@ -13,7 +13,7 @@ describe CommitsController do
describe "GET show" do
context "as atom feed" 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.content_type.should == 'application/atom+xml'
end
diff --git a/spec/controllers/merge_requests_controller_spec.rb b/spec/controllers/merge_requests_controller_spec.rb
new file mode 100644
index 00000000000..7aebe06cf0c
--- /dev/null
+++ b/spec/controllers/merge_requests_controller_spec.rb
@@ -0,0 +1,85 @@
+require 'spec_helper'
+
+describe MergeRequestsController do
+ let(:project) { create(:project) }
+ let(:user) { create(:user) }
+ let(:merge_request) { create(:merge_request_with_diffs, project: project) }
+
+ before do
+ sign_in(user)
+ project.add_access(user, :read, :admin)
+ MergeRequestsController.any_instance.stub(validates_merge_request: true)
+ end
+
+ describe "#show" do
+ shared_examples "export as" do |format|
+ it "should generally work" do
+ get :show, project_id: project.code, id: merge_request.id, format: format
+
+ expect(response).to be_success
+ end
+
+ it "should generate it" do
+ MergeRequest.any_instance.should_receive(:"to_#{format}")
+
+ get :show, project_id: project.code, id: merge_request.id, format: format
+ end
+
+ it "should render it" do
+ get :show, project_id: project.code, id: merge_request.id, format: format
+
+ expect(response.body).to eq(merge_request.send(:"to_#{format}"))
+ end
+
+ it "should not escape Html" do
+ MergeRequest.any_instance.stub(:"to_#{format}").and_return('HTML entities &<>" ')
+
+ get :show, project_id: project.code, id: merge_request.id, format: format
+
+ expect(response.body).to_not include('&amp;')
+ expect(response.body).to_not include('&gt;')
+ expect(response.body).to_not include('&lt;')
+ expect(response.body).to_not include('&quot;')
+ end
+ end
+
+ describe "as diff" do
+ include_examples "export as", :diff
+ let(:format) { :diff }
+
+ it "should really only be a git diff" do
+ get :show, project_id: project.code, id: merge_request.id, format: format
+
+ expect(response.body).to start_with("diff --git")
+ end
+ end
+
+ describe "as patch" do
+ include_examples "export as", :patch
+ let(:format) { :patch }
+
+ it "should really be a git email patch with commit" do
+ get :show, project_id: project.code, id: merge_request.id, format: format
+
+ expect(response.body[0..100]).to start_with("From #{merge_request.commits.last.id}")
+ end
+
+ # TODO: fix or remove
+ #it "should contain as many patches as there are commits" do
+ #get :show, project_id: project.code, id: merge_request.id, format: format
+
+ #patch_count = merge_request.commits.count
+ #merge_request.commits.each_with_index do |commit, patch_num|
+ #expect(response.body).to match(/^From #{commit.id}/)
+ #expect(response.body).to match(/^Subject: \[PATCH #{patch_num}\/#{patch_count}\]/)
+ #end
+ #end
+
+ it "should contain git diffs" do
+ get :show, project_id: project.code, id: merge_request.id, format: format
+
+ expect(response.body).to match(/^diff --git/)
+ end
+ end
+ end
+end
diff --git a/spec/factories.rb b/spec/factories.rb
index 7b2a2efab23..a26a77dd860 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -12,6 +12,7 @@ FactoryGirl.define do
factory :user, aliases: [:author, :assignee, :owner] do
email { Faker::Internet.email }
name
+ username { Faker::Internet.user_name }
password "123456"
password_confirmation { password }
@@ -25,13 +26,19 @@ FactoryGirl.define do
factory :project do
sequence(:name) { |n| "project#{n}" }
path { name.downcase.gsub(/\s/, '_') }
- code { name.downcase.gsub(/\s/, '_') }
owner
end
factory :group do
sequence(:name) { |n| "group#{n}" }
- code { name.downcase.gsub(/\s/, '_') }
+ path { name.downcase.gsub(/\s/, '_') }
+ owner
+ type 'Group'
+ end
+
+ factory :namespace do
+ sequence(:name) { |n| "group#{n}" }
+ path { name.downcase.gsub(/\s/, '_') }
owner
end
@@ -63,7 +70,22 @@ FactoryGirl.define do
closed true
end
+ # pick 3 commits "at random" (from bcf03b5d~3 to bcf03b5d)
+ trait :with_diffs do
+ target_branch "bcf03b5d~3"
+ source_branch "bcf03b5d"
+ st_commits do
+ [Commit.new(project.repo.commit('bcf03b5d')),
+ Commit.new(project.repo.commit('bcf03b5d~1')),
+ Commit.new(project.repo.commit('bcf03b5d~2'))]
+ end
+ st_diffs do
+ project.repo.diff("bcf03b5d~3", "bcf03b5d")
+ end
+ end
+
factory :closed_merge_request, traits: [:closed]
+ factory :merge_request_with_diffs, traits: [:with_diffs]
end
factory :note do
@@ -132,4 +154,16 @@ FactoryGirl.define do
name
project
end
+
+ factory :service do
+ type ""
+ title "GitLab CI"
+ token "x56olispAND34ng"
+ project
+ end
+
+ factory :service_hook do
+ url
+ service
+ end
end
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index ec830e40ecd..05e4527b278 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -329,9 +329,11 @@ describe GitlabMarkdownHelper do
end
it "should leave code blocks untouched" do
- markdown("\n some code from $#{snippet.id}\n here too\n").should == "<div class=\"highlight\"><pre><span class=\"n\">some</span> <span class=\"n\">code</span> <span class=\"n\">from</span> $#{snippet.id}\n<span class=\"n\">here</span> <span class=\"n\">too</span>\n</pre></div>"
+ helper.stub(:user_color_scheme_class).and_return(:white)
- markdown("\n```\nsome code from $#{snippet.id}\nhere too\n```\n").should == "<div class=\"highlight\"><pre><span class=\"n\">some</span> <span class=\"n\">code</span> <span class=\"n\">from</span> $#{snippet.id}\n<span class=\"n\">here</span> <span class=\"n\">too</span>\n</pre></div>"
+ helper.markdown("\n some code from $#{snippet.id}\n here too\n").should == "<div class=\"white\"><div class=\"highlight\"><pre><span class=\"n\">some</span> <span class=\"n\">code</span> <span class=\"n\">from</span> $#{snippet.id}\n<span class=\"n\">here</span> <span class=\"n\">too</span>\n</pre></div></div>"
+
+ helper.markdown("\n```\nsome code from $#{snippet.id}\nhere too\n```\n").should == "<div class=\"white\"><div class=\"highlight\"><pre><span class=\"n\">some</span> <span class=\"n\">code</span> <span class=\"n\">from</span> $#{snippet.id}\n<span class=\"n\">here</span> <span class=\"n\">too</span>\n</pre></div></div>"
end
it "should leave inline code untouched" do
diff --git a/spec/lib/project_mover_spec.rb b/spec/lib/project_mover_spec.rb
new file mode 100644
index 00000000000..af24635d82b
--- /dev/null
+++ b/spec/lib/project_mover_spec.rb
@@ -0,0 +1,65 @@
+require 'spec_helper'
+
+describe Gitlab::ProjectMover do
+ let(:base_path) { Rails.root.join('tmp', 'rspec-sandbox') }
+
+ before do
+ FileUtils.rm_rf base_path if File.exists? base_path
+
+ Gitlab.config.stub(git_base_path: base_path)
+
+ @project = create(:project)
+ end
+
+ after do
+ FileUtils.rm_rf base_path
+ end
+
+ it "should move project to subdir" do
+ mk_dir base_path, '', @project.path
+ mover = Gitlab::ProjectMover.new(@project, '', 'opensource')
+
+ mover.execute.should be_true
+ moved?('opensource', @project.path).should be_true
+ end
+
+ it "should move project from one subdir to another" do
+ mk_dir base_path, 'vsizov', @project.path
+ mover = Gitlab::ProjectMover.new(@project, 'vsizov', 'randx')
+
+ mover.execute.should be_true
+ moved?('randx', @project.path).should be_true
+ end
+
+ it "should move project from subdir to base" do
+ mk_dir base_path, 'vsizov', @project.path
+ mover = Gitlab::ProjectMover.new(@project, 'vsizov', '')
+
+ mover.execute.should be_true
+ moved?('', @project.path).should be_true
+ end
+
+ it "should raise if destination exists" do
+ mk_dir base_path, '', @project.path
+ mk_dir base_path, 'vsizov', @project.path
+ mover = Gitlab::ProjectMover.new(@project, 'vsizov', '')
+
+ expect { mover.execute }.to raise_error(Gitlab::ProjectMover::ProjectMoveError)
+ end
+
+ it "should raise if move failed" do
+ mk_dir base_path
+ mover = Gitlab::ProjectMover.new(@project, 'vsizov', '')
+
+ expect { mover.execute }.to raise_error(Gitlab::ProjectMover::ProjectMoveError)
+ end
+
+
+ def mk_dir base_path, namespace = '', project_path = ''
+ FileUtils.mkdir_p File.join(base_path, namespace, project_path + ".git")
+ end
+
+ def moved? namespace, path
+ File.exists?(File.join(base_path, namespace, path + '.git'))
+ end
+end
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index b6b1769fc80..58698eec9f4 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -169,9 +169,7 @@ describe Notify do
end
describe 'project access changed' do
- let(:project) { create(:project,
- path: "Fuu",
- code: "Fuu") }
+ let(:project) { create(:project) }
let(:user) { create(:user) }
let(:users_project) { create(:users_project,
project: project,
diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb
index d68ebb8614b..49cb49db375 100644
--- a/spec/models/event_spec.rb
+++ b/spec/models/event_spec.rb
@@ -2,14 +2,14 @@
#
# Table name: events
#
-# id :integer not null, primary key
+# id :integer not null, primary key
# target_type :string(255)
# target_id :integer
# title :string(255)
# data :text
# project_id :integer
-# created_at :datetime not null
-# updated_at :datetime not null
+# created_at :datetime not null
+# updated_at :datetime not null
# action :integer
# author_id :integer
#
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb
index 5ae40658823..108bc303540 100644
--- a/spec/models/group_spec.rb
+++ b/spec/models/group_spec.rb
@@ -1,13 +1,14 @@
# == Schema Information
#
-# Table name: groups
+# Table name: namespaces
#
-# id :integer not null, primary key
-# name :string(255) not null
-# code :string(255) not null
-# owner_id :integer not null
-# created_at :datetime not null
-# updated_at :datetime not null
+# id :integer not null, primary key
+# name :string(255) not null
+# path :string(255) not null
+# owner_id :integer not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# type :string(255)
#
require 'spec_helper'
@@ -18,7 +19,15 @@ describe Group do
it { should have_many :projects }
it { should validate_presence_of :name }
it { should validate_uniqueness_of(:name) }
- it { should validate_presence_of :code }
- it { should validate_uniqueness_of(:code) }
+ it { should validate_presence_of :path }
+ it { should validate_uniqueness_of(:path) }
it { should validate_presence_of :owner }
+
+ describe :users do
+ it { group.users.should == [group.owner] }
+ end
+
+ describe :human_name do
+ it { group.human_name.should == group.name }
+ end
end
diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb
index 9c69f8689c8..4c52a094386 100644
--- a/spec/models/issue_spec.rb
+++ b/spec/models/issue_spec.rb
@@ -2,15 +2,15 @@
#
# Table name: issues
#
-# id :integer not null, primary key
+# id :integer not null, primary key
# title :string(255)
# assignee_id :integer
# author_id :integer
# project_id :integer
-# created_at :datetime not null
-# updated_at :datetime not null
-# closed :boolean default(FALSE), not null
-# position :integer default(0)
+# created_at :datetime not null
+# updated_at :datetime not null
+# closed :boolean default(FALSE), not null
+# position :integer default(0)
# branch_name :string(255)
# description :text
# milestone_id :integer
diff --git a/spec/models/key_spec.rb b/spec/models/key_spec.rb
index 80dfff08397..6d2310df5c0 100644
--- a/spec/models/key_spec.rb
+++ b/spec/models/key_spec.rb
@@ -2,10 +2,10 @@
#
# Table name: keys
#
-# id :integer not null, primary key
+# id :integer not null, primary key
# user_id :integer
-# created_at :datetime not null
-# updated_at :datetime not null
+# created_at :datetime not null
+# updated_at :datetime not null
# key :text
# title :string(255)
# identifier :string(255)
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index 4bf42ef99aa..d70647f668d 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -2,20 +2,20 @@
#
# Table name: merge_requests
#
-# id :integer not null, primary key
-# target_branch :string(255) not null
-# source_branch :string(255) not null
-# project_id :integer not null
+# id :integer not null, primary key
+# target_branch :string(255) not null
+# source_branch :string(255) not null
+# project_id :integer not null
# author_id :integer
# assignee_id :integer
# title :string(255)
-# closed :boolean default(FALSE), not null
-# created_at :datetime not null
-# updated_at :datetime not null
-# st_commits :text(4294967295
-# st_diffs :text(4294967295
-# merged :boolean default(FALSE), not null
-# state :integer default(1), not null
+# closed :boolean default(FALSE), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# st_commits :text(2147483647)
+# st_diffs :text(2147483647)
+# merged :boolean default(FALSE), not null
+# state :integer default(1), not null
# milestone_id :integer
#
diff --git a/spec/models/milestone_spec.rb b/spec/models/milestone_spec.rb
index 0e5cf7dd665..431985d0d46 100644
--- a/spec/models/milestone_spec.rb
+++ b/spec/models/milestone_spec.rb
@@ -2,14 +2,14 @@
#
# Table name: milestones
#
-# id :integer not null, primary key
-# title :string(255) not null
-# project_id :integer not null
+# id :integer not null, primary key
+# title :string(255) not null
+# project_id :integer not null
# description :text
# due_date :date
-# closed :boolean default(FALSE), not null
-# created_at :datetime not null
-# updated_at :datetime not null
+# closed :boolean default(FALSE), not null
+# created_at :datetime not null
+# updated_at :datetime not null
#
require 'spec_helper'
diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb
new file mode 100644
index 00000000000..d0de4a7b7fb
--- /dev/null
+++ b/spec/models/namespace_spec.rb
@@ -0,0 +1,78 @@
+# == Schema Information
+#
+# Table name: namespaces
+#
+# id :integer not null, primary key
+# name :string(255) not null
+# path :string(255) not null
+# owner_id :integer not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# type :string(255)
+#
+
+require 'spec_helper'
+
+describe Namespace do
+ let!(:namespace) { create(:namespace) }
+
+ it { should have_many :projects }
+ it { should validate_presence_of :name }
+ it { should validate_uniqueness_of(:name) }
+ it { should validate_presence_of :path }
+ it { should validate_uniqueness_of(:path) }
+ it { should validate_presence_of :owner }
+
+ describe "Mass assignment" do
+ it { should allow_mass_assignment_of(:name) }
+ it { should allow_mass_assignment_of(:path) }
+ end
+
+ describe "Respond to" do
+ it { should respond_to(:human_name) }
+ it { should respond_to(:to_param) }
+ end
+
+ it { Namespace.global_id.should == 'GLN' }
+
+ describe :to_param do
+ it { namespace.to_param.should == namespace.path }
+ end
+
+ describe :human_name do
+ it { namespace.human_name.should == namespace.owner_name }
+ end
+
+ describe :search do
+ before do
+ @namespace = create :namespace
+ end
+
+ it { Namespace.search(@namespace.path).should == [@namespace] }
+ it { Namespace.search('unknown').should == [] }
+ end
+
+ describe :move_dir do
+ before do
+ @namespace = create :namespace
+ @namespace.stub(path_changed?: true)
+ end
+
+ it "should raise error when dirtory exists" do
+ expect { @namespace.move_dir }.to raise_error("Already exists")
+ end
+
+ it "should move dir if path changed" do
+ new_path = @namespace.path + "_new"
+ @namespace.stub(path_was: @namespace.path)
+ @namespace.stub(path: new_path)
+ @namespace.move_dir.should be_true
+ end
+ end
+
+ describe :rm_dir do
+ it "should remove dir" do
+ namespace.rm_dir.should be_true
+ end
+ end
+end
diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb
index d739053748f..4f9352b9a14 100644
--- a/spec/models/note_spec.rb
+++ b/spec/models/note_spec.rb
@@ -2,13 +2,13 @@
#
# Table name: notes
#
-# id :integer not null, primary key
+# id :integer not null, primary key
# note :text
# noteable_id :string(255)
# noteable_type :string(255)
# author_id :integer
-# created_at :datetime not null
-# updated_at :datetime not null
+# created_at :datetime not null
+# updated_at :datetime not null
# project_id :integer
# attachment :string(255)
# line_code :string(255)
diff --git a/spec/models/project_hooks_spec.rb b/spec/models/project_hooks_spec.rb
index ee441ec4ec5..7c8f05b17a3 100644
--- a/spec/models/project_hooks_spec.rb
+++ b/spec/models/project_hooks_spec.rb
@@ -11,13 +11,15 @@ describe Project, "Hooks" do
describe "Post Receive Event" do
it "should create push event" do
oldrev, newrev, ref = '00000000000000000000000000000000', 'newrev', 'refs/heads/master'
- project.observe_push(oldrev, newrev, ref, @user)
+ data = project.post_receive_data(oldrev, newrev, ref, @user)
+
+ project.observe_push(data)
event = Event.last
event.should_not be_nil
event.project.should == project
event.action.should == Event::Pushed
- event.data == project.post_receive_data(oldrev, newrev, ref, @user)
+ event.data.should == data
end
end
@@ -25,7 +27,7 @@ describe Project, "Hooks" do
context "with no web hooks" do
it "raises no errors" do
lambda {
- project.execute_hooks('oldrev', 'newrev', 'ref', @user)
+ project.execute_hooks({})
}.should_not raise_error
end
end
@@ -41,7 +43,7 @@ describe Project, "Hooks" do
@project_hook.should_receive(:execute).once
@project_hook_2.should_receive(:execute).once
- project.execute_hooks('oldrev', 'newrev', 'refs/heads/master', @user)
+ project.trigger_post_receive('oldrev', 'newrev', 'refs/heads/master', @user)
end
end
@@ -53,12 +55,12 @@ describe Project, "Hooks" do
it "when pushing a branch for the first time" do
@project_hook.should_not_receive(:execute)
- project.execute_hooks('00000000000000000000000000000000', 'newrev', 'refs/heads/master', @user)
+ project.trigger_post_receive('00000000000000000000000000000000', 'newrev', 'refs/heads/master', @user)
end
it "when pushing tags" do
@project_hook.should_not_receive(:execute)
- project.execute_hooks('oldrev', 'newrev', 'refs/tags/v1.0.0', @user)
+ project.trigger_post_receive('oldrev', 'newrev', 'refs/tags/v1.0.0', @user)
end
end
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 1cf4f586192..db0d30727b4 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -2,21 +2,20 @@
#
# Table name: projects
#
-# id :integer not null, primary key
+# id :integer not null, primary key
# name :string(255)
# path :string(255)
# description :text
-# created_at :datetime not null
-# updated_at :datetime not null
-# private_flag :boolean default(TRUE), not null
-# code :string(255)
+# created_at :datetime not null
+# updated_at :datetime not null
+# private_flag :boolean default(TRUE), not null
# owner_id :integer
# default_branch :string(255)
-# issues_enabled :boolean default(TRUE), not null
-# wall_enabled :boolean default(TRUE), not null
-# merge_requests_enabled :boolean default(TRUE), not null
-# wiki_enabled :boolean default(TRUE), not null
-# group_id :integer
+# issues_enabled :boolean default(TRUE), not null
+# wall_enabled :boolean default(TRUE), not null
+# merge_requests_enabled :boolean default(TRUE), not null
+# wiki_enabled :boolean default(TRUE), not null
+# namespace_id :integer
#
require 'spec_helper'
@@ -24,6 +23,7 @@ require 'spec_helper'
describe Project do
describe "Associations" do
it { should belong_to(:group) }
+ it { should belong_to(:namespace) }
it { should belong_to(:owner).class_name('User') }
it { should have_many(:users) }
it { should have_many(:events).dependent(:destroy) }
@@ -40,6 +40,7 @@ describe Project do
end
describe "Mass assignment" do
+ it { should_not allow_mass_assignment_of(:namespace_id) }
it { should_not allow_mass_assignment_of(:owner_id) }
it { should_not allow_mass_assignment_of(:private_flag) }
end
@@ -58,9 +59,6 @@ describe Project do
it { should ensure_length_of(:description).is_within(0..2000) }
- it { should validate_presence_of(:code) }
- it { should validate_uniqueness_of(:code) }
- it { should ensure_length_of(:code).is_within(1..255) }
# TODO: Formats
it { should validate_presence_of(:owner) }
@@ -151,7 +149,7 @@ describe Project do
end
it "returns the full web URL for this repo" do
- project = Project.new(code: "somewhere")
+ project = Project.new(path: "somewhere")
project.web_url.should == "#{Gitlab.config.url}/somewhere"
end
@@ -162,7 +160,7 @@ describe Project do
end
it "should be invalid repo" do
- project = Project.new(name: "ok_name", path: "/INVALID_PATH/", code: "NEOK")
+ project = Project.new(name: "ok_name", path: "/INVALID_PATH/", path: "NEOK")
project.valid_repo?.should be_false
end
end
diff --git a/spec/models/protected_branch_spec.rb b/spec/models/protected_branch_spec.rb
index 874c4e4d885..7340ce50ced 100644
--- a/spec/models/protected_branch_spec.rb
+++ b/spec/models/protected_branch_spec.rb
@@ -2,11 +2,11 @@
#
# Table name: protected_branches
#
-# id :integer not null, primary key
-# project_id :integer not null
-# name :string(255) not null
-# created_at :datetime not null
-# updated_at :datetime not null
+# id :integer not null, primary key
+# project_id :integer not null
+# name :string(255) not null
+# created_at :datetime not null
+# updated_at :datetime not null
#
require 'spec_helper'
diff --git a/spec/models/service_hook_spec.rb b/spec/models/service_hook_spec.rb
new file mode 100644
index 00000000000..0b0262c97f1
--- /dev/null
+++ b/spec/models/service_hook_spec.rb
@@ -0,0 +1,20 @@
+# == Schema Information
+#
+# Table name: web_hooks
+#
+# id :integer not null, primary key
+# url :string(255)
+# project_id :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+# type :string(255) default("ProjectHook")
+# service_id :integer
+#
+
+require "spec_helper"
+
+describe ServiceHook do
+ describe "Associations" do
+ it { should belong_to :service }
+ end
+end
diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb
new file mode 100644
index 00000000000..1a58f680baf
--- /dev/null
+++ b/spec/models/service_spec.rb
@@ -0,0 +1,27 @@
+# == Schema Information
+#
+# Table name: services
+#
+# id :integer not null, primary key
+# type :string(255)
+# title :string(255)
+# token :string(255)
+# project_id :integer not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# active :boolean default(FALSE), not null
+# project_url :string(255)
+#
+
+require 'spec_helper'
+
+describe Service do
+ describe "Associations" do
+ it { should belong_to :project }
+ it { should have_one :service_hook }
+ end
+
+ describe "Mass assignment" do
+ it { should_not allow_mass_assignment_of(:project_id) }
+ end
+end
diff --git a/spec/models/snippet_spec.rb b/spec/models/snippet_spec.rb
index ada5fcdbcb8..b474d88c9e2 100644
--- a/spec/models/snippet_spec.rb
+++ b/spec/models/snippet_spec.rb
@@ -2,13 +2,13 @@
#
# Table name: snippets
#
-# id :integer not null, primary key
+# id :integer not null, primary key
# title :string(255)
# content :text
-# author_id :integer not null
-# project_id :integer not null
-# created_at :datetime not null
-# updated_at :datetime not null
+# author_id :integer not null
+# project_id :integer not null
+# created_at :datetime not null
+# updated_at :datetime not null
# file_name :string(255)
# expires_at :datetime
#
diff --git a/spec/models/system_hook_spec.rb b/spec/models/system_hook_spec.rb
index 5f9239119b0..9d03b56cd8f 100644
--- a/spec/models/system_hook_spec.rb
+++ b/spec/models/system_hook_spec.rb
@@ -2,12 +2,13 @@
#
# Table name: web_hooks
#
-# id :integer not null, primary key
+# id :integer not null, primary key
# url :string(255)
# project_id :integer
-# created_at :datetime not null
-# updated_at :datetime not null
-# type :string(255) default("ProjectHook")
+# created_at :datetime not null
+# updated_at :datetime not null
+# type :string(255) default("ProjectHook")
+# service_id :integer
#
require "spec_helper"
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index b9654d7002c..279e315b693 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -2,42 +2,45 @@
#
# Table name: users
#
-# id :integer not null, primary key
-# email :string(255) default(""), not null
-# encrypted_password :string(128) default(""), not null
+# id :integer not null, primary key
+# email :string(255) default(""), not null
+# encrypted_password :string(255) default(""), not null
# reset_password_token :string(255)
# reset_password_sent_at :datetime
# remember_created_at :datetime
-# sign_in_count :integer default(0)
+# sign_in_count :integer default(0)
# current_sign_in_at :datetime
# last_sign_in_at :datetime
# current_sign_in_ip :string(255)
# last_sign_in_ip :string(255)
-# created_at :datetime not null
-# updated_at :datetime not null
+# created_at :datetime not null
+# updated_at :datetime not null
# name :string(255)
-# admin :boolean default(FALSE), not null
-# projects_limit :integer default(10)
-# skype :string(255) default(""), not null
-# linkedin :string(255) default(""), not null
-# twitter :string(255) default(""), not null
+# admin :boolean default(FALSE), not null
+# projects_limit :integer default(10)
+# skype :string(255) default(""), not null
+# linkedin :string(255) default(""), not null
+# twitter :string(255) default(""), not null
# authentication_token :string(255)
-# dark_scheme :boolean default(FALSE), not null
-# theme_id :integer default(1), not null
+# dark_scheme :boolean default(FALSE), not null
+# theme_id :integer default(1), not null
# bio :string(255)
-# blocked :boolean default(FALSE), not null
-# failed_attempts :integer default(0)
+# blocked :boolean default(FALSE), not null
+# failed_attempts :integer default(0)
# locked_at :datetime
# extern_uid :string(255)
# provider :string(255)
+# username :string(255)
#
require 'spec_helper'
describe User do
describe "Associations" do
+ it { should have_one(:namespace) }
it { should have_many(:users_projects).dependent(:destroy) }
it { should have_many(:projects) }
+ it { should have_many(:groups) }
it { should have_many(:my_own_projects).class_name('Project') }
it { should have_many(:keys).dependent(:destroy) }
it { should have_many(:events).class_name('Event').dependent(:destroy) }
@@ -55,6 +58,7 @@ describe User do
end
describe 'validations' do
+ it { should validate_presence_of(:username) }
it { should validate_presence_of(:projects_limit) }
it { should validate_numericality_of(:projects_limit) }
it { should allow_value(0).for(:projects_limit) }
diff --git a/spec/models/users_project_spec.rb b/spec/models/users_project_spec.rb
index 2ad9a0bd909..1f896324f18 100644
--- a/spec/models/users_project_spec.rb
+++ b/spec/models/users_project_spec.rb
@@ -2,12 +2,12 @@
#
# Table name: users_projects
#
-# id :integer not null, primary key
-# user_id :integer not null
-# project_id :integer not null
-# created_at :datetime not null
-# updated_at :datetime not null
-# project_access :integer default(0), not null
+# id :integer not null, primary key
+# user_id :integer not null
+# project_id :integer not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# project_access :integer default(0), not null
#
require 'spec_helper'
diff --git a/spec/models/web_hook_spec.rb b/spec/models/web_hook_spec.rb
index 8f8decb81c6..2d9301732dd 100644
--- a/spec/models/web_hook_spec.rb
+++ b/spec/models/web_hook_spec.rb
@@ -2,12 +2,13 @@
#
# Table name: web_hooks
#
-# id :integer not null, primary key
+# id :integer not null, primary key
# url :string(255)
# project_id :integer
-# created_at :datetime not null
-# updated_at :datetime not null
-# type :string(255) default("ProjectHook")
+# created_at :datetime not null
+# updated_at :datetime not null
+# type :string(255) default("ProjectHook")
+# service_id :integer
#
require 'spec_helper'
diff --git a/spec/models/wiki_spec.rb b/spec/models/wiki_spec.rb
index 96aebd2ddb7..9750b81d303 100644
--- a/spec/models/wiki_spec.rb
+++ b/spec/models/wiki_spec.rb
@@ -2,12 +2,12 @@
#
# Table name: wikis
#
-# id :integer not null, primary key
+# id :integer not null, primary key
# title :string(255)
# content :text
# project_id :integer
-# created_at :datetime not null
-# updated_at :datetime not null
+# created_at :datetime not null
+# updated_at :datetime not null
# slug :string(255)
# user_id :integer
#
diff --git a/spec/observers/user_observer_spec.rb b/spec/observers/user_observer_spec.rb
index 08254f44026..4ba0f05df5d 100644
--- a/spec/observers/user_observer_spec.rb
+++ b/spec/observers/user_observer_spec.rb
@@ -13,7 +13,12 @@ describe UserObserver do
end
context 'when a new user is created' do
- let(:user) { double(:user, id: 42, password: 'P@ssword!', name: 'John', email: 'u@mail.local') }
+ let(:user) { double(:user, id: 42,
+ password: 'P@ssword!',
+ name: 'John',
+ email: 'u@mail.local',
+ username: 'root',
+ create_namespace: true) }
let(:notification) { double :notification }
it 'sends an email' do
diff --git a/spec/observers/users_project_observer_spec.rb b/spec/observers/users_project_observer_spec.rb
index cbe42248033..548f1893848 100644
--- a/spec/observers/users_project_observer_spec.rb
+++ b/spec/observers/users_project_observer_spec.rb
@@ -2,9 +2,7 @@ require 'spec_helper'
describe UsersProjectObserver do
let(:user) { create(:user) }
- let(:project) { create(:project,
- code: "Fuu",
- path: "Fuu" ) }
+ let(:project) { create(:project) }
let(:users_project) { create(:users_project,
project: project,
user: user )}
diff --git a/spec/requests/admin/admin_hooks_spec.rb b/spec/requests/admin/admin_hooks_spec.rb
index 3f35b2fd37d..bc0586b2712 100644
--- a/spec/requests/admin/admin_hooks_spec.rb
+++ b/spec/requests/admin/admin_hooks_spec.rb
@@ -2,9 +2,7 @@ require 'spec_helper'
describe "Admin::Hooks" do
before do
- @project = create(:project,
- name: "LeGiT",
- code: "LGT")
+ @project = create(:project)
login_as :admin
@system_hook = create(:system_hook)
diff --git a/spec/requests/admin/admin_projects_spec.rb b/spec/requests/admin/admin_projects_spec.rb
index 43e39d7cbcd..c9ddf1f4534 100644
--- a/spec/requests/admin/admin_projects_spec.rb
+++ b/spec/requests/admin/admin_projects_spec.rb
@@ -2,9 +2,7 @@ require 'spec_helper'
describe "Admin::Projects" do
before do
- @project = create(:project,
- name: "LeGiT",
- code: "LGT")
+ @project = create(:project)
login_as :admin
end
@@ -29,7 +27,7 @@ describe "Admin::Projects" do
end
it "should have project info" do
- page.should have_content(@project.code)
+ page.should have_content(@project.path)
page.should have_content(@project.name)
end
end
@@ -41,67 +39,27 @@ describe "Admin::Projects" do
end
it "should have project edit page" do
- page.should have_content("Project name")
- page.should have_content("URL")
+ page.should have_content("Edit project")
+ page.should have_button("Save Project")
end
describe "Update project" do
before do
fill_in "project_name", with: "Big Bang"
- fill_in "project_code", with: "BB1"
click_button "Save Project"
@project.reload
end
it "should show page with new data" do
- page.should have_content("BB1")
page.should have_content("Big Bang")
end
it "should change project entry" do
@project.name.should == "Big Bang"
- @project.code.should == "BB1"
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")
- page.should have_content("Git Clone")
- page.should have_content("URL")
- end
- end
-
- describe "POST /admin/projects" do
- before do
- visit new_admin_project_path
- fill_in 'project_name', with: 'NewProject'
- fill_in 'project_code', with: 'NPR'
- fill_in 'project_path', with: 'gitlabhq_1'
- 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
before do
@new_user = create(:user)
diff --git a/spec/requests/admin/admin_users_spec.rb b/spec/requests/admin/admin_users_spec.rb
index 9f43f07a476..ca134c2d4f7 100644
--- a/spec/requests/admin/admin_users_spec.rb
+++ b/spec/requests/admin/admin_users_spec.rb
@@ -23,6 +23,7 @@ describe "Admin::Users" do
@password = "123ABC"
visit new_admin_user_path
fill_in "user_name", with: "Big Bang"
+ fill_in "user_username", with: "bang"
fill_in "user_email", with: "bigbang@mail.com"
fill_in "user_password", with: @password
fill_in "user_password_confirmation", with: @password
diff --git a/spec/requests/api/issues_spec.rb b/spec/requests/api/issues_spec.rb
index 6ea7e9b5579..1850ecb95cc 100644
--- a/spec/requests/api/issues_spec.rb
+++ b/spec/requests/api/issues_spec.rb
@@ -28,7 +28,7 @@ describe Gitlab::API do
describe "GET /projects/:id/issues" do
it "should return project issues" do
- get api("/projects/#{project.code}/issues", user)
+ get api("/projects/#{project.path}/issues", user)
response.status.should == 200
json_response.should be_an Array
json_response.first['title'].should == issue.title
@@ -37,7 +37,7 @@ describe Gitlab::API do
describe "GET /projects/:id/issues/:issue_id" do
it "should return a project issue by id" do
- get api("/projects/#{project.code}/issues/#{issue.id}", user)
+ get api("/projects/#{project.path}/issues/#{issue.id}", user)
response.status.should == 200
json_response['title'].should == issue.title
end
@@ -45,7 +45,7 @@ describe Gitlab::API do
describe "POST /projects/:id/issues" do
it "should create a new project issue" do
- post api("/projects/#{project.code}/issues", user),
+ post api("/projects/#{project.path}/issues", user),
title: 'new issue', labels: 'label, label2'
response.status.should == 201
json_response['title'].should == 'new issue'
@@ -56,7 +56,7 @@ describe Gitlab::API do
describe "PUT /projects/:id/issues/:issue_id" do
it "should update a project issue" do
- put api("/projects/#{project.code}/issues/#{issue.id}", user),
+ put api("/projects/#{project.path}/issues/#{issue.id}", user),
title: 'updated title', labels: 'label2', closed: 1
response.status.should == 200
json_response['title'].should == 'updated title'
@@ -67,7 +67,7 @@ describe Gitlab::API do
describe "DELETE /projects/:id/issues/:issue_id" do
it "should delete a project issue" do
- delete api("/projects/#{project.code}/issues/#{issue.id}", user)
+ delete api("/projects/#{project.path}/issues/#{issue.id}", user)
response.status.should == 405
end
end
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index e83f24671ed..43931aedcda 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -11,14 +11,14 @@ describe Gitlab::API do
describe "GET /projects/:id/merge_requests" do
context "when unauthenticated" do
it "should return authentication error" do
- get api("/projects/#{project.code}/merge_requests")
+ get api("/projects/#{project.path}/merge_requests")
response.status.should == 401
end
end
context "when authenticated" do
it "should return an array of merge_requests" do
- get api("/projects/#{project.code}/merge_requests", user)
+ get api("/projects/#{project.path}/merge_requests", user)
response.status.should == 200
json_response.should be_an Array
json_response.first['title'].should == merge_request.title
@@ -28,7 +28,7 @@ describe Gitlab::API do
describe "GET /projects/:id/merge_request/:merge_request_id" do
it "should return merge_request" do
- get api("/projects/#{project.code}/merge_request/#{merge_request.id}", user)
+ get api("/projects/#{project.path}/merge_request/#{merge_request.id}", user)
response.status.should == 200
json_response['title'].should == merge_request.title
end
@@ -36,7 +36,7 @@ describe Gitlab::API do
describe "POST /projects/:id/merge_requests" do
it "should return merge_request" do
- post api("/projects/#{project.code}/merge_requests", user),
+ post api("/projects/#{project.path}/merge_requests", user),
title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user
response.status.should == 201
json_response['title'].should == 'Test merge_request'
@@ -45,7 +45,7 @@ describe Gitlab::API do
describe "PUT /projects/:id/merge_request/:merge_request_id" do
it "should return merge_request" do
- put api("/projects/#{project.code}/merge_request/#{merge_request.id}", user), title: "New title"
+ put api("/projects/#{project.path}/merge_request/#{merge_request.id}", user), title: "New title"
response.status.should == 200
json_response['title'].should == 'New title'
end
@@ -53,7 +53,7 @@ describe Gitlab::API do
describe "POST /projects/:id/merge_request/:merge_request_id/comments" do
it "should return comment" do
- post api("/projects/#{project.code}/merge_request/#{merge_request.id}/comments", user), note: "My comment"
+ post api("/projects/#{project.path}/merge_request/#{merge_request.id}/comments", user), note: "My comment"
response.status.should == 201
json_response['note'].should == 'My comment'
end
diff --git a/spec/requests/api/milestones_spec.rb b/spec/requests/api/milestones_spec.rb
index 860825ab2db..dc96d46d894 100644
--- a/spec/requests/api/milestones_spec.rb
+++ b/spec/requests/api/milestones_spec.rb
@@ -11,7 +11,7 @@ describe Gitlab::API do
describe "GET /projects/:id/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
json_response.should be_an Array
json_response.first['title'].should == milestone.title
@@ -20,7 +20,7 @@ describe Gitlab::API do
describe "GET /projects/:id/milestones/:milestone_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
json_response['title'].should == milestone.title
end
@@ -28,7 +28,7 @@ describe Gitlab::API do
describe "POST /projects/:id/milestones" 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'
response.status.should == 201
json_response['title'].should == 'new milestone'
@@ -38,7 +38,7 @@ describe Gitlab::API do
describe "PUT /projects/:id/milestones/:milestone_id" 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'
response.status.should == 200
json_response['title'].should == 'updated title'
diff --git a/spec/requests/api/notes_spec.rb b/spec/requests/api/notes_spec.rb
new file mode 100644
index 00000000000..dc02e7a3efa
--- /dev/null
+++ b/spec/requests/api/notes_spec.rb
@@ -0,0 +1,98 @@
+require 'spec_helper'
+
+describe Gitlab::API do
+ include ApiHelpers
+
+ let(:user) { create(:user) }
+ let!(:project) { create(:project, owner: user) }
+ let!(:issue) { create(:issue, project: project, author: user) }
+ let!(:snippet) { create(:snippet, project: project, author: user) }
+ let!(:issue_note) { create(:note, noteable: issue, project: project, author: user) }
+ let!(:snippet_note) { create(:note, noteable: snippet, project: project, author: user) }
+ let!(:wall_note) { create(:note, project: project, author: user) }
+ before { project.add_access(user, :read) }
+
+ describe "GET /projects/:id/notes" do
+ context "when unauthenticated" do
+ it "should return authentication error" do
+ get api("/projects/#{project.id}/notes")
+ response.status.should == 401
+ end
+ end
+
+ context "when authenticated" do
+ it "should return project wall notes" do
+ get api("/projects/#{project.id}/notes", user)
+ response.status.should == 200
+ json_response.should be_an Array
+ json_response.first['body'].should == wall_note.note
+ end
+ end
+ end
+
+ describe "POST /projects/:id/notes" do
+ it "should create a new wall note" do
+ post api("/projects/#{project.id}/notes", user), body: 'hi!'
+ response.status.should == 201
+ json_response['body'].should == 'hi!'
+ end
+ end
+
+ describe "GET /projects/:id/noteable/:noteable_id/notes" do
+ context "when noteable is an Issue" do
+ it "should return an array of issue notes" do
+ get api("/projects/#{project.id}/issues/#{issue.id}/notes", user)
+ response.status.should == 200
+ json_response.should be_an Array
+ json_response.first['body'].should == issue_note.note
+ end
+ end
+
+ context "when noteable is a Snippet" do
+ it "should return an array of snippet notes" do
+ get api("/projects/#{project.id}/snippets/#{snippet.id}/notes", user)
+ response.status.should == 200
+ json_response.should be_an Array
+ json_response.first['body'].should == snippet_note.note
+ end
+ end
+ end
+
+ describe "GET /projects/:id/noteable/:noteable_id/notes/:note_id" do
+ context "when noteable is an Issue" do
+ it "should return an issue note by id" do
+ get api("/projects/#{project.id}/issues/#{issue.id}/notes/#{issue_note.id}", user)
+ response.status.should == 200
+ json_response['body'].should == issue_note.note
+ end
+ end
+
+ context "when noteable is a Snippet" do
+ it "should return a snippet note by id" do
+ get api("/projects/#{project.id}/snippets/#{snippet.id}/notes/#{snippet_note.id}", user)
+ response.status.should == 200
+ json_response['body'].should == snippet_note.note
+ end
+ end
+ end
+
+ describe "POST /projects/:id/noteable/:noteable_id/notes" do
+ context "when noteable is an Issue" do
+ it "should create a new issue note" do
+ post api("/projects/#{project.id}/issues/#{issue.id}/notes", user), body: 'hi!'
+ response.status.should == 201
+ json_response['body'].should == 'hi!'
+ json_response['author']['email'].should == user.email
+ end
+ end
+
+ context "when noteable is a Snippet" do
+ it "should create a new snippet note" do
+ post api("/projects/#{project.id}/snippets/#{snippet.id}/notes", user), body: 'hi!'
+ response.status.should == 201
+ json_response['body'].should == 'hi!'
+ json_response['author']['email'].should == user.email
+ end
+ end
+ end
+end
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index d24ce43d3f2..b4e2fbbdab8 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -33,7 +33,7 @@ describe Gitlab::API do
end
describe "POST /projects" do
- it "should create new project without code and path" do
+ it "should create new project without path" do
expect { post api("/projects", user), name: 'foo' }.to change {Project.count}.by(1)
end
@@ -53,8 +53,6 @@ describe Gitlab::API do
it "should assign attributes to project" do
project = attributes_for(:project, {
- path: 'path',
- code: 'code',
description: Faker::Lorem.sentence,
default_branch: 'stable',
issues_enabled: false,
@@ -79,8 +77,8 @@ describe Gitlab::API do
json_response['owner']['email'].should == user.email
end
- it "should return a project by code name" do
- get api("/projects/#{project.code}", user)
+ it "should return a project by path name" do
+ get api("/projects/#{project.path}", user)
response.status.should == 200
json_response['name'].should == project.name
end
@@ -94,7 +92,7 @@ describe Gitlab::API do
describe "GET /projects/:id/repository/branches" do
it "should return an array of project branches" do
- get api("/projects/#{project.code}/repository/branches", user)
+ get api("/projects/#{project.path}/repository/branches", user)
response.status.should == 200
json_response.should be_an Array
json_response.first['name'].should == project.repo.heads.sort_by(&:name).first.name
@@ -103,7 +101,7 @@ describe Gitlab::API do
describe "GET /projects/:id/repository/branches/:branch" do
it "should return the branch information for a single branch" do
- get api("/projects/#{project.code}/repository/branches/new_design", user)
+ get api("/projects/#{project.path}/repository/branches/new_design", user)
response.status.should == 200
json_response['name'].should == 'new_design'
@@ -113,7 +111,7 @@ describe Gitlab::API do
describe "GET /projects/:id/members" do
it "should return project team members" do
- get api("/projects/#{project.code}/members", user)
+ get api("/projects/#{project.path}/members", user)
response.status.should == 200
json_response.should be_an Array
json_response.count.should == 2
@@ -123,7 +121,7 @@ describe Gitlab::API do
describe "GET /projects/:id/members/:user_id" do
it "should return project team member" do
- get api("/projects/#{project.code}/members/#{user.id}", user)
+ get api("/projects/#{project.path}/members/#{user.id}", user)
response.status.should == 200
json_response['email'].should == user.email
json_response['access_level'].should == UsersProject::MASTER
@@ -133,7 +131,7 @@ describe Gitlab::API do
describe "POST /projects/:id/members" do
it "should add user to project team" do
expect {
- post api("/projects/#{project.code}/members", user), user_id: user2.id,
+ post api("/projects/#{project.path}/members", user), user_id: user2.id,
access_level: UsersProject::DEVELOPER
}.to change { UsersProject.count }.by(1)
@@ -145,7 +143,7 @@ describe Gitlab::API do
describe "PUT /projects/:id/members/:user_id" do
it "should update project team member" do
- put api("/projects/#{project.code}/members/#{user3.id}", user), access_level: UsersProject::MASTER
+ put api("/projects/#{project.path}/members/#{user3.id}", user), access_level: UsersProject::MASTER
response.status.should == 200
json_response['email'].should == user3.email
json_response['access_level'].should == UsersProject::MASTER
@@ -155,14 +153,14 @@ describe Gitlab::API do
describe "DELETE /projects/:id/members/:user_id" do
it "should remove user from project team" do
expect {
- delete api("/projects/#{project.code}/members/#{user3.id}", user)
+ delete api("/projects/#{project.path}/members/#{user3.id}", user)
}.to change { UsersProject.count }.by(-1)
end
end
describe "GET /projects/:id/hooks" do
it "should return project hooks" do
- get api("/projects/#{project.code}/hooks", user)
+ get api("/projects/#{project.path}/hooks", user)
response.status.should == 200
@@ -174,7 +172,7 @@ describe Gitlab::API do
describe "GET /projects/:id/hooks/:hook_id" do
it "should return a project hook" do
- get api("/projects/#{project.code}/hooks/#{hook.id}", user)
+ get api("/projects/#{project.path}/hooks/#{hook.id}", user)
response.status.should == 200
json_response['url'].should == hook.url
end
@@ -183,7 +181,7 @@ describe Gitlab::API do
describe "POST /projects/:id/hooks" do
it "should add hook to project" do
expect {
- post api("/projects/#{project.code}/hooks", user),
+ post api("/projects/#{project.path}/hooks", user),
"url" => "http://example.com"
}.to change {project.hooks.count}.by(1)
end
@@ -191,7 +189,7 @@ describe Gitlab::API do
describe "PUT /projects/:id/hooks/:hook_id" do
it "should update an existing project hook" do
- put api("/projects/#{project.code}/hooks/#{hook.id}", user),
+ put api("/projects/#{project.path}/hooks/#{hook.id}", user),
url: 'http://example.org'
response.status.should == 200
json_response['url'].should == 'http://example.org'
@@ -202,7 +200,7 @@ describe Gitlab::API do
describe "DELETE /projects/:id/hooks" do
it "should delete hook from project" do
expect {
- delete api("/projects/#{project.code}/hooks", user),
+ delete api("/projects/#{project.path}/hooks", user),
hook_id: hook.id
}.to change {project.hooks.count}.by(-1)
end
@@ -210,7 +208,7 @@ describe Gitlab::API do
describe "GET /projects/:id/repository/tags" do
it "should return an array of project tags" do
- get api("/projects/#{project.code}/repository/tags", user)
+ get api("/projects/#{project.path}/repository/tags", user)
response.status.should == 200
json_response.should be_an Array
json_response.first['name'].should == project.repo.tags.sort_by(&:name).reverse.first.name
@@ -222,7 +220,7 @@ describe Gitlab::API do
before { project.add_access(user2, :read) }
it "should return project commits" do
- get api("/projects/#{project.code}/repository/commits", user)
+ get api("/projects/#{project.path}/repository/commits", user)
response.status.should == 200
json_response.should be_an Array
@@ -232,7 +230,7 @@ describe Gitlab::API do
context "unauthorized user" do
it "should not return project commits" do
- get api("/projects/#{project.code}/repository/commits")
+ get api("/projects/#{project.path}/repository/commits")
response.status.should == 401
end
end
@@ -240,7 +238,7 @@ describe Gitlab::API do
describe "GET /projects/:id/snippets" do
it "should return an array of project snippets" do
- get api("/projects/#{project.code}/snippets", user)
+ get api("/projects/#{project.path}/snippets", user)
response.status.should == 200
json_response.should be_an Array
json_response.first['title'].should == snippet.title
@@ -249,7 +247,7 @@ describe Gitlab::API do
describe "GET /projects/:id/snippets/:snippet_id" do
it "should return a project snippet" do
- get api("/projects/#{project.code}/snippets/#{snippet.id}", user)
+ get api("/projects/#{project.path}/snippets/#{snippet.id}", user)
response.status.should == 200
json_response['title'].should == snippet.title
end
@@ -257,7 +255,7 @@ describe Gitlab::API do
describe "POST /projects/:id/snippets" do
it "should create a new project snippet" do
- post api("/projects/#{project.code}/snippets", user),
+ post api("/projects/#{project.path}/snippets", user),
title: 'api test', file_name: 'sample.rb', code: 'test'
response.status.should == 201
json_response['title'].should == 'api test'
@@ -266,7 +264,7 @@ describe Gitlab::API do
describe "PUT /projects/:id/snippets/:shippet_id" do
it "should update an existing project snippet" do
- put api("/projects/#{project.code}/snippets/#{snippet.id}", user),
+ put api("/projects/#{project.path}/snippets/#{snippet.id}", user),
code: 'updated code'
response.status.should == 200
json_response['title'].should == 'example'
@@ -277,31 +275,31 @@ describe Gitlab::API do
describe "DELETE /projects/:id/snippets/:snippet_id" do
it "should delete existing project snippet" do
expect {
- delete api("/projects/#{project.code}/snippets/#{snippet.id}", user)
+ delete api("/projects/#{project.path}/snippets/#{snippet.id}", user)
}.to change { Snippet.count }.by(-1)
end
end
describe "GET /projects/:id/snippets/:snippet_id/raw" do
it "should get a raw project snippet" do
- get api("/projects/#{project.code}/snippets/#{snippet.id}/raw", user)
+ get api("/projects/#{project.path}/snippets/#{snippet.id}/raw", user)
response.status.should == 200
end
end
describe "GET /projects/:id/:sha/blob" do
it "should get the raw file contents" do
- get api("/projects/#{project.code}/repository/commits/master/blob?filepath=README.md", user)
+ get api("/projects/#{project.path}/repository/commits/master/blob?filepath=README.md", user)
response.status.should == 200
end
it "should return 404 for invalid branch_name" do
- get api("/projects/#{project.code}/repository/commits/invalid_branch_name/blob?filepath=README.md", user)
+ get api("/projects/#{project.path}/repository/commits/invalid_branch_name/blob?filepath=README.md", user)
response.status.should == 404
end
it "should return 404 for invalid file" do
- get api("/projects/#{project.code}/repository/commits/master/blob?filepath=README.invalid", user)
+ get api("/projects/#{project.path}/repository/commits/master/blob?filepath=README.invalid", user)
response.status.should == 404
end
end
diff --git a/spec/requests/gitlab_flavored_markdown_spec.rb b/spec/requests/gitlab_flavored_markdown_spec.rb
index aedd435e617..ad5d7cd7607 100644
--- a/spec/requests/gitlab_flavored_markdown_spec.rb
+++ b/spec/requests/gitlab_flavored_markdown_spec.rb
@@ -197,18 +197,6 @@ describe "Gitlab Flavored Markdown" do
page.should have_link("##{issue.id}")
end
-
- it "should render in wikis#index", js: true do
- visit project_wiki_path(project, :index)
- fill_in "Title", with: 'Test title'
- fill_in "Content", with: '[link test](test)'
- click_on "Save"
-
- fill_in "note_note", with: "see ##{issue.id}"
- click_button "Add Comment"
-
- page.should have_link("##{issue.id}")
- end
end
diff --git a/spec/requests/projects_spec.rb b/spec/requests/projects_spec.rb
index c44bea89f96..8c0f8e5fbc1 100644
--- a/spec/requests/projects_spec.rb
+++ b/spec/requests/projects_spec.rb
@@ -3,16 +3,6 @@ require 'spec_helper'
describe "Projects" do
before { login_as :user }
- describe 'GET /project/new' do
- it "should work autocomplete", :js => true do
- visit new_project_path
-
- fill_in 'project_name', with: 'Awesome'
- find("#project_path").value.should == 'awesome'
- find("#project_code").value.should == 'awesome'
- end
- end
-
describe "GET /projects/show" do
before do
@project = create(:project, owner: @user)
@@ -53,7 +43,6 @@ describe "Projects" do
visit edit_project_path(@project)
fill_in 'project_name', with: 'Awesome'
- fill_in 'project_code', with: 'gitlabhq'
click_button "Save"
@project = @project.reload
end
diff --git a/spec/routing/admin_routing_spec.rb b/spec/routing/admin_routing_spec.rb
index 60261c7ae71..fb26bf98d0f 100644
--- a/spec/routing/admin_routing_spec.rb
+++ b/spec/routing/admin_routing_spec.rb
@@ -78,14 +78,6 @@ describe Admin::ProjectsController, "routing" do
get("/admin/projects").should route_to('admin/projects#index')
end
- it "to #create" do
- post("/admin/projects").should route_to('admin/projects#create')
- end
-
- it "to #new" do
- get("/admin/projects/new").should route_to('admin/projects#new')
- end
-
it "to #edit" do
get("/admin/projects/gitlab/edit").should route_to('admin/projects#edit', id: 'gitlab')
end
diff --git a/spec/routing/project_routing_spec.rb b/spec/routing/project_routing_spec.rb
index dc687d2a7ac..25db2f91d4d 100644
--- a/spec/routing/project_routing_spec.rb
+++ b/spec/routing/project_routing_spec.rb
@@ -208,7 +208,6 @@ end
# diffs_project_merge_request GET /:project_id/merge_requests/:id/diffs(.:format) merge_requests#diffs
# automerge_project_merge_request GET /:project_id/merge_requests/:id/automerge(.:format) merge_requests#automerge
# automerge_check_project_merge_request GET /:project_id/merge_requests/:id/automerge_check(.:format) merge_requests#automerge_check
-# raw_project_merge_request GET /:project_id/merge_requests/:id/raw(.:format) merge_requests#raw
# branch_from_project_merge_requests GET /:project_id/merge_requests/branch_from(.:format) merge_requests#branch_from
# branch_to_project_merge_requests GET /:project_id/merge_requests/branch_to(.:format) merge_requests#branch_to
# project_merge_requests GET /:project_id/merge_requests(.:format) merge_requests#index
@@ -231,10 +230,6 @@ describe MergeRequestsController, "routing" do
get("/gitlabhq/merge_requests/1/automerge_check").should route_to('merge_requests#automerge_check', project_id: 'gitlabhq', id: '1')
end
- it "to #raw" do
- get("/gitlabhq/merge_requests/1/raw").should route_to('merge_requests#raw', project_id: 'gitlabhq', id: '1')
- end
-
it "to #branch_from" do
get("/gitlabhq/merge_requests/branch_from").should route_to('merge_requests#branch_from', project_id: 'gitlabhq')
end
@@ -243,6 +238,11 @@ describe MergeRequestsController, "routing" do
get("/gitlabhq/merge_requests/branch_to").should route_to('merge_requests#branch_to', project_id: 'gitlabhq')
end
+ it "to #show" do
+ get("/gitlabhq/merge_requests/1.diff").should route_to('merge_requests#show', project_id: 'gitlabhq', id: '1', format: 'diff')
+ get("/gitlabhq/merge_requests/1.patch").should route_to('merge_requests#show', project_id: 'gitlabhq', id: '1', format: 'patch')
+ end
+
it_behaves_like "RESTful project resources" do
let(:controller) { 'merge_requests' }
end
@@ -285,6 +285,7 @@ end
describe CommitController, "routing" do
it "to #show" do
get("/gitlabhq/commit/4246fb").should route_to('commit#show', project_id: 'gitlabhq', id: '4246fb')
+ get("/gitlabhq/commit/4246fb.diff").should route_to('commit#show', project_id: 'gitlabhq', id: '4246fb', format: 'diff')
get("/gitlabhq/commit/4246fb.patch").should route_to('commit#show', project_id: 'gitlabhq', id: '4246fb', format: 'patch')
get("/gitlabhq/commit/4246fbd13872934f72a8fd0d6fb1317b47b59cb5").should route_to('commit#show', project_id: 'gitlabhq', id: '4246fbd13872934f72a8fd0d6fb1317b47b59cb5')
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index ace5ca00cc1..7728b1e9d84 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -40,5 +40,10 @@ RSpec.configure do |config|
# !!! Observers disabled by default in tests
ActiveRecord::Base.observers.disable(:all)
# ActiveRecord::Base.observers.enable(:all)
+
+ # Use tmp dir for FS manipulations
+ Gitlab.config.stub(git_base_path: Rails.root.join('tmp', 'test-git-base-path'))
+ FileUtils.rm_rf Gitlab.config.git_base_path
+ FileUtils.mkdir_p Gitlab.config.git_base_path
end
end
diff --git a/spec/workers/post_receive_spec.rb b/spec/workers/post_receive_spec.rb
index 22e3e0d0fe5..bbc91f4474a 100644
--- a/spec/workers/post_receive_spec.rb
+++ b/spec/workers/post_receive_spec.rb
@@ -27,16 +27,12 @@ describe PostReceive do
PostReceive.perform(project.path, 'sha-old', 'sha-new', 'refs/heads/master', key_id).should be_false
end
- it "asks the project to execute web hooks" do
+ it "asks the project to trigger all hooks" do
Project.stub(find_by_path: project)
- project.should_receive(:execute_hooks).with('sha-old', 'sha-new', 'refs/heads/master', project.owner)
-
- PostReceive.perform(project.path, 'sha-old', 'sha-new', 'refs/heads/master', key_id)
- end
-
- it "asks the project to observe push/create event data" do
- Project.stub(find_by_path: project)
- project.should_receive(:observe_push).with('sha-old', 'sha-new', 'refs/heads/master', project.owner)
+ project.should_receive(:execute_hooks)
+ project.should_receive(:execute_services)
+ project.should_receive(:update_merge_requests)
+ project.should_receive(:observe_push)
PostReceive.perform(project.path, 'sha-old', 'sha-new', 'refs/heads/master', key_id)
end