diff options
author | Richard Clamp <richardc@unixbeard.net> | 2017-10-25 07:55:42 +0300 |
---|---|---|
committer | Richard Clamp <richardc@unixbeard.net> | 2017-10-30 14:48:40 +0000 |
commit | ce3b81b953f04caabee30498bb4719c59b8b5d34 (patch) | |
tree | 1358c537720bea55ce8405a7b38f7c749c49b271 /qa | |
parent | 4598c00a8f565a33c4460ae920ce7a65ba6540cc (diff) | |
download | gitlab-ce-ce3b81b953f04caabee30498bb4719c59b8b5d34.tar.gz |
Add tests for mattermost login via oauth
* Adds Runtime::Scenario as a place to record the properties of the
Scenario we're interested in.
* Adds a positional argument to Test::Integration::Mattermost to specify
Runtime::Scenario.mattermost
* Adds Page::Mattermost::{Main,Login} to model the mattermost pages we
need to interact with.
* Adds qa/features/mattermost/login_spec to perform a login via oauth
and ensure we are logged in.
Diffstat (limited to 'qa')
-rw-r--r-- | qa/qa.rb | 6 | ||||
-rw-r--r-- | qa/qa/page/mattermost/login.rb | 19 | ||||
-rw-r--r-- | qa/qa/page/mattermost/main.rb | 11 | ||||
-rw-r--r-- | qa/qa/runtime/scenario.rb | 8 | ||||
-rw-r--r-- | qa/qa/scenario/test/integration/mattermost.rb | 5 | ||||
-rw-r--r-- | qa/qa/specs/features/mattermost/login_spec.rb | 12 |
6 files changed, 61 insertions, 0 deletions
@@ -8,6 +8,7 @@ module QA autoload :Release, 'qa/runtime/release' autoload :User, 'qa/runtime/user' autoload :Namespace, 'qa/runtime/namespace' + autoload :Scenario, 'qa/runtime/scenario' end ## @@ -80,6 +81,11 @@ module QA module Admin autoload :Menu, 'qa/page/admin/menu' end + + module Mattermost + autoload :Main, 'qa/page/mattermost/main' + autoload :Login, 'qa/page/mattermost/login' + end end ## diff --git a/qa/qa/page/mattermost/login.rb b/qa/qa/page/mattermost/login.rb new file mode 100644 index 00000000000..2001dc5b230 --- /dev/null +++ b/qa/qa/page/mattermost/login.rb @@ -0,0 +1,19 @@ +module QA + module Page + module Mattermost + class Login < Page::Base + def initialize + visit(Runtime::Scenario.mattermost + '/login') + end + + def sign_in_using_oauth + click_link class: 'btn btn-custom-login gitlab' + + if page.has_content?('Authorize GitLab Mattermost to use your account?') + click_button 'Authorize' + end + end + end + end + end +end diff --git a/qa/qa/page/mattermost/main.rb b/qa/qa/page/mattermost/main.rb new file mode 100644 index 00000000000..e636d7676f4 --- /dev/null +++ b/qa/qa/page/mattermost/main.rb @@ -0,0 +1,11 @@ +module QA + module Page + module Mattermost + class Main < Page::Base + def initialize + visit(Runtime::Scenario.mattermost) + end + end + end + end +end diff --git a/qa/qa/runtime/scenario.rb b/qa/qa/runtime/scenario.rb new file mode 100644 index 00000000000..0c5e9787e17 --- /dev/null +++ b/qa/qa/runtime/scenario.rb @@ -0,0 +1,8 @@ +module QA + module Runtime + module Scenario + extend self + attr_accessor :mattermost + end + end +end diff --git a/qa/qa/scenario/test/integration/mattermost.rb b/qa/qa/scenario/test/integration/mattermost.rb index 4732f2b635b..9a84e5c8fd8 100644 --- a/qa/qa/scenario/test/integration/mattermost.rb +++ b/qa/qa/scenario/test/integration/mattermost.rb @@ -8,6 +8,11 @@ module QA # class Mattermost < Scenario::Entrypoint tags :core, :mattermost + + def perform(address, mattermost, *files) + Runtime::Scenario.mattermost = mattermost + super(address, files) + end end end end diff --git a/qa/qa/specs/features/mattermost/login_spec.rb b/qa/qa/specs/features/mattermost/login_spec.rb new file mode 100644 index 00000000000..a89a6a3d1cf --- /dev/null +++ b/qa/qa/specs/features/mattermost/login_spec.rb @@ -0,0 +1,12 @@ +module QA + feature 'logging in to Mattermost', :mattermost do + scenario 'can use gitlab oauth' do + Page::Main::Entry.act { sign_in_using_credentials } + Page::Mattermost::Login.act { sign_in_using_oauth } + + Page::Mattermost::Main.perform do |page| + expect(page).to have_content(/(Welcome to: Mattermost|Logout GitLab Mattermost)/) + end + end + end +end |