diff options
-rw-r--r-- | qa/qa/page/component/select2.rb | 7 | ||||
-rw-r--r-- | qa/qa/page/main/menu.rb | 6 | ||||
-rw-r--r-- | qa/qa/resource/api_fabricator.rb | 21 | ||||
-rw-r--r-- | qa/qa/resource/base.rb | 1 | ||||
-rw-r--r-- | qa/qa/resource/sandbox.rb | 2 | ||||
-rw-r--r-- | qa/qa/resource/user.rb | 14 | ||||
-rw-r--r-- | qa/qa/runtime/env.rb | 6 |
7 files changed, 48 insertions, 9 deletions
diff --git a/qa/qa/page/component/select2.rb b/qa/qa/page/component/select2.rb index 30829eb0221..6d07d5a10e6 100644 --- a/qa/qa/page/component/select2.rb +++ b/qa/qa/page/component/select2.rb @@ -3,7 +3,12 @@ module QA module Component module Select2 def select_item(item_text) - find('ul.select2-result-sub > li', text: item_text).click + find('.select2-result-label', text: item_text).click + end + + def search_and_select(item_text) + find('.select2-input').set(item_text) + select_item(item_text) end end end diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/main/menu.rb index fb45ebef1b6..cc2724618e9 100644 --- a/qa/qa/page/main/menu.rb +++ b/qa/qa/page/main/menu.rb @@ -68,6 +68,12 @@ module QA end end + def has_admin_area_link?(wait: Capybara.default_max_wait_time) + using_wait_time(wait) do + page.has_selector?(element_selector_css(:admin_area_link)) + end + end + private def within_top_menu diff --git a/qa/qa/resource/api_fabricator.rb b/qa/qa/resource/api_fabricator.rb index 3762a94f312..397dfb16aa4 100644 --- a/qa/qa/resource/api_fabricator.rb +++ b/qa/qa/resource/api_fabricator.rb @@ -1,13 +1,11 @@ # frozen_string_literal: true -require 'airborne' require 'active_support/core_ext/object/deep_dup' require 'capybara/dsl' module QA module Resource module ApiFabricator - include Airborne include Capybara::DSL HTTP_STATUS_OK = 200 @@ -96,6 +94,25 @@ module QA def transform_api_resource(api_resource) api_resource end + + def post(url, payload) + RestClient::Request.execute( + method: :post, + url: url, + payload: payload, + verify_ssl: false) + rescue RestClient::ExceptionWithResponse => e + e.response + end + + def get(url) + RestClient::Request.execute( + method: :get, + url: url, + verify_ssl: false) + rescue RestClient::ExceptionWithResponse => e + e.response + end end end end diff --git a/qa/qa/resource/base.rb b/qa/qa/resource/base.rb index f3eefb70520..dcea144ab74 100644 --- a/qa/qa/resource/base.rb +++ b/qa/qa/resource/base.rb @@ -2,6 +2,7 @@ require 'forwardable' require 'capybara/dsl' +require 'active_support/core_ext/array/extract_options' module QA module Resource diff --git a/qa/qa/resource/sandbox.rb b/qa/qa/resource/sandbox.rb index 41ce857a8b8..3274c0865e5 100644 --- a/qa/qa/resource/sandbox.rb +++ b/qa/qa/resource/sandbox.rb @@ -7,7 +7,7 @@ module QA # creating it if it doesn't yet exist. # class Sandbox < Base - attr_reader :path + attr_accessor :path attribute :id diff --git a/qa/qa/resource/user.rb b/qa/qa/resource/user.rb index 9be88ba4211..c26f0c84a1f 100644 --- a/qa/qa/resource/user.rb +++ b/qa/qa/resource/user.rb @@ -6,7 +6,8 @@ module QA module Resource class User < Base attr_reader :unique_id - attr_writer :username, :password + attr_writer :username, :password, :name, :email + attr_accessor :provider, :extern_uid def initialize @unique_id = SecureRandom.hex(8) @@ -73,7 +74,7 @@ module QA username: username, name: name, skip_confirmation: true - } + }.merge(ldap_post_body) end def self.fabricate_or_use(username, password) @@ -89,6 +90,15 @@ module QA private + def ldap_post_body + return {} unless extern_uid && provider + + { + extern_uid: extern_uid, + provider: provider + } + end + def fetch_id(username) users = parse_body(api_get_from("/users?username=#{username}")) diff --git a/qa/qa/runtime/env.rb b/qa/qa/runtime/env.rb index 0d573859238..7b2768548dd 100644 --- a/qa/qa/runtime/env.rb +++ b/qa/qa/runtime/env.rb @@ -5,7 +5,7 @@ module QA module Env extend self - attr_writer :personal_access_token + attr_writer :personal_access_token, :ldap_username, :ldap_password # The environment variables used to indicate if the environment under test # supports the given feature @@ -92,11 +92,11 @@ module QA end def ldap_username - ENV['GITLAB_LDAP_USERNAME'] + @ldap_username ||= ENV['GITLAB_LDAP_USERNAME'] end def ldap_password - ENV['GITLAB_LDAP_PASSWORD'] + @ldap_password ||= ENV['GITLAB_LDAP_PASSWORD'] end def sandbox_name |