Skip to content
Snippets Groups Projects
Unverified Commit 0cf23fde authored by Kamil Trzcinski's avatar Kamil Trzcinski
Browse files

Work on tests for mattermost

parent d305d15b
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -150,10 +150,10 @@ module ProjectsHelper
 
def mattermost_teams_options(teams)
teams_options = teams.map do |id, options|
return nil unless id && options['display_name']
[options['display_name'], id]
end.compact
teams_options.unshift(['Select team...', '0'])
[options['display_name'] || options['name'], id]
end
teams_options.compact.unshift(['Select team...', '0'])
end
 
private
Loading
Loading
module Mattermost
class ClientError < Mattermost::Error; end
class Client
attr_reader :user
 
Loading
Loading
@@ -30,9 +32,9 @@ module Mattermost
if response.success?
json_response
elsif json_response['message']
raise json_response['message']
raise ClientError(json_response['message'])
else
raise 'Undefined error'
raise ClientError('Undefined error')
end
end
end
Loading
Loading
module Mattermost
class NoSessionError < StandardError
class Error < StandardError; end
class NoSessionError < Error
def message
'No session could be set up, is Mattermost configured with Single Sign on?'
end
end
 
class ConnectionError < Error
def message
'Could not connect. Is Mattermost up?'
end
end
# This class' prime objective is to obtain a session token on a Mattermost
# instance with SSO configured where this GitLab instance is the provider.
#
Loading
Loading
@@ -66,10 +74,14 @@ module Mattermost
 
def get(path, options = {})
self.class.get(path, options.merge(headers: @headers))
rescue Errno::ECONNREFUSED
raise ConnectionError
end
 
def post(path, options = {})
self.class.post(path, options.merge(headers: @headers))
rescue Errno::ECONNREFUSED
raise ConnectionError
end
 
private
Loading
Loading
Loading
Loading
@@ -2,4 +2,39 @@ require 'spec_helper'
 
describe MattermostSlashCommandsService, :models do
it_behaves_like "chat slash commands service"
describe '#configure!' do
let(:project) { create(:empty_project) }
let(:service) { project.build_mattermost_slash_commands_service }
let(:user) { create(:user)}
before do
allow_any_instance_of(Mattermost::Session).to
receive(:with_session).and_yield
end
subject do
service.configure!(user, team_id: 'abc',
trigger: 'gitlab', url: 'http://trigger.url',
icon_url: 'http://icon.url/icon.png')
end
context 'the requests succeeds' do
it 'saves the service' do
expect { subject }.to change { project.services.count }.by(1)
end
it 'saves the token' do
subject
expect(service.reload.token).to eq('mynewtoken')
end
end
context 'an error is received' do
it 'shows error messages' do
expect(subject).to raise_error("Error")
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment