diff options
Diffstat (limited to 'spec/controllers')
21 files changed, 0 insertions, 1725 deletions
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb deleted file mode 100644 index 186239d3096..00000000000 --- a/spec/controllers/application_controller_spec.rb +++ /dev/null @@ -1,33 +0,0 @@ -require 'spec_helper' - -describe ApplicationController do - describe '#check_password_expiration' do - let(:user) { create(:user) } - let(:controller) { ApplicationController.new } - - it 'should redirect if the user is over their password expiry' do - user.password_expires_at = Time.new(2002) - expect(user.ldap_user?).to be_falsey - allow(controller).to receive(:current_user).and_return(user) - expect(controller).to receive(:redirect_to) - expect(controller).to receive(:new_profile_password_path) - controller.send(:check_password_expiration) - end - - it 'should not redirect if the user is under their password expiry' do - user.password_expires_at = Time.now + 20010101 - expect(user.ldap_user?).to be_falsey - allow(controller).to receive(:current_user).and_return(user) - expect(controller).not_to receive(:redirect_to) - controller.send(:check_password_expiration) - end - - it 'should not redirect if the user is over their password expiry but they are an ldap user' do - user.password_expires_at = Time.new(2002) - allow(user).to receive(:ldap_user?).and_return(true) - allow(controller).to receive(:current_user).and_return(user) - expect(controller).not_to receive(:redirect_to) - controller.send(:check_password_expiration) - end - end -end diff --git a/spec/controllers/autocomplete_controller_spec.rb b/spec/controllers/autocomplete_controller_spec.rb deleted file mode 100644 index a0909cec3bd..00000000000 --- a/spec/controllers/autocomplete_controller_spec.rb +++ /dev/null @@ -1,51 +0,0 @@ -require 'spec_helper' - -describe AutocompleteController do - let!(:project) { create(:project) } - let!(:user) { create(:user) } - let!(:user2) { create(:user) } - - context 'project members' do - before do - sign_in(user) - project.team << [user, :master] - - get(:users, project_id: project.id) - end - - let(:body) { JSON.parse(response.body) } - - it { body.should be_kind_of(Array) } - it { body.size.should eq(1) } - it { body.first["username"].should == user.username } - end - - context 'group members' do - let(:group) { create(:group) } - - before do - sign_in(user) - group.add_owner(user) - - get(:users, group_id: group.id) - end - - let(:body) { JSON.parse(response.body) } - - it { body.should be_kind_of(Array) } - it { body.size.should eq(1) } - it { body.first["username"].should == user.username } - end - - context 'all users' do - before do - sign_in(user) - get(:users) - end - - let(:body) { JSON.parse(response.body) } - - it { body.should be_kind_of(Array) } - it { body.size.should eq(User.count) } - end -end diff --git a/spec/controllers/blob_controller_spec.rb b/spec/controllers/blob_controller_spec.rb deleted file mode 100644 index a1102f28340..00000000000 --- a/spec/controllers/blob_controller_spec.rb +++ /dev/null @@ -1,58 +0,0 @@ -require 'spec_helper' - -describe Projects::BlobController do - let(:project) { create(:project) } - let(:user) { create(:user) } - - before do - sign_in(user) - - project.team << [user, :master] - - allow(project).to receive(:branches).and_return(['master', 'foo/bar/baz']) - allow(project).to receive(:tags).and_return(['v1.0.0', 'v2.0.0']) - controller.instance_variable_set(:@project, project) - end - - describe "GET show" do - render_views - - before do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: id) - end - - context "valid branch, valid file" do - let(:id) { 'master/README.md' } - it { is_expected.to respond_with(:success) } - end - - context "valid branch, invalid file" do - let(:id) { 'master/invalid-path.rb' } - it { is_expected.to respond_with(:not_found) } - end - - context "invalid branch, valid file" do - let(:id) { 'invalid-branch/README.md' } - it { is_expected.to respond_with(:not_found) } - end - end - - describe 'GET show with tree path' do - render_views - - before do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: id) - controller.instance_variable_set(:@blob, nil) - end - - context 'redirect to tree' do - let(:id) { 'markdown/doc' } - it 'redirects' do - expect(subject). - to redirect_to("/#{project.path_with_namespace}/tree/markdown/doc") - end - end - end -end diff --git a/spec/controllers/branches_controller_spec.rb b/spec/controllers/branches_controller_spec.rb deleted file mode 100644 index 51397382cfb..00000000000 --- a/spec/controllers/branches_controller_spec.rb +++ /dev/null @@ -1,58 +0,0 @@ -require 'spec_helper' - -describe Projects::BranchesController do - let(:project) { create(:project) } - let(:user) { create(:user) } - - before do - sign_in(user) - - project.team << [user, :master] - - allow(project).to receive(:branches).and_return(['master', 'foo/bar/baz']) - allow(project).to receive(:tags).and_return(['v1.0.0', 'v2.0.0']) - controller.instance_variable_set(:@project, project) - end - - describe "POST create" do - render_views - - before { - post :create, - namespace_id: project.namespace.to_param, - project_id: project.to_param, - branch_name: branch, - ref: ref - } - - context "valid branch name, valid source" do - let(:branch) { "merge_branch" } - let(:ref) { "master" } - it 'redirects' do - expect(subject). - to redirect_to("/#{project.path_with_namespace}/tree/merge_branch") - end - end - - context "invalid branch name, valid ref" do - let(:branch) { "<script>alert('merge');</script>" } - let(:ref) { "master" } - it 'redirects' do - expect(subject). - to redirect_to("/#{project.path_with_namespace}/tree/alert('merge');") - end - end - - context "valid branch name, invalid ref" do - let(:branch) { "merge_branch" } - let(:ref) { "<script>alert('ref');</script>" } - it { is_expected.to render_template('new') } - end - - context "invalid branch name, invalid ref" do - let(:branch) { "<script>alert('merge');</script>" } - let(:ref) { "<script>alert('ref');</script>" } - it { is_expected.to render_template('new') } - end - end -end diff --git a/spec/controllers/commit_controller_spec.rb b/spec/controllers/commit_controller_spec.rb deleted file mode 100644 index 3394a1f863f..00000000000 --- a/spec/controllers/commit_controller_spec.rb +++ /dev/null @@ -1,91 +0,0 @@ -require 'spec_helper' - -describe Projects::CommitController do - let(:project) { create(:project) } - let(:user) { create(:user) } - let(:commit) { project.repository.commit("master") } - - before do - sign_in(user) - project.team << [user, :master] - end - - describe "#show" do - shared_examples "export as" do |format| - it "should generally work" do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: commit.id, format: format) - - expect(response).to be_success - end - - it "should generate it" do - expect_any_instance_of(Commit).to receive(:"to_#{format}") - - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: commit.id, format: format) - end - - it "should render it" do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: commit.id, format: format) - - expect(response.body).to eq(commit.send(:"to_#{format}")) - end - - it "should not escape Html" do - allow_any_instance_of(Commit).to receive(:"to_#{format}"). - and_return('HTML entities &<>" ') - - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, 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, namespace_id: project.namespace.to_param, - project_id: project.to_param, 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, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: commit.id, format: format) - - expect(response.body).to start_with("From #{commit.id}") - end - - it "should contain a git diff" do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: commit.id, format: format) - - expect(response.body).to match(/^diff --git/) - end - end - end - - describe "#branches" do - it "contains branch and tags information" do - get(:branches, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: commit.id) - - expect(assigns(:branches)).to include("master", "feature_conflict") - expect(assigns(:tags)).to include("v1.1.0") - end - end -end diff --git a/spec/controllers/commits_controller_spec.rb b/spec/controllers/commits_controller_spec.rb deleted file mode 100644 index 2184b35152e..00000000000 --- a/spec/controllers/commits_controller_spec.rb +++ /dev/null @@ -1,22 +0,0 @@ -require 'spec_helper' - -describe Projects::CommitsController do - let(:project) { create(:project) } - let(:user) { create(:user) } - - before do - sign_in(user) - project.team << [user, :master] - end - - describe "GET show" do - context "as atom feed" do - it "should render as atom" do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: "master", format: "atom") - expect(response).to be_success - expect(response.content_type).to eq('application/atom+xml') - end - end - end -end diff --git a/spec/controllers/import/bitbucket_controller_spec.rb b/spec/controllers/import/bitbucket_controller_spec.rb deleted file mode 100644 index c31563e6d77..00000000000 --- a/spec/controllers/import/bitbucket_controller_spec.rb +++ /dev/null @@ -1,163 +0,0 @@ -require 'spec_helper' - -describe Import::BitbucketController do - let(:user) { create(:user, bitbucket_access_token: 'asd123', bitbucket_access_token_secret: "sekret") } - - before do - sign_in(user) - controller.stub(:bitbucket_import_enabled?).and_return(true) - end - - describe "GET callback" do - before do - session[:oauth_request_token] = {} - end - - it "updates access token" do - token = "asdasd12345" - secret = "sekrettt" - access_token = double(token: token, secret: secret) - Gitlab::BitbucketImport::Client.any_instance.stub(:get_token).and_return(access_token) - Gitlab.config.omniauth.providers << OpenStruct.new(app_id: "asd123", app_secret: "asd123", name: "bitbucket") - - get :callback - - expect(user.reload.bitbucket_access_token).to eq(token) - expect(user.reload.bitbucket_access_token_secret).to eq(secret) - expect(controller).to redirect_to(status_import_bitbucket_url) - end - end - - describe "GET status" do - before do - @repo = OpenStruct.new(slug: 'vim', owner: 'asd') - end - - it "assigns variables" do - @project = create(:project, import_type: 'bitbucket', creator_id: user.id) - controller.stub_chain(:client, :projects).and_return([@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([@repo]) - end - - it "does not show already added project" do - @project = create(:project, import_type: 'bitbucket', creator_id: user.id, import_source: 'asd/vim') - controller.stub_chain(:client, :projects).and_return([@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([]) - end - end - - describe "POST create" do - let(:bitbucket_username) { user.username } - - let(:bitbucket_user) { - { - user: { - username: bitbucket_username - } - }.with_indifferent_access - } - - let(:bitbucket_repo) { - { - slug: "vim", - owner: bitbucket_username - }.with_indifferent_access - } - - before do - allow(Gitlab::BitbucketImport::KeyAdder). - to receive(:new).with(bitbucket_repo, user). - and_return(double(execute: true)) - - controller.stub_chain(:client, :user).and_return(bitbucket_user) - controller.stub_chain(:client, :project).and_return(bitbucket_repo) - end - - context "when the repository owner is the Bitbucket user" do - context "when the Bitbucket user and GitLab user's usernames match" do - it "takes the current user's namespace" do - expect(Gitlab::BitbucketImport::ProjectCreator). - to receive(:new).with(bitbucket_repo, user.namespace, user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - - context "when the Bitbucket user and GitLab user's usernames don't match" do - let(:bitbucket_username) { "someone_else" } - - it "takes the current user's namespace" do - expect(Gitlab::BitbucketImport::ProjectCreator). - to receive(:new).with(bitbucket_repo, user.namespace, user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - end - - context "when the repository owner is not the Bitbucket user" do - let(:other_username) { "someone_else" } - - before do - bitbucket_repo["owner"] = other_username - end - - context "when a namespace with the Bitbucket user's username already exists" do - let!(:existing_namespace) { create(:namespace, name: other_username, owner: user) } - - context "when the namespace is owned by the GitLab user" do - it "takes the existing namespace" do - expect(Gitlab::BitbucketImport::ProjectCreator). - to receive(:new).with(bitbucket_repo, existing_namespace, user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - - context "when the namespace is not owned by the GitLab user" do - before do - existing_namespace.owner = create(:user) - existing_namespace.save - end - - it "doesn't create a project" do - expect(Gitlab::BitbucketImport::ProjectCreator). - not_to receive(:new) - - post :create, format: :js - end - end - end - - context "when a namespace with the Bitbucket user's username doesn't exist" do - it "creates the namespace" do - expect(Gitlab::BitbucketImport::ProjectCreator). - to receive(:new).and_return(double(execute: true)) - - post :create, format: :js - - expect(Namespace.where(name: other_username).first).not_to be_nil - end - - it "takes the new namespace" do - expect(Gitlab::BitbucketImport::ProjectCreator). - to receive(:new).with(bitbucket_repo, an_instance_of(Group), user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - end - end -end diff --git a/spec/controllers/import/github_controller_spec.rb b/spec/controllers/import/github_controller_spec.rb deleted file mode 100644 index 3d3846b2e3a..00000000000 --- a/spec/controllers/import/github_controller_spec.rb +++ /dev/null @@ -1,153 +0,0 @@ -require 'spec_helper' - -describe Import::GithubController do - let(:user) { create(:user, github_access_token: 'asd123') } - - before do - sign_in(user) - controller.stub(:github_import_enabled?).and_return(true) - end - - describe "GET callback" do - it "updates access token" do - token = "asdasd12345" - allow_any_instance_of(Gitlab::GithubImport::Client). - to receive(:get_token).and_return(token) - Gitlab.config.omniauth.providers << OpenStruct.new(app_id: 'asd123', - app_secret: 'asd123', - name: 'github') - - get :callback - - expect(user.reload.github_access_token).to eq(token) - expect(controller).to redirect_to(status_import_github_url) - end - end - - describe "GET status" do - before do - @repo = OpenStruct.new(login: 'vim', full_name: 'asd/vim') - @org = OpenStruct.new(login: 'company') - @org_repo = OpenStruct.new(login: 'company', full_name: 'company/repo') - end - - it "assigns variables" do - @project = create(:project, import_type: 'github', creator_id: user.id) - controller.stub_chain(:client, :repos).and_return([@repo]) - controller.stub_chain(:client, :orgs).and_return([@org]) - controller.stub_chain(:client, :org_repos).with(@org.login).and_return([@org_repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([@repo, @org_repo]) - end - - it "does not show already added project" do - @project = create(:project, import_type: 'github', creator_id: user.id, import_source: 'asd/vim') - controller.stub_chain(:client, :repos).and_return([@repo]) - controller.stub_chain(:client, :orgs).and_return([]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([]) - end - end - - describe "POST create" do - let(:github_username) { user.username } - - let(:github_user) { - OpenStruct.new(login: github_username) - } - - let(:github_repo) { - OpenStruct.new(name: 'vim', full_name: "#{github_username}/vim", owner: OpenStruct.new(login: github_username)) - } - - before do - controller.stub_chain(:client, :user).and_return(github_user) - controller.stub_chain(:client, :repo).and_return(github_repo) - end - - context "when the repository owner is the GitHub user" do - context "when the GitHub user and GitLab user's usernames match" do - it "takes the current user's namespace" do - expect(Gitlab::GithubImport::ProjectCreator). - to receive(:new).with(github_repo, user.namespace, user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - - context "when the GitHub user and GitLab user's usernames don't match" do - let(:github_username) { "someone_else" } - - it "takes the current user's namespace" do - expect(Gitlab::GithubImport::ProjectCreator). - to receive(:new).with(github_repo, user.namespace, user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - end - - context "when the repository owner is not the GitHub user" do - let(:other_username) { "someone_else" } - - before do - github_repo.owner = OpenStruct.new(login: other_username) - end - - context "when a namespace with the GitHub user's username already exists" do - let!(:existing_namespace) { create(:namespace, name: other_username, owner: user) } - - context "when the namespace is owned by the GitLab user" do - it "takes the existing namespace" do - expect(Gitlab::GithubImport::ProjectCreator). - to receive(:new).with(github_repo, existing_namespace, user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - - context "when the namespace is not owned by the GitLab user" do - before do - existing_namespace.owner = create(:user) - existing_namespace.save - end - - it "doesn't create a project" do - expect(Gitlab::GithubImport::ProjectCreator). - not_to receive(:new) - - post :create, format: :js - end - end - end - - context "when a namespace with the GitHub user's username doesn't exist" do - it "creates the namespace" do - expect(Gitlab::GithubImport::ProjectCreator). - to receive(:new).and_return(double(execute: true)) - - post :create, format: :js - - expect(Namespace.where(name: other_username).first).not_to be_nil - end - - it "takes the new namespace" do - expect(Gitlab::GithubImport::ProjectCreator). - to receive(:new).with(github_repo, an_instance_of(Group), user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - end - end -end diff --git a/spec/controllers/import/gitlab_controller_spec.rb b/spec/controllers/import/gitlab_controller_spec.rb deleted file mode 100644 index 112e51d431e..00000000000 --- a/spec/controllers/import/gitlab_controller_spec.rb +++ /dev/null @@ -1,152 +0,0 @@ -require 'spec_helper' - -describe Import::GitlabController do - let(:user) { create(:user, gitlab_access_token: 'asd123') } - - before do - sign_in(user) - controller.stub(:gitlab_import_enabled?).and_return(true) - end - - describe "GET callback" do - it "updates access token" do - token = "asdasd12345" - Gitlab::GitlabImport::Client.any_instance.stub_chain(:client, :auth_code, :get_token, :token).and_return(token) - Gitlab.config.omniauth.providers << OpenStruct.new(app_id: "asd123", app_secret: "asd123", name: "gitlab") - - get :callback - - expect(user.reload.gitlab_access_token).to eq(token) - expect(controller).to redirect_to(status_import_gitlab_url) - end - end - - describe "GET status" do - before do - @repo = OpenStruct.new(path: 'vim', path_with_namespace: 'asd/vim') - end - - it "assigns variables" do - @project = create(:project, import_type: 'gitlab', creator_id: user.id) - controller.stub_chain(:client, :projects).and_return([@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([@repo]) - end - - it "does not show already added project" do - @project = create(:project, import_type: 'gitlab', creator_id: user.id, import_source: 'asd/vim') - controller.stub_chain(:client, :projects).and_return([@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([]) - end - end - - describe "POST create" do - let(:gitlab_username) { user.username } - - let(:gitlab_user) { - { - username: gitlab_username - }.with_indifferent_access - } - - let(:gitlab_repo) { - { - path: 'vim', - path_with_namespace: "#{gitlab_username}/vim", - owner: { name: gitlab_username }, - namespace: { path: gitlab_username } - }.with_indifferent_access - } - - before do - controller.stub_chain(:client, :user).and_return(gitlab_user) - controller.stub_chain(:client, :project).and_return(gitlab_repo) - end - - context "when the repository owner is the GitLab.com user" do - context "when the GitLab.com user and GitLab server user's usernames match" do - it "takes the current user's namespace" do - expect(Gitlab::GitlabImport::ProjectCreator). - to receive(:new).with(gitlab_repo, user.namespace, user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - - context "when the GitLab.com user and GitLab server user's usernames don't match" do - let(:gitlab_username) { "someone_else" } - - it "takes the current user's namespace" do - expect(Gitlab::GitlabImport::ProjectCreator). - to receive(:new).with(gitlab_repo, user.namespace, user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - end - - context "when the repository owner is not the GitLab.com user" do - let(:other_username) { "someone_else" } - - before do - gitlab_repo["namespace"]["path"] = other_username - end - - context "when a namespace with the GitLab.com user's username already exists" do - let!(:existing_namespace) { create(:namespace, name: other_username, owner: user) } - - context "when the namespace is owned by the GitLab server user" do - it "takes the existing namespace" do - expect(Gitlab::GitlabImport::ProjectCreator). - to receive(:new).with(gitlab_repo, existing_namespace, user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - - context "when the namespace is not owned by the GitLab server user" do - before do - existing_namespace.owner = create(:user) - existing_namespace.save - end - - it "doesn't create a project" do - expect(Gitlab::GitlabImport::ProjectCreator). - not_to receive(:new) - - post :create, format: :js - end - end - end - - context "when a namespace with the GitLab.com user's username doesn't exist" do - it "creates the namespace" do - expect(Gitlab::GitlabImport::ProjectCreator). - to receive(:new).and_return(double(execute: true)) - - post :create, format: :js - - expect(Namespace.where(name: other_username).first).not_to be_nil - end - - it "takes the new namespace" do - expect(Gitlab::GitlabImport::ProjectCreator). - to receive(:new).with(gitlab_repo, an_instance_of(Group), user). - and_return(double(execute: true)) - - post :create, format: :js - end - end - end - end -end diff --git a/spec/controllers/import/gitorious_controller_spec.rb b/spec/controllers/import/gitorious_controller_spec.rb deleted file mode 100644 index 07c9484bf1a..00000000000 --- a/spec/controllers/import/gitorious_controller_spec.rb +++ /dev/null @@ -1,67 +0,0 @@ -require 'spec_helper' - -describe Import::GitoriousController do - let(:user) { create(:user) } - - before do - sign_in(user) - end - - describe "GET new" do - it "redirects to import endpoint on gitorious.org" do - get :new - - expect(controller).to redirect_to("https://gitorious.org/gitlab-import?callback_url=http://test.host/import/gitorious/callback") - end - end - - describe "GET callback" do - it "stores repo list in session" do - get :callback, repos: 'foo/bar,baz/qux' - - expect(session[:gitorious_repos]).to eq('foo/bar,baz/qux') - end - end - - describe "GET status" do - before do - @repo = OpenStruct.new(full_name: 'asd/vim') - end - - it "assigns variables" do - @project = create(:project, import_type: 'gitorious', creator_id: user.id) - controller.stub_chain(:client, :repos).and_return([@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([@repo]) - end - - it "does not show already added project" do - @project = create(:project, import_type: 'gitorious', creator_id: user.id, import_source: 'asd/vim') - controller.stub_chain(:client, :repos).and_return([@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([]) - end - end - - describe "POST create" do - before do - @repo = Gitlab::GitoriousImport::Repository.new('asd/vim') - end - - it "takes already existing namespace" do - namespace = create(:namespace, name: "asd", owner: user) - expect(Gitlab::GitoriousImport::ProjectCreator). - to receive(:new).with(@repo, namespace, user). - and_return(double(execute: true)) - controller.stub_chain(:client, :repo).and_return(@repo) - - post :create, format: :js - end - end -end diff --git a/spec/controllers/import/google_code_controller_spec.rb b/spec/controllers/import/google_code_controller_spec.rb deleted file mode 100644 index 037cddb4600..00000000000 --- a/spec/controllers/import/google_code_controller_spec.rb +++ /dev/null @@ -1,47 +0,0 @@ -require 'spec_helper' - -describe Import::GoogleCodeController do - let(:user) { create(:user) } - let(:dump_file) { fixture_file_upload(Rails.root + 'spec/fixtures/GoogleCodeProjectHosting.json', 'application/json') } - - before do - sign_in(user) - end - - describe "POST callback" do - it "stores Google Takeout dump list in session" do - post :callback, dump_file: dump_file - - expect(session[:google_code_dump]).to be_a(Hash) - expect(session[:google_code_dump]["kind"]).to eq("projecthosting#user") - expect(session[:google_code_dump]).to have_key("projects") - end - end - - describe "GET status" do - before do - @repo = OpenStruct.new(name: 'vim') - controller.stub_chain(:client, :valid?).and_return(true) - end - - it "assigns variables" do - @project = create(:project, import_type: 'google_code', creator_id: user.id) - controller.stub_chain(:client, :repos).and_return([@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([@repo]) - end - - it "does not show already added project" do - @project = create(:project, import_type: 'google_code', creator_id: user.id, import_source: 'vim') - controller.stub_chain(:client, :repos).and_return([@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([]) - end - end -end diff --git a/spec/controllers/merge_requests_controller_spec.rb b/spec/controllers/merge_requests_controller_spec.rb deleted file mode 100644 index d6f56ed33d6..00000000000 --- a/spec/controllers/merge_requests_controller_spec.rb +++ /dev/null @@ -1,81 +0,0 @@ -require 'spec_helper' - -describe Projects::MergeRequestsController do - let(:project) { create(:project) } - let(:user) { create(:user) } - let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project) } - - before do - sign_in(user) - project.team << [user, :master] - end - - describe "#show" do - shared_examples "export merge as" do |format| - it "should generally work" do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: merge_request.iid, format: format) - - expect(response).to be_success - end - - it "should generate it" do - expect_any_instance_of(MergeRequest).to receive(:"to_#{format}") - - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: merge_request.iid, format: format) - end - - it "should render it" do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: merge_request.iid, format: format) - - expect(response.body).to eq((merge_request.send(:"to_#{format}",user)).to_s) - end - - it "should not escape Html" do - allow_any_instance_of(MergeRequest).to receive(:"to_#{format}"). - and_return('HTML entities &<>" ') - - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: merge_request.iid, 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 merge as", :diff - let(:format) { :diff } - - it "should really only be a git diff" do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: merge_request.iid, format: format) - - expect(response.body).to start_with("diff --git") - end - end - - describe "as patch" do - include_examples "export merge as", :patch - let(:format) { :patch } - - it "should really be a git email patch with commit" do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: merge_request.iid, format: format) - - expect(response.body[0..100]).to start_with("From #{merge_request.commits.last.id}") - end - - it "should contain git diffs" do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: merge_request.iid, format: format) - - expect(response.body).to match(/^diff --git/) - end - end - end -end diff --git a/spec/controllers/namespaces_controller_spec.rb b/spec/controllers/namespaces_controller_spec.rb deleted file mode 100644 index 9c8619722cd..00000000000 --- a/spec/controllers/namespaces_controller_spec.rb +++ /dev/null @@ -1,121 +0,0 @@ -require 'spec_helper' - -describe NamespacesController do - let!(:user) { create(:user, avatar: fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "image/png")) } - - describe "GET show" do - context "when the namespace belongs to a user" do - let!(:other_user) { create(:user) } - - it "redirects to the user's page" do - get :show, id: other_user.username - - expect(response).to redirect_to(user_path(other_user)) - end - end - - context "when the namespace belongs to a group" do - let!(:group) { create(:group) } - let!(:project) { create(:project, namespace: group) } - - context "when the group has public projects" do - before do - project.update_attribute(:visibility_level, Project::PUBLIC) - end - - context "when not signed in" do - it "redirects to the group's page" do - get :show, id: group.path - - expect(response).to redirect_to(group_path(group)) - end - end - - context "when signed in" do - before do - sign_in(user) - end - - it "redirects to the group's page" do - get :show, id: group.path - - expect(response).to redirect_to(group_path(group)) - end - end - end - - context "when the project doesn't have public projects" do - context "when not signed in" do - it "redirects to the sign in page" do - get :show, id: group.path - - expect(response).to redirect_to(new_user_session_path) - end - end - - context "when signed in" do - before do - sign_in(user) - end - - context "when the user has access to the project" do - before do - project.team << [user, :master] - end - - context "when the user is blocked" do - before do - user.block - project.team << [user, :master] - end - - it "redirects to the sign in page" do - get :show, id: group.path - - expect(response).to redirect_to(new_user_session_path) - end - end - - context "when the user isn't blocked" do - it "redirects to the group's page" do - get :show, id: group.path - - expect(response).to redirect_to(group_path(group)) - end - end - end - - context "when the user doesn't have access to the project" do - it "responds with status 404" do - get :show, id: group.path - - expect(response.status).to eq(404) - end - end - end - end - end - - context "when the namespace doesn't exist" do - context "when signed in" do - before do - sign_in(user) - end - - it "responds with status 404" do - get :show, id: "doesntexist" - - expect(response.status).to eq(404) - end - end - - context "when not signed in" do - it "redirects to the sign in page" do - get :show, id: "doesntexist" - - expect(response).to redirect_to(new_user_session_path) - end - end - end - end -end diff --git a/spec/controllers/profile_keys_controller_spec.rb b/spec/controllers/profile_keys_controller_spec.rb deleted file mode 100644 index 593d3e9eb56..00000000000 --- a/spec/controllers/profile_keys_controller_spec.rb +++ /dev/null @@ -1,59 +0,0 @@ -require 'spec_helper' - -describe Profiles::KeysController do - let(:user) { create(:user) } - - describe "#get_keys" do - describe "non existant user" do - it "should generally not work" do - get :get_keys, username: 'not-existent' - - expect(response).not_to be_success - end - end - - describe "user with no keys" do - it "should generally work" do - get :get_keys, username: user.username - - expect(response).to be_success - end - - it "should render all keys separated with a new line" do - get :get_keys, username: user.username - - expect(response.body).to eq("") - end - - it "should respond with text/plain content type" do - get :get_keys, username: user.username - expect(response.content_type).to eq("text/plain") - end - end - - describe "user with keys" do - before do - user.keys << create(:key) - user.keys << create(:another_key) - end - - it "should generally work" do - get :get_keys, username: user.username - - expect(response).to be_success - end - - it "should render all keys separated with a new line" do - get :get_keys, username: user.username - - expect(response.body).not_to eq("") - expect(response.body).to eq(user.all_ssh_keys.join("\n")) - end - - it "should respond with text/plain content type" do - get :get_keys, username: user.username - expect(response.content_type).to eq("text/plain") - end - end - end -end diff --git a/spec/controllers/projects/protected_branches_controller_spec.rb b/spec/controllers/projects/protected_branches_controller_spec.rb deleted file mode 100644 index 596d8d34b7c..00000000000 --- a/spec/controllers/projects/protected_branches_controller_spec.rb +++ /dev/null @@ -1,10 +0,0 @@ -require('spec_helper') - -describe Projects::ProtectedBranchesController do - describe "GET #index" do - let(:project) { create(:project_empty_repo, :public) } - it "redirect empty repo to projects page" do - get(:index, namespace_id: project.namespace.to_param, project_id: project.to_param) - end - end -end diff --git a/spec/controllers/projects/refs_controller_spec.rb b/spec/controllers/projects/refs_controller_spec.rb deleted file mode 100644 index c254ab7cb6e..00000000000 --- a/spec/controllers/projects/refs_controller_spec.rb +++ /dev/null @@ -1,41 +0,0 @@ -require 'spec_helper' - -describe Projects::RefsController do - let(:project) { create(:project) } - let(:user) { create(:user) } - - before do - sign_in(user) - project.team << [user, :developer] - end - - describe 'GET #logs_tree' do - def default_get(format = :html) - get :logs_tree, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: 'master', - path: 'foo/bar/baz.html', format: format - end - - def xhr_get(format = :html) - xhr :get, :logs_tree, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: 'master', - path: 'foo/bar/baz.html', format: format - end - - it 'never throws MissingTemplate' do - expect { default_get }.not_to raise_error - expect { xhr_get }.not_to raise_error - end - - it 'renders 404 for non-JS requests' do - xhr_get - - expect(response).to be_not_found - end - - it 'renders JS' do - xhr_get(:js) - expect(response).to be_success - end - end -end diff --git a/spec/controllers/projects/repositories_controller_spec.rb b/spec/controllers/projects/repositories_controller_spec.rb deleted file mode 100644 index 91856ed0cc0..00000000000 --- a/spec/controllers/projects/repositories_controller_spec.rb +++ /dev/null @@ -1,65 +0,0 @@ -require "spec_helper" - -describe Projects::RepositoriesController do - let(:project) { create(:project) } - let(:user) { create(:user) } - - describe "GET archive" do - before do - sign_in(user) - project.team << [user, :developer] - - allow(ArchiveRepositoryService).to receive(:new).and_return(service) - end - - let(:service) { ArchiveRepositoryService.new(project, "master", "zip") } - - it "executes ArchiveRepositoryService" do - expect(ArchiveRepositoryService).to receive(:new).with(project, "master", "zip") - expect(service).to receive(:execute) - - get :archive, namespace_id: project.namespace.path, project_id: project.path, ref: "master", format: "zip" - end - - context "when the service raises an error" do - - before do - allow(service).to receive(:execute).and_raise("Archive failed") - end - - it "renders Not Found" do - get :archive, namespace_id: project.namespace.path, project_id: project.path, ref: "master", format: "zip" - - expect(response.status).to eq(404) - end - end - - context "when the service doesn't return a path" do - - before do - allow(service).to receive(:execute).and_return(nil) - end - - it "reloads the page" do - get :archive, namespace_id: project.namespace.path, project_id: project.path, ref: "master", format: "zip" - - expect(response).to redirect_to(archive_namespace_project_repository_path(project.namespace, project, ref: "master", format: "zip")) - end - end - - context "when the service returns a path" do - - let(:path) { Rails.root.join("spec/fixtures/dk.png").to_s } - - before do - allow(service).to receive(:execute).and_return(path) - end - - it "sends the file" do - get :archive, namespace_id: project.namespace.path, project_id: project.path, ref: "master", format: "zip" - - expect(response.body).to eq(File.binread(path)) - end - end - end -end diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb deleted file mode 100644 index a1b82a32150..00000000000 --- a/spec/controllers/projects_controller_spec.rb +++ /dev/null @@ -1,47 +0,0 @@ -require('spec_helper') - -describe ProjectsController do - let(:project) { create(:project) } - let(:public_project) { create(:project, :public) } - let(:user) { create(:user) } - let(:jpg) { fixture_file_upload(Rails.root + 'spec/fixtures/rails_sample.jpg', 'image/jpg') } - let(:txt) { fixture_file_upload(Rails.root + 'spec/fixtures/doc_sample.txt', 'text/plain') } - - describe "GET show" do - - context "when requested by `go get`" do - render_views - - it "renders the go-import meta tag" do - get :show, "go-get" => "1", namespace_id: "bogus_namespace", id: "bogus_project" - - expect(response.body).to include("name='go-import'") - - content = "localhost/bogus_namespace/bogus_project git http://localhost/bogus_namespace/bogus_project.git" - expect(response.body).to include("content='#{content}'") - end - end - end - - describe "POST #toggle_star" do - it "toggles star if user is signed in" do - sign_in(user) - expect(user.starred?(public_project)).to be_falsey - post(:toggle_star, namespace_id: public_project.namespace.to_param, - id: public_project.to_param) - expect(user.starred?(public_project)).to be_truthy - post(:toggle_star, namespace_id: public_project.namespace.to_param, - id: public_project.to_param) - expect(user.starred?(public_project)).to be_falsey - end - - it "does nothing if user is not signed in" do - post(:toggle_star, namespace_id: project.namespace.to_param, - id: public_project.to_param) - expect(user.starred?(public_project)).to be_falsey - post(:toggle_star, namespace_id: project.namespace.to_param, - id: public_project.to_param) - expect(user.starred?(public_project)).to be_falsey - end - end -end diff --git a/spec/controllers/tree_controller_spec.rb b/spec/controllers/tree_controller_spec.rb deleted file mode 100644 index 7b219819bbc..00000000000 --- a/spec/controllers/tree_controller_spec.rb +++ /dev/null @@ -1,64 +0,0 @@ -require 'spec_helper' - -describe Projects::TreeController do - let(:project) { create(:project) } - let(:user) { create(:user) } - - before do - sign_in(user) - - project.team << [user, :master] - - allow(project).to receive(:branches).and_return(['master', 'foo/bar/baz']) - allow(project).to receive(:tags).and_return(['v1.0.0', 'v2.0.0']) - controller.instance_variable_set(:@project, project) - end - - describe "GET show" do - # Make sure any errors accessing the tree in our views bubble up to this spec - render_views - - before do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: id) - end - - context "valid branch, no path" do - let(:id) { 'master' } - it { is_expected.to respond_with(:success) } - end - - context "valid branch, valid path" do - let(:id) { 'master/encoding/' } - it { is_expected.to respond_with(:success) } - end - - context "valid branch, invalid path" do - let(:id) { 'master/invalid-path/' } - it { is_expected.to respond_with(:not_found) } - end - - context "invalid branch, valid path" do - let(:id) { 'invalid-branch/encoding/' } - it { is_expected.to respond_with(:not_found) } - end - end - - describe 'GET show with blob path' do - render_views - - before do - get(:show, namespace_id: project.namespace.to_param, - project_id: project.to_param, id: id) - end - - context 'redirect to blob' do - let(:id) { 'master/README.md' } - it 'redirects' do - redirect_url = "/#{project.path_with_namespace}/blob/master/README.md" - expect(subject). - to redirect_to(redirect_url) - end - end - end -end diff --git a/spec/controllers/uploads_controller_spec.rb b/spec/controllers/uploads_controller_spec.rb deleted file mode 100644 index 0f9780356b1..00000000000 --- a/spec/controllers/uploads_controller_spec.rb +++ /dev/null @@ -1,296 +0,0 @@ -require 'spec_helper' - -describe UploadsController do - let!(:user) { create(:user, avatar: fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "image/png")) } - - describe "GET show" do - context "when viewing a user avatar" do - context "when signed in" do - before do - sign_in(user) - end - - context "when the user is blocked" do - before do - user.block - end - - it "redirects to the sign in page" do - get :show, model: "user", mounted_as: "avatar", id: user.id, filename: "image.png" - - expect(response).to redirect_to(new_user_session_path) - end - end - - context "when the user isn't blocked" do - it "responds with status 200" do - get :show, model: "user", mounted_as: "avatar", id: user.id, filename: "image.png" - - expect(response.status).to eq(200) - end - end - end - - context "when not signed in" do - it "responds with status 200" do - get :show, model: "user", mounted_as: "avatar", id: user.id, filename: "image.png" - - expect(response.status).to eq(200) - end - end - end - - context "when viewing a project avatar" do - let!(:project) { create(:project, avatar: fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "image/png")) } - - context "when the project is public" do - before do - project.update_attribute(:visibility_level, Project::PUBLIC) - end - - context "when not signed in" do - it "responds with status 200" do - get :show, model: "project", mounted_as: "avatar", id: project.id, filename: "image.png" - - expect(response.status).to eq(200) - end - end - - context "when signed in" do - before do - sign_in(user) - end - - it "responds with status 200" do - get :show, model: "project", mounted_as: "avatar", id: project.id, filename: "image.png" - - expect(response.status).to eq(200) - end - end - end - - context "when the project is private" do - before do - project.update_attribute(:visibility_level, Project::PRIVATE) - end - - context "when not signed in" do - it "redirects to the sign in page" do - get :show, model: "project", mounted_as: "avatar", id: project.id, filename: "image.png" - - expect(response).to redirect_to(new_user_session_path) - end - end - - context "when signed in" do - before do - sign_in(user) - end - - context "when the user has access to the project" do - before do - project.team << [user, :master] - end - - context "when the user is blocked" do - before do - user.block - project.team << [user, :master] - end - - it "redirects to the sign in page" do - get :show, model: "project", mounted_as: "avatar", id: project.id, filename: "image.png" - - expect(response).to redirect_to(new_user_session_path) - end - end - - context "when the user isn't blocked" do - it "responds with status 200" do - get :show, model: "project", mounted_as: "avatar", id: project.id, filename: "image.png" - - expect(response.status).to eq(200) - end - end - end - - context "when the user doesn't have access to the project" do - it "responds with status 404" do - get :show, model: "project", mounted_as: "avatar", id: project.id, filename: "image.png" - - expect(response.status).to eq(404) - end - end - end - end - end - - context "when viewing a group avatar" do - let!(:group) { create(:group, avatar: fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "image/png")) } - let!(:project) { create(:project, namespace: group) } - - context "when the group has public projects" do - before do - project.update_attribute(:visibility_level, Project::PUBLIC) - end - - context "when not signed in" do - it "responds with status 200" do - get :show, model: "group", mounted_as: "avatar", id: group.id, filename: "image.png" - - expect(response.status).to eq(200) - end - end - - context "when signed in" do - before do - sign_in(user) - end - - it "responds with status 200" do - get :show, model: "group", mounted_as: "avatar", id: group.id, filename: "image.png" - - expect(response.status).to eq(200) - end - end - end - - context "when the project doesn't have public projects" do - context "when not signed in" do - it "redirects to the sign in page" do - get :show, model: "group", mounted_as: "avatar", id: group.id, filename: "image.png" - - expect(response).to redirect_to(new_user_session_path) - end - end - - context "when signed in" do - before do - sign_in(user) - end - - context "when the user has access to the project" do - before do - project.team << [user, :master] - end - - context "when the user is blocked" do - before do - user.block - project.team << [user, :master] - end - - it "redirects to the sign in page" do - get :show, model: "group", mounted_as: "avatar", id: group.id, filename: "image.png" - - expect(response).to redirect_to(new_user_session_path) - end - end - - context "when the user isn't blocked" do - it "responds with status 200" do - get :show, model: "group", mounted_as: "avatar", id: group.id, filename: "image.png" - - expect(response.status).to eq(200) - end - end - end - - context "when the user doesn't have access to the project" do - it "responds with status 404" do - get :show, model: "group", mounted_as: "avatar", id: group.id, filename: "image.png" - - expect(response.status).to eq(404) - end - end - end - end - end - - context "when viewing a note attachment" do - let!(:note) { create(:note, :with_attachment) } - let(:project) { note.project } - - context "when the project is public" do - before do - project.update_attribute(:visibility_level, Project::PUBLIC) - end - - context "when not signed in" do - it "responds with status 200" do - get :show, model: "note", mounted_as: "attachment", id: note.id, filename: "image.png" - - expect(response.status).to eq(200) - end - end - - context "when signed in" do - before do - sign_in(user) - end - - it "responds with status 200" do - get :show, model: "note", mounted_as: "attachment", id: note.id, filename: "image.png" - - expect(response.status).to eq(200) - end - end - end - - context "when the project is private" do - before do - project.update_attribute(:visibility_level, Project::PRIVATE) - end - - context "when not signed in" do - it "redirects to the sign in page" do - get :show, model: "note", mounted_as: "attachment", id: note.id, filename: "image.png" - - expect(response).to redirect_to(new_user_session_path) - end - end - - context "when signed in" do - before do - sign_in(user) - end - - context "when the user has access to the project" do - before do - project.team << [user, :master] - end - - context "when the user is blocked" do - before do - user.block - project.team << [user, :master] - end - - it "redirects to the sign in page" do - get :show, model: "note", mounted_as: "attachment", id: note.id, filename: "image.png" - - expect(response).to redirect_to(new_user_session_path) - end - end - - context "when the user isn't blocked" do - it "responds with status 200" do - get :show, model: "note", mounted_as: "attachment", id: note.id, filename: "image.png" - - expect(response.status).to eq(200) - end - end - end - - context "when the user doesn't have access to the project" do - it "responds with status 404" do - get :show, model: "note", mounted_as: "attachment", id: note.id, filename: "image.png" - - expect(response.status).to eq(404) - end - end - end - end - end - end -end diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb deleted file mode 100644 index d47a37914df..00000000000 --- a/spec/controllers/users_controller_spec.rb +++ /dev/null @@ -1,46 +0,0 @@ -require 'spec_helper' - -describe UsersController do - let(:user) { create(:user, username: 'user1', name: 'User 1', email: 'user1@gitlab.com') } - - before do - sign_in(user) - end - - describe 'GET #show' do - render_views - - it 'renders the show template' do - get :show, username: user.username - expect(response.status).to eq(200) - expect(response).to render_template('show') - end - end - - describe 'GET #calendar' do - it 'renders calendar' do - get :calendar, username: user.username - expect(response).to render_template('calendar') - end - end - - describe 'GET #calendar_activities' do - let!(:project) { create(:project) } - let!(:user) { create(:user) } - - before do - allow_any_instance_of(User).to receive(:contributed_projects_ids).and_return([project.id]) - project.team << [user, :developer] - end - - it 'assigns @calendar_date' do - get :calendar_activities, username: user.username, date: '2014-07-31' - expect(assigns(:calendar_date)).to eq(Date.parse('2014-07-31')) - end - - it 'renders calendar_activities' do - get :calendar_activities, username: user.username - expect(response).to render_template('calendar_activities') - end - end -end |