Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/project_services/mattermost_slash_commands_service.rb4
-rw-r--r--lib/mattermost/command.rb13
-rw-r--r--lib/mattermost/session.rb4
-rw-r--r--lib/mattermost/team.rb17
-rw-r--r--spec/fixtures/mattermost_new_command.json1
-rw-r--r--spec/lib/mattermost/command_spec.rb13
-rw-r--r--spec/lib/mattermost/session_spec.rb2
-rw-r--r--spec/lib/mattermost/team_spec.rb15
8 files changed, 31 insertions, 38 deletions
diff --git a/app/models/project_services/mattermost_slash_commands_service.rb b/app/models/project_services/mattermost_slash_commands_service.rb
index 5dfc4cc2744..d9fd06e4ac7 100644
--- a/app/models/project_services/mattermost_slash_commands_service.rb
+++ b/app/models/project_services/mattermost_slash_commands_service.rb
@@ -26,8 +26,8 @@ class MattermostSlashCommandsService < ChatService
end
def configure(host, current_user, params)
- new_token = Mattermost::Session.new(host, current_user).with_session do
- Mattermost::Command.create(params[:team_id], command)
+ new_token = Mattermost::Session.new(current_user).with_session do |session|
+ Mattermost::Command.create(session, params[:team_id], command)
end
update!(token: new_token, active: true)
diff --git a/lib/mattermost/command.rb b/lib/mattermost/command.rb
index 9c37d0b0d79..830e61b015e 100644
--- a/lib/mattermost/command.rb
+++ b/lib/mattermost/command.rb
@@ -1,14 +1,7 @@
module Mattermost
- class Command < Session
- def self.create(team_id, trigger: 'gitlab', url:, icon_url:)
-
- post_command(command)['token']
- end
-
- private
-
- def post_command(command)
- post( "/teams/#{team_id}/commands/create", body: command.to_json).parsed_response
+ class Command
+ def self.create(session, team_id, command)
+ session.post("/api/v3/teams/#{team_id}/commands/create", body: command.to_json)['token']
end
end
end
diff --git a/lib/mattermost/session.rb b/lib/mattermost/session.rb
index dcdff94814c..670f83bb6bc 100644
--- a/lib/mattermost/session.rb
+++ b/lib/mattermost/session.rb
@@ -30,6 +30,8 @@ module Mattermost
begin
yield self
+ rescue Errno::ECONNREFUSED
+ raise NoSessionError
ensure
destroy
end
@@ -112,4 +114,4 @@ module Mattermost
end
end
end
-end \ No newline at end of file
+end
diff --git a/lib/mattermost/team.rb b/lib/mattermost/team.rb
index 714748aea3c..9e1b22623a3 100644
--- a/lib/mattermost/team.rb
+++ b/lib/mattermost/team.rb
@@ -1,21 +1,20 @@
module Mattermost
- class Team < Session
- def self.team_admin
- return [] unless initial_load['team_members']
+ class Team
+ def self.team_admin(session)
+ response_body = initial_load(session)
+ return [] unless response_body['team_members']
- team_ids = initial_load['team_members'].map do |team|
+ team_ids = response_body['team_members'].map do |team|
team['team_id'] if team['roles'].split.include?('team_admin')
end.compact
- initial_load['teams'].select do |team|
+ response_body['teams'].select do |team|
team_ids.include?(team['id'])
end
end
- private
-
- def initial_load
- @initial_load ||= get('/users/initial_load').parsed_response
+ def self.initial_load(session)
+ session.get('/api/v3/users/initial_load').parsed_response
end
end
end
diff --git a/spec/fixtures/mattermost_new_command.json b/spec/fixtures/mattermost_new_command.json
deleted file mode 100644
index 4b827f19926..00000000000
--- a/spec/fixtures/mattermost_new_command.json
+++ /dev/null
@@ -1 +0,0 @@
-{"id":"y8j1nexrdirj5nubq5uzdwwidr","token":"pzajm5hfbtni3r49ujpt8betpc","create_at":1481897117122,"update_at":1481897117122,"delete_at":0,"creator_id":"78nm4euoc7dypergdc13ekxgpo","team_id":"w59qt5a817f69jkxdz6xe7y4ir","trigger":"display","method":"P","username":"GitLab","icon_url":"","auto_complete":false,"auto_complete_desc":"","auto_complete_hint":"","display_name":"Display name","description":"the description","url":"http://trigger.url/trigger"}
diff --git a/spec/lib/mattermost/command_spec.rb b/spec/lib/mattermost/command_spec.rb
index 7c6457f639d..8c4b12c4d03 100644
--- a/spec/lib/mattermost/command_spec.rb
+++ b/spec/lib/mattermost/command_spec.rb
@@ -1,17 +1,14 @@
require 'spec_helper'
describe Mattermost::Command do
- describe '.create' do
- let(:new_command) do
- JSON.parse(File.read(Rails.root.join('spec/fixtures/', 'mattermost_new_command.json')))
- end
+ let(:session) { double("session") }
+ describe '.create' do
it 'gets the teams' do
- allow(described_class).to receive(:post_command).and_return(new_command)
-
- token = described_class.create('abc', url: 'http://trigger.url/trigger', icon_url: 'http://myicon.com/icon.png')
+ allow(session).to receive(:post).and_return('token' => 'token')
+ expect(session).to receive(:post)
- expect(token).to eq('pzajm5hfbtni3r49ujpt8betpc')
+ described_class.create(session, 'abc', url: 'http://trigger.com')
end
end
end
diff --git a/spec/lib/mattermost/session_spec.rb b/spec/lib/mattermost/session_spec.rb
index 752ac796b1c..3c2eddbd221 100644
--- a/spec/lib/mattermost/session_spec.rb
+++ b/spec/lib/mattermost/session_spec.rb
@@ -96,4 +96,4 @@ describe Mattermost::Session, type: :request do
end
end
end
-end \ No newline at end of file
+end
diff --git a/spec/lib/mattermost/team_spec.rb b/spec/lib/mattermost/team_spec.rb
index 0fe6163900d..b3db2999070 100644
--- a/spec/lib/mattermost/team_spec.rb
+++ b/spec/lib/mattermost/team_spec.rb
@@ -2,20 +2,23 @@ require 'spec_helper'
describe Mattermost::Team do
describe '.team_admin' do
- let(:init_load) do
- JSON.parse(File.read(Rails.root.join('spec/fixtures/', 'mattermost_initial_load.json')))
- end
+ let(:session) { double("session") }
+ let(:json) { File.read(Rails.root.join('spec/fixtures/', 'mattermost_initial_load.json')) }
+ let(:parsed_response) { JSON.parse(json) }
before do
- allow(described_class).to receive(:initial_load).and_return(init_load)
+ allow(session).to receive(:get).with('/api/v3/users/initial_load').
+ and_return(json)
+ allow(json).to receive(:parsed_response).and_return(parsed_response)
end
it 'gets the teams' do
- expect(described_class.team_admin.count).to be(2)
+ expect(described_class.team_admin(session).count).to be(2)
end
it 'filters on being team admin' do
- ids = described_class.team_admin.map { |team| team['id'] }
+ ids = described_class.team_admin(session).map { |team| team['id'] }
+
expect(ids).to include("w59qt5a817f69jkxdz6xe7y4ir", "my9oujxf5jy1zqdgu9rihd66do")
end
end