Commit 0cf23fde authored by Kamil Trzcinski's avatar Kamil Trzcinski

Work on tests for mattermost

parent d305d15b
......@@ -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
......
module Mattermost
class ClientError < Mattermost::Error; end
class Client
attr_reader :user
......@@ -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
......
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.
#
......@@ -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
......
......@@ -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
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