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.
This commit is contained in:
Richard Clamp 2017-10-25 07:55:42 +03:00
parent 4598c00a8f
commit ce3b81b953
6 changed files with 61 additions and 0 deletions

View file

@ -8,6 +8,7 @@ module QA
autoload :Release, 'qa/runtime/release' autoload :Release, 'qa/runtime/release'
autoload :User, 'qa/runtime/user' autoload :User, 'qa/runtime/user'
autoload :Namespace, 'qa/runtime/namespace' autoload :Namespace, 'qa/runtime/namespace'
autoload :Scenario, 'qa/runtime/scenario'
end end
## ##
@ -80,6 +81,11 @@ module QA
module Admin module Admin
autoload :Menu, 'qa/page/admin/menu' autoload :Menu, 'qa/page/admin/menu'
end end
module Mattermost
autoload :Main, 'qa/page/mattermost/main'
autoload :Login, 'qa/page/mattermost/login'
end
end end
## ##

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,8 @@
module QA
module Runtime
module Scenario
extend self
attr_accessor :mattermost
end
end
end

View file

@ -8,6 +8,11 @@ module QA
# #
class Mattermost < Scenario::Entrypoint class Mattermost < Scenario::Entrypoint
tags :core, :mattermost tags :core, :mattermost
def perform(address, mattermost, *files)
Runtime::Scenario.mattermost = mattermost
super(address, files)
end
end end
end end
end end

View file

@ -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