diff options
Diffstat (limited to 'spec')
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('&') + expect(response.body).to_not include('>') + expect(response.body).to_not include('<') + expect(response.body).to_not include('"') + 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('&') + expect(response.body).to_not include('>') + expect(response.body).to_not include('<') + expect(response.body).to_not include('"') + 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 |