Commit 35c1dfd1 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Merge branch 'qa-193-ldap-group-sync-ce' into 'master'

CE port for qa-193-ldap-group-sync EE branch

See merge request gitlab-org/gitlab-ce!22834
parents b55aeca2 de75aa31
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
= link_to group_group_members_path(@group) do = link_to group_group_members_path(@group) do
.nav-icon-container .nav-icon-container
= sprite_icon('users') = sprite_icon('users')
%span.nav-item-name %span.nav-item-name.qa-group-members-item
= _('Members') = _('Members')
%ul.sidebar-sub-level-items.is-fly-out-only %ul.sidebar-sub-level-items.is-fly-out-only
= nav_link(path: 'group_members#index', html_options: { class: "fly-out-top-item" } ) do = nav_link(path: 'group_members#index', html_options: { class: "fly-out-top-item" } ) do
......
...@@ -329,6 +329,7 @@ module QA ...@@ -329,6 +329,7 @@ module QA
module Page module Page
autoload :Logging, 'qa/support/page/logging' autoload :Logging, 'qa/support/page/logging'
end end
autoload :Api, 'qa/support/api'
end end
end end
......
...@@ -3,7 +3,12 @@ module QA ...@@ -3,7 +3,12 @@ module QA
module Component module Component
module Select2 module Select2
def select_item(item_text) 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 end
end end
......
...@@ -68,6 +68,12 @@ module QA ...@@ -68,6 +68,12 @@ module QA
end end
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 private
def within_top_menu def within_top_menu
......
# frozen_string_literal: true # frozen_string_literal: true
require 'airborne'
require 'active_support/core_ext/object/deep_dup' require 'active_support/core_ext/object/deep_dup'
require 'capybara/dsl' require 'capybara/dsl'
module QA module QA
module Resource module Resource
module ApiFabricator module ApiFabricator
include Airborne
include Capybara::DSL include Capybara::DSL
HTTP_STATUS_OK = 200 HTTP_STATUS_OK = 200
...@@ -43,6 +41,7 @@ module QA ...@@ -43,6 +41,7 @@ module QA
private private
include Support::Api
attr_writer :api_resource, :api_response attr_writer :api_resource, :api_response
def resource_web_url(resource) def resource_web_url(resource)
...@@ -84,10 +83,6 @@ module QA ...@@ -84,10 +83,6 @@ module QA
end end
end end
def parse_body(response)
JSON.parse(response.body, symbolize_names: true)
end
def process_api_response(parsed_response) def process_api_response(parsed_response)
self.api_response = parsed_response self.api_response = parsed_response
self.api_resource = transform_api_resource(parsed_response.deep_dup) self.api_resource = transform_api_resource(parsed_response.deep_dup)
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
require 'forwardable' require 'forwardable'
require 'capybara/dsl' require 'capybara/dsl'
require 'active_support/core_ext/array/extract_options'
module QA module QA
module Resource module Resource
......
...@@ -51,6 +51,10 @@ module QA ...@@ -51,6 +51,10 @@ module QA
"/groups/#{CGI.escape("#{sandbox.path}/#{path}")}" "/groups/#{CGI.escape("#{sandbox.path}/#{path}")}"
end end
def api_members_path
"#{api_get_path}/members"
end
def api_post_path def api_post_path
'/groups' '/groups'
end end
......
...@@ -6,7 +6,8 @@ module QA ...@@ -6,7 +6,8 @@ module QA
module Resource module Resource
class User < Base class User < Base
attr_reader :unique_id attr_reader :unique_id
attr_writer :username, :password attr_writer :username, :password, :name, :email
attr_accessor :provider, :extern_uid
def initialize def initialize
@unique_id = SecureRandom.hex(8) @unique_id = SecureRandom.hex(8)
...@@ -73,7 +74,7 @@ module QA ...@@ -73,7 +74,7 @@ module QA
username: username, username: username,
name: name, name: name,
skip_confirmation: true skip_confirmation: true
} }.merge(ldap_post_body)
end end
def self.fabricate_or_use(username, password) def self.fabricate_or_use(username, password)
...@@ -89,6 +90,15 @@ module QA ...@@ -89,6 +90,15 @@ module QA
private private
def ldap_post_body
return {} unless extern_uid && provider
{
extern_uid: extern_uid,
provider: provider
}
end
def fetch_id(username) def fetch_id(username)
users = parse_body(api_get_from("/users?username=#{username}")) users = parse_body(api_get_from("/users?username=#{username}"))
......
...@@ -5,7 +5,7 @@ module QA ...@@ -5,7 +5,7 @@ module QA
module Env module Env
extend self 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 # The environment variables used to indicate if the environment under test
# supports the given feature # supports the given feature
...@@ -92,11 +92,11 @@ module QA ...@@ -92,11 +92,11 @@ module QA
end end
def ldap_username def ldap_username
ENV['GITLAB_LDAP_USERNAME'] @ldap_username ||= ENV['GITLAB_LDAP_USERNAME']
end end
def ldap_password def ldap_password
ENV['GITLAB_LDAP_PASSWORD'] @ldap_password ||= ENV['GITLAB_LDAP_PASSWORD']
end end
def sandbox_name def sandbox_name
......
module QA
module Support
module Api
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
def parse_body(response)
JSON.parse(response.body, symbolize_names: true)
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment