summaryrefslogtreecommitdiff
path: root/qa
diff options
context:
space:
mode:
Diffstat (limited to 'qa')
-rw-r--r--qa/qa.rb2
-rw-r--r--qa/qa/page/admin/settings/general.rb2
-rw-r--r--qa/qa/page/main/login.rb9
-rw-r--r--qa/qa/page/main/menu.rb6
-rw-r--r--qa/qa/page/project/settings/mirroring_repositories.rb10
-rw-r--r--qa/qa/page/project/settings/protected_branches.rb37
-rw-r--r--qa/qa/page/project/wiki/git_access.rb13
-rw-r--r--qa/qa/resource/group.rb11
-rw-r--r--qa/qa/resource/members.rb28
-rw-r--r--qa/qa/resource/project.rb10
-rw-r--r--qa/qa/resource/protected_branch.rb35
-rw-r--r--qa/qa/resource/repository/project_push.rb4
-rw-r--r--qa/qa/resource/repository/wiki_push.rb9
-rw-r--r--qa/qa/resource/wiki.rb9
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb20
15 files changed, 89 insertions, 116 deletions
diff --git a/qa/qa.rb b/qa/qa.rb
index 6e87129641a..dc9ef3ac464 100644
--- a/qa/qa.rb
+++ b/qa/qa.rb
@@ -61,7 +61,6 @@ module QA
autoload :KubernetesCluster, 'qa/resource/kubernetes_cluster'
autoload :User, 'qa/resource/user'
autoload :ProjectMilestone, 'qa/resource/project_milestone'
- autoload :Members, 'qa/resource/members'
autoload :Wiki, 'qa/resource/wiki'
autoload :File, 'qa/resource/file'
autoload :Fork, 'qa/resource/fork'
@@ -275,7 +274,6 @@ module QA
autoload :Edit, 'qa/page/project/wiki/edit'
autoload :New, 'qa/page/project/wiki/new'
autoload :Show, 'qa/page/project/wiki/show'
- autoload :GitAccess, 'qa/page/project/wiki/git_access'
end
module WebIDE
diff --git a/qa/qa/page/admin/settings/general.rb b/qa/qa/page/admin/settings/general.rb
index 150775f57d2..93b290f7e03 100644
--- a/qa/qa/page/admin/settings/general.rb
+++ b/qa/qa/page/admin/settings/general.rb
@@ -7,7 +7,7 @@ module QA
class General < Page::Base
include QA::Page::Settings::Common
- view 'app/views/admin/application_settings/general.html.haml' do
+ view 'app/views/admin/application_settings/show.html.haml' do
element :account_and_limit_settings
end
diff --git a/qa/qa/page/main/login.rb b/qa/qa/page/main/login.rb
index ca93663dba2..65d83926f38 100644
--- a/qa/qa/page/main/login.rb
+++ b/qa/qa/page/main/login.rb
@@ -44,7 +44,7 @@ module QA
def sign_in_using_credentials(user = nil)
# Don't try to log-in if we're already logged-in
- return if Page::Main::Menu.perform(&:signed_in?)
+ return if Page::Main::Menu.perform { |menu| menu.has_personal_area?(wait: 0) }
using_wait_time 0 do
set_initial_password_if_present
@@ -75,7 +75,10 @@ module QA
end
def sign_in_using_ldap_credentials(user)
- Page::Main::Menu.perform(&:sign_out_if_signed_in)
+ # Log out if already logged in
+ Page::Main::Menu.perform do |menu|
+ menu.sign_out if menu.has_personal_area?(wait: 0)
+ end
using_wait_time 0 do
set_initial_password_if_present
@@ -146,7 +149,7 @@ module QA
end
def sign_out_and_sign_in_as(user:)
- Menu.perform(&:sign_out_if_signed_in)
+ Menu.perform(&:sign_out)
has_sign_in_tab?
sign_in_using_credentials(user)
end
diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/main/menu.rb
index 751b67d7695..4676dc8d077 100644
--- a/qa/qa/page/main/menu.rb
+++ b/qa/qa/page/main/menu.rb
@@ -55,10 +55,6 @@ module QA
within_top_menu { click_element :admin_area_link }
end
- def signed_in?
- has_personal_area?(wait: 0)
- end
-
def sign_out
within_user_menu do
click_element :sign_out_link
@@ -66,7 +62,7 @@ module QA
end
def sign_out_if_signed_in
- sign_out if signed_in?
+ sign_out if has_personal_area?(wait: 0)
end
def click_settings_link
diff --git a/qa/qa/page/project/settings/mirroring_repositories.rb b/qa/qa/page/project/settings/mirroring_repositories.rb
index 441235afca8..e3afaceda80 100644
--- a/qa/qa/page/project/settings/mirroring_repositories.rb
+++ b/qa/qa/page/project/settings/mirroring_repositories.rb
@@ -13,8 +13,8 @@ module QA
view 'app/views/projects/mirrors/_mirror_repos.html.haml' do
element :mirror_repository_url_input
element :mirror_repository_button
- element :mirror_repository_url_cell
- element :mirror_last_update_at_cell
+ element :mirror_repository_url
+ element :mirror_last_update_at
element :mirrored_repository_row
end
@@ -64,21 +64,21 @@ module QA
wait(interval: 1) do
within_element_by_index(:mirrored_repository_row, row_index) do
- last_update = find_element(:mirror_last_update_at_cell, wait: 0)
+ last_update = find_element(:mirror_last_update_at, wait: 0)
last_update.has_text?('just now') || last_update.has_text?('seconds')
end
end
# Fail early if the page still shows that there has been no update
within_element_by_index(:mirrored_repository_row, row_index) do
- find_element(:mirror_last_update_at_cell, wait: 0).assert_no_text('Never')
+ find_element(:mirror_last_update_at, wait: 0).assert_no_text('Never')
end
end
private
def find_repository_row_index(target_url)
- all_elements(:mirror_repository_url_cell).index do |url|
+ all_elements(:mirror_repository_url).index do |url|
# The url might be a sanitized url but the target_url won't be so
# we compare just the paths instead of the full url
URI.parse(url.text).path == target_url.path
diff --git a/qa/qa/page/project/settings/protected_branches.rb b/qa/qa/page/project/settings/protected_branches.rb
index d1d2f302013..1e707f1d315 100644
--- a/qa/qa/page/project/settings/protected_branches.rb
+++ b/qa/qa/page/project/settings/protected_branches.rb
@@ -25,10 +25,6 @@ module QA
element :protected_branches_list
end
- view 'app/views/projects/protected_branches/shared/_create_protected_branch.html.haml' do
- element :protect_button
- end
-
def select_branch(branch_name)
click_element :protected_branch_select
@@ -37,31 +33,40 @@ module QA
end
end
- def select_allowed_to_merge(allowed)
- select_allowed(:merge, allowed)
+ def allow_no_one_to_push
+ go_to_allow(:push, 'No one')
+ end
+
+ def allow_devs_and_maintainers_to_push
+ go_to_allow(:push, 'Developers + Maintainers')
end
- def select_allowed_to_push(allowed)
- select_allowed(:push, allowed)
+ # @deprecated
+ alias_method :allow_devs_and_masters_to_push, :allow_devs_and_maintainers_to_push
+
+ def allow_no_one_to_merge
+ go_to_allow(:merge, 'No one')
end
+ def allow_devs_and_maintainers_to_merge
+ go_to_allow(:merge, 'Developers + Maintainers')
+ end
+
+ # @deprecated
+ alias_method :allow_devs_and_masters_to_merge, :allow_devs_and_maintainers_to_merge
+
def protect_branch
- click_element :protect_button
+ click_on 'Protect'
end
private
- def select_allowed(action, allowed)
+ def go_to_allow(action, text)
click_element :"allowed_to_#{action}_select"
- allowed[:roles] = Resource::ProtectedBranch::Roles::NO_ONE unless allowed.key?(:roles)
-
within_element(:"allowed_to_#{action}_dropdown") do
- click_on allowed[:roles]
+ click_on text
end
-
- # Click the select element again to close the dropdown
- click_element :protected_branch_select
end
end
end
diff --git a/qa/qa/page/project/wiki/git_access.rb b/qa/qa/page/project/wiki/git_access.rb
deleted file mode 100644
index 28cb21be4e3..00000000000
--- a/qa/qa/page/project/wiki/git_access.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-# frozen_string_literal: true
-
-module QA
- module Page
- module Project
- module Wiki
- class GitAccess < Page::Base
- include Page::Component::LegacyClonePanel
- end
- end
- end
- end
-end
diff --git a/qa/qa/resource/group.rb b/qa/qa/resource/group.rb
index e11bd5728fb..b5beba64c61 100644
--- a/qa/qa/resource/group.rb
+++ b/qa/qa/resource/group.rb
@@ -3,8 +3,6 @@
module QA
module Resource
class Group < Base
- include Members
-
attr_accessor :path, :description
attribute :sandbox do
@@ -50,10 +48,19 @@ module QA
super
end
+ def add_member(user, access_level = '30')
+ # 30 = developer access
+ post Runtime::API::Request.new(api_client, api_members_path).url, { user_id: user.id, access_level: access_level }
+ end
+
def api_get_path
"/groups/#{CGI.escape("#{sandbox.path}/#{path}")}"
end
+ def api_members_path
+ "#{api_get_path}/members"
+ end
+
def api_post_path
'/groups'
end
diff --git a/qa/qa/resource/members.rb b/qa/qa/resource/members.rb
deleted file mode 100644
index d70a2907523..00000000000
--- a/qa/qa/resource/members.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# frozen_string_literal: true
-
-module QA
- module Resource
- #
- # Included in Resource::Project and Resource::Group to allow changes to
- # project/group membership
- #
- module Members
- def add_member(user, access_level = AccessLevel::DEVELOPER)
- post Runtime::API::Request.new(api_client, api_members_path).url, { user_id: user.id, access_level: access_level }
- end
-
- def api_members_path
- "#{api_get_path}/members"
- end
-
- class AccessLevel
- NO_ACCESS = 0
- GUEST = 10
- REPORTER = 20
- DEVELOPER = 30
- MAINTAINER = 40
- OWNER = 50
- end
- end
- end
-end
diff --git a/qa/qa/resource/project.rb b/qa/qa/resource/project.rb
index a0389390c83..2e49f69bd55 100644
--- a/qa/qa/resource/project.rb
+++ b/qa/qa/resource/project.rb
@@ -6,7 +6,6 @@ module QA
module Resource
class Project < Base
include Events::Project
- include Members
attr_writer :initialize_with_readme
attr_writer :visibility
@@ -76,6 +75,11 @@ module QA
super
end
+ def add_member(user, access_level = '30')
+ # 30 = developer access
+ post Runtime::API::Request.new(api_client, api_members_path).url, { user_id: user.id, access_level: access_level }
+ end
+
def api_get_path
"/projects/#{CGI.escape(path_with_namespace)}"
end
@@ -108,10 +112,6 @@ module QA
post_body
end
- def share_with_group(invitee, access_level = Resource::Members::AccessLevel::DEVELOPER)
- post Runtime::API::Request.new(api_client, "/projects/#{id}/share").url, { group_id: invitee.id, group_access: access_level }
- end
-
private
def transform_api_resource(api_resource)
diff --git a/qa/qa/resource/protected_branch.rb b/qa/qa/resource/protected_branch.rb
index f0cef624e0b..c27647cf3ce 100644
--- a/qa/qa/resource/protected_branch.rb
+++ b/qa/qa/resource/protected_branch.rb
@@ -3,7 +3,7 @@
module QA
module Resource
class ProtectedBranch < Base
- attr_accessor :branch_name, :allowed_to_push, :allowed_to_merge, :protected
+ attr_accessor :branch_name, :allow_to_push, :allow_to_merge, :protected
attribute :project do
Project.fabricate_via_api! do |resource|
@@ -25,12 +25,8 @@ module QA
def initialize
@branch_name = 'test/branch'
- @allowed_to_push = {
- roles: Resource::ProtectedBranch::Roles::DEVS_AND_MAINTAINERS
- }
- @allowed_to_merge = {
- roles: Resource::ProtectedBranch::Roles::DEVS_AND_MAINTAINERS
- }
+ @allow_to_push = true
+ @allow_to_merge = true
@protected = false
end
@@ -39,14 +35,29 @@ module QA
project.wait_for_push_new_branch @branch_name
+ # The upcoming process will make it access the Protected Branches page,
+ # select the already created branch and protect it according
+ # to `allow_to_push` variable.
+ return branch unless @protected
+
project.visit!
Page::Project::Menu.perform(&:go_to_repository_settings)
Page::Project::Settings::Repository.perform do |setting|
setting.expand_protected_branches do |page|
page.select_branch(branch_name)
- page.select_allowed_to_merge(allowed_to_merge)
- page.select_allowed_to_push(allowed_to_push)
+
+ if allow_to_push
+ page.allow_devs_and_maintainers_to_push
+ else
+ page.allow_no_one_to_push
+ end
+
+ if allow_to_merge
+ page.allow_devs_and_maintainers_to_merge
+ else
+ page.allow_no_one_to_merge
+ end
page.wait(reload: false) do
!page.first('.btn-success').disabled?
@@ -68,12 +79,6 @@ module QA
def api_delete_path
"/projects/#{@project.api_resource[:id]}/protected_branches/#{@branch_name}"
end
-
- class Roles
- NO_ONE = 'No one'
- DEVS_AND_MAINTAINERS = 'Developers + Maintainers'
- MAINTAINERS = 'Maintainers'
- end
end
end
end
diff --git a/qa/qa/resource/repository/project_push.rb b/qa/qa/resource/repository/project_push.rb
index f79bb035c46..c84ade3a140 100644
--- a/qa/qa/resource/repository/project_push.rb
+++ b/qa/qa/resource/repository/project_push.rb
@@ -4,12 +4,11 @@ module QA
module Resource
module Repository
class ProjectPush < Repository::Push
- attr_accessor :project_name
attr_writer :wait_for_push
attribute :project do
Project.fabricate! do |resource|
- resource.name = project_name
+ resource.name = 'project-with-code'
resource.description = 'Project with repository'
end
end
@@ -20,7 +19,6 @@ module QA
@commit_message = "This is a test commit"
@branch_name = 'master'
@new_branch = true
- @project_name = 'project-with-code'
@wait_for_push = true
end
diff --git a/qa/qa/resource/repository/wiki_push.rb b/qa/qa/resource/repository/wiki_push.rb
index 8edaff70ac6..06cca85cbb2 100644
--- a/qa/qa/resource/repository/wiki_push.rb
+++ b/qa/qa/resource/repository/wiki_push.rb
@@ -21,7 +21,14 @@ module QA
end
def repository_http_uri
- @repository_http_uri ||= wiki.repository_http_location.uri
+ @repository_http_uri ||= begin
+ wiki.visit!
+ Page::Project::Wiki::Show.act do
+ click_clone_repository
+ choose_repository_clone_http
+ repository_location.uri
+ end
+ end
end
def repository_ssh_uri
diff --git a/qa/qa/resource/wiki.rb b/qa/qa/resource/wiki.rb
index 6e3648dba0b..0a776f22e25 100644
--- a/qa/qa/resource/wiki.rb
+++ b/qa/qa/resource/wiki.rb
@@ -12,15 +12,6 @@ module QA
end
end
- attribute :repository_http_location do
- Page::Project::Wiki::Show.perform(&:click_clone_repository)
-
- Page::Project::Wiki::GitAccess.perform do |git_access|
- git_access.choose_repository_clone_http
- git_access.repository_location
- end
- end
-
def fabricate!
project.visit!
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb
index 5d0f4b215f4..dd80905d184 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb
@@ -17,11 +17,16 @@ module QA
Page::Main::Login.perform(&:sign_in_using_credentials)
end
+ after do
+ # We need to clear localStorage because we're using it for the dropdown,
+ # and capybara doesn't do this for us.
+ # https://github.com/teamcapybara/capybara/issues/1702
+ Capybara.execute_script 'localStorage.clear()'
+ end
+
context 'when developers and maintainers are allowed to push to a protected branch' do
it 'user with push rights successfully pushes to the protected branch' do
- create_protected_branch(allowed_to_push: {
- roles: Resource::ProtectedBranch::Roles::DEVS_AND_MAINTAINERS
- })
+ create_protected_branch(allow_to_push: true)
push = push_new_file(branch_name)
@@ -31,19 +36,18 @@ module QA
context 'when developers and maintainers are not allowed to push to a protected branch' do
it 'user without push rights fails to push to the protected branch' do
- create_protected_branch(allowed_to_push: {
- roles: Resource::ProtectedBranch::Roles::NO_ONE
- })
+ create_protected_branch(allow_to_push: false)
expect { push_new_file(branch_name) }.to raise_error(QA::Git::Repository::RepositoryCommandError, /remote: GitLab: You are not allowed to push code to protected branches on this project\.([\s\S]+)\[remote rejected\] #{branch_name} -> #{branch_name} \(pre-receive hook declined\)/)
end
end
- def create_protected_branch(allowed_to_push:)
+ def create_protected_branch(allow_to_push:)
Resource::ProtectedBranch.fabricate! do |resource|
resource.branch_name = branch_name
resource.project = project
- resource.allowed_to_push = allowed_to_push
+ resource.allow_to_push = allow_to_push
+ resource.protected = true
end
end