From ce3b81b953f04caabee30498bb4719c59b8b5d34 Mon Sep 17 00:00:00 2001 From: Richard Clamp Date: Wed, 25 Oct 2017 07:55:42 +0300 Subject: 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. --- qa/qa.rb | 6 ++++++ qa/qa/page/mattermost/login.rb | 19 +++++++++++++++++++ qa/qa/page/mattermost/main.rb | 11 +++++++++++ qa/qa/runtime/scenario.rb | 8 ++++++++ qa/qa/scenario/test/integration/mattermost.rb | 5 +++++ qa/qa/specs/features/mattermost/login_spec.rb | 12 ++++++++++++ 6 files changed, 61 insertions(+) create mode 100644 qa/qa/page/mattermost/login.rb create mode 100644 qa/qa/page/mattermost/main.rb create mode 100644 qa/qa/runtime/scenario.rb create mode 100644 qa/qa/specs/features/mattermost/login_spec.rb diff --git a/qa/qa.rb b/qa/qa.rb index 59d9dd131c2..e8689a44f4d 100644 --- a/qa/qa.rb +++ b/qa/qa.rb @@ -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 -- cgit v1.2.1