mirror of
https://github.com/discourse/discourse-chat-integration.git
synced 2025-02-16 16:34:50 +00:00
Fix tests to work with Rails 5.1. (#8)
This commit is contained in:
parent
47a6a89e5a
commit
49f58ec190
@ -6,11 +6,13 @@ class DiscourseChat::ChatController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def list_providers
|
def list_providers
|
||||||
providers = ::DiscourseChat::Provider.enabled_providers.map { |x| {
|
providers = ::DiscourseChat::Provider.enabled_providers.map do |x|
|
||||||
name: x::PROVIDER_NAME,
|
{
|
||||||
id: x::PROVIDER_NAME,
|
name: x::PROVIDER_NAME,
|
||||||
channel_parameters: (defined? x::CHANNEL_PARAMETERS) ? x::CHANNEL_PARAMETERS : []
|
id: x::PROVIDER_NAME,
|
||||||
}}
|
channel_parameters: (defined? x::CHANNEL_PARAMETERS) ? x::CHANNEL_PARAMETERS : []
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
render json: providers, root: 'providers'
|
render json: providers, root: 'providers'
|
||||||
end
|
end
|
||||||
|
@ -3,6 +3,7 @@ class DiscourseChat::PluginModel < PluginStoreRow
|
|||||||
KEY_PREFIX = 'unimplemented'
|
KEY_PREFIX = 'unimplemented'
|
||||||
|
|
||||||
after_initialize :init_plugin_model
|
after_initialize :init_plugin_model
|
||||||
|
default_scope { self.default_scope }
|
||||||
|
|
||||||
def init_plugin_model
|
def init_plugin_model
|
||||||
self.type_name ||= 'JSON'
|
self.type_name ||= 'JSON'
|
||||||
@ -13,11 +14,13 @@ class DiscourseChat::PluginModel < PluginStoreRow
|
|||||||
def self.default_scope
|
def self.default_scope
|
||||||
where(type_name: 'JSON')
|
where(type_name: 'JSON')
|
||||||
.where(plugin_name: self::PLUGIN_NAME)
|
.where(plugin_name: self::PLUGIN_NAME)
|
||||||
.where("key like?", "#{self::KEY_PREFIX}%")
|
.where("key LIKE ?", "#{self::KEY_PREFIX}%")
|
||||||
end
|
end
|
||||||
|
|
||||||
before_save :set_key
|
before_save :set_key
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def set_key
|
def set_key
|
||||||
self.key ||= self.class.alloc_key
|
self.key ||= self.class.alloc_key
|
||||||
end
|
end
|
||||||
|
@ -20,14 +20,14 @@ describe 'Chat Controller', type: :request do
|
|||||||
shared_examples 'admin constraints' do |action, route|
|
shared_examples 'admin constraints' do |action, route|
|
||||||
context 'when user is not signed in' do
|
context 'when user is not signed in' do
|
||||||
it 'should raise the right error' do
|
it 'should raise the right error' do
|
||||||
expect { send(action, route) }.to raise_error(ActionController::RoutingError)
|
expect { public_send(action, route) }.to raise_error(ActionController::RoutingError)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when user is not an admin' do
|
context 'when user is not an admin' do
|
||||||
it 'should raise the right error' do
|
it 'should raise the right error' do
|
||||||
sign_in(Fabricate(:user))
|
sign_in(Fabricate(:user))
|
||||||
expect { send(action, route) }.to raise_error(ActionController::RoutingError)
|
expect { public_send(action, route) }.to raise_error(ActionController::RoutingError)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -66,7 +66,9 @@ describe 'Chat Controller', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should return the right response' do
|
it 'should return the right response' do
|
||||||
post '/admin/plugins/chat/test.json', channel_id: channel.id, topic_id: topic.id
|
post '/admin/plugins/chat/test.json', params: {
|
||||||
|
channel_id: channel.id, topic_id: topic.id
|
||||||
|
}
|
||||||
|
|
||||||
expect(response).to be_success
|
expect(response).to be_success
|
||||||
|
|
||||||
@ -74,7 +76,9 @@ describe 'Chat Controller', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should fail for invalid channel' do
|
it 'should fail for invalid channel' do
|
||||||
post '/admin/plugins/chat/test.json', channel_id: 999, topic_id: topic.id
|
post '/admin/plugins/chat/test.json', params: {
|
||||||
|
channel_id: 999, topic_id: topic.id
|
||||||
|
}
|
||||||
|
|
||||||
expect(response).not_to be_success
|
expect(response).not_to be_success
|
||||||
end
|
end
|
||||||
@ -92,7 +96,7 @@ describe 'Chat Controller', type: :request do
|
|||||||
it 'should return the right response' do
|
it 'should return the right response' do
|
||||||
rule = DiscourseChat::Rule.create(channel: channel, filter: 'follow', category_id: category.id, tags: [tag.name])
|
rule = DiscourseChat::Rule.create(channel: channel, filter: 'follow', category_id: category.id, tags: [tag.name])
|
||||||
|
|
||||||
get '/admin/plugins/chat/channels.json', provider: 'dummy'
|
get '/admin/plugins/chat/channels.json', params: { provider: 'dummy' }
|
||||||
|
|
||||||
expect(response).to be_success
|
expect(response).to be_success
|
||||||
|
|
||||||
@ -110,7 +114,7 @@ describe 'Chat Controller', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should fail for invalid provider' do
|
it 'should fail for invalid provider' do
|
||||||
get '/admin/plugins/chat/channels.json', provider: 'someprovider'
|
get '/admin/plugins/chat/channels.json', params: { provider: 'someprovider' }
|
||||||
|
|
||||||
expect(response).not_to be_success
|
expect(response).not_to be_success
|
||||||
end
|
end
|
||||||
@ -128,25 +132,27 @@ describe 'Chat Controller', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should be able to add a new channel' do
|
it 'should be able to add a new channel' do
|
||||||
post '/admin/plugins/chat/channels.json',
|
post '/admin/plugins/chat/channels.json', params: {
|
||||||
channel: {
|
channel: {
|
||||||
provider: 'dummy',
|
provider: 'dummy',
|
||||||
data: {}
|
data: {}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
expect(response).to be_success
|
expect(response).to be_success
|
||||||
|
|
||||||
channel = DiscourseChat::Channel.all.first
|
channel = DiscourseChat::Channel.all.last
|
||||||
|
|
||||||
expect(channel.provider).to eq('dummy')
|
expect(channel.provider).to eq('dummy')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should fail for invalid params' do
|
it 'should fail for invalid params' do
|
||||||
post '/admin/plugins/chat/channels.json',
|
post '/admin/plugins/chat/channels.json', params: {
|
||||||
channel: {
|
channel: {
|
||||||
provider: 'dummy2',
|
provider: 'dummy2',
|
||||||
data: { val: 'something with whitespace' }
|
data: { val: 'something with whitespace' }
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
expect(response).not_to be_success
|
expect(response).not_to be_success
|
||||||
|
|
||||||
@ -166,25 +172,26 @@ describe 'Chat Controller', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should be able update a channel' do
|
it 'should be able update a channel' do
|
||||||
put "/admin/plugins/chat/channels/#{channel.id}.json",
|
put "/admin/plugins/chat/channels/#{channel.id}.json", params: {
|
||||||
channel: {
|
channel: {
|
||||||
data: { val: "something-else" }
|
data: { val: "something-else" }
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
expect(response).to be_success
|
expect(response).to be_success
|
||||||
|
|
||||||
channel = DiscourseChat::Channel.all.first
|
channel = DiscourseChat::Channel.all.last
|
||||||
expect(channel.data).to eq("val" => "something-else")
|
expect(channel.data).to eq("val" => "something-else")
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should fail for invalid params' do
|
it 'should fail for invalid params' do
|
||||||
put "/admin/plugins/chat/channels/#{channel.id}.json",
|
put "/admin/plugins/chat/channels/#{channel.id}.json", params: {
|
||||||
channel: {
|
channel: {
|
||||||
data: { val: "something with whitespace" }
|
data: { val: "something with whitespace" }
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
expect(response).not_to be_success
|
expect(response).not_to be_success
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -204,7 +211,6 @@ describe 'Chat Controller', type: :request do
|
|||||||
delete "/admin/plugins/chat/channels/#{channel.id}.json"
|
delete "/admin/plugins/chat/channels/#{channel.id}.json"
|
||||||
|
|
||||||
expect(response).to be_success
|
expect(response).to be_success
|
||||||
|
|
||||||
expect(DiscourseChat::Channel.all.size).to eq(0)
|
expect(DiscourseChat::Channel.all.size).to eq(0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -220,17 +226,18 @@ describe 'Chat Controller', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should be able to add a new rule' do
|
it 'should be able to add a new rule' do
|
||||||
post '/admin/plugins/chat/rules.json',
|
post '/admin/plugins/chat/rules.json', params: {
|
||||||
rule: {
|
rule: {
|
||||||
channel_id: channel.id,
|
channel_id: channel.id,
|
||||||
category_id: category.id,
|
category_id: category.id,
|
||||||
filter: 'watch',
|
filter: 'watch',
|
||||||
tags: [tag.name]
|
tags: [tag.name]
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
expect(response).to be_success
|
expect(response).to be_success
|
||||||
|
|
||||||
rule = DiscourseChat::Rule.all.first
|
rule = DiscourseChat::Rule.all.last
|
||||||
|
|
||||||
expect(rule.channel_id).to eq(channel.id)
|
expect(rule.channel_id).to eq(channel.id)
|
||||||
expect(rule.category_id).to eq(category.id)
|
expect(rule.category_id).to eq(category.id)
|
||||||
@ -240,16 +247,16 @@ describe 'Chat Controller', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should fail for invalid params' do
|
it 'should fail for invalid params' do
|
||||||
post '/admin/plugins/chat/rules.json',
|
post '/admin/plugins/chat/rules.json', params: {
|
||||||
rule: {
|
rule: {
|
||||||
channel_id: channel.id,
|
channel_id: channel.id,
|
||||||
category_id: category.id,
|
category_id: category.id,
|
||||||
filter: 'watch',
|
filter: 'watch',
|
||||||
tags: ['somenonexistanttag']
|
tags: ['somenonexistanttag']
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
expect(response).not_to be_success
|
expect(response).not_to be_success
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -266,37 +273,38 @@ describe 'Chat Controller', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should be able update a rule' do
|
it 'should be able update a rule' do
|
||||||
put "/admin/plugins/chat/rules/#{rule.id}.json",
|
put "/admin/plugins/chat/rules/#{rule.id}.json", params: {
|
||||||
rule: {
|
rule: {
|
||||||
channel_id: channel.id,
|
channel_id: channel.id,
|
||||||
category_id: category2.id,
|
category_id: category2.id,
|
||||||
filter: rule.filter,
|
filter: rule.filter,
|
||||||
tags: rule.tags
|
tags: rule.tags
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
expect(response).to be_success
|
expect(response).to be_success
|
||||||
|
|
||||||
rule = DiscourseChat::Rule.all.first
|
rule = DiscourseChat::Rule.all.last
|
||||||
expect(rule.category_id).to eq(category2.id)
|
expect(rule.category_id).to eq(category2.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should fail for invalid params' do
|
it 'should fail for invalid params' do
|
||||||
put "/admin/plugins/chat/rules/#{rule.id}.json",
|
put "/admin/plugins/chat/rules/#{rule.id}.json", params: {
|
||||||
rule: {
|
rule: {
|
||||||
channel_id: channel.id,
|
channel_id: channel.id,
|
||||||
category_id: category.id,
|
category_id: category.id,
|
||||||
filter: 'watch',
|
filter: 'watch',
|
||||||
tags: ['somenonexistanttag']
|
tags: ['somenonexistanttag']
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
expect(response).not_to be_success
|
expect(response).not_to be_success
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'deleting a rule' do
|
describe 'deleting a rule' do
|
||||||
let(:rule) { DiscourseChat::Rule.create(channel_id: channel.id, filter: 'follow', category_id: category.id, tags: [tag.name]) }
|
let(:rule) { DiscourseChat::Rule.create!(channel_id: channel.id, filter: 'follow', category_id: category.id, tags: [tag.name]) }
|
||||||
|
|
||||||
include_examples 'admin constraints', 'delete', "/admin/plugins/chat/rules/1.json"
|
include_examples 'admin constraints', 'delete', "/admin/plugins/chat/rules/1.json"
|
||||||
|
|
||||||
@ -310,7 +318,6 @@ describe 'Chat Controller', type: :request do
|
|||||||
delete "/admin/plugins/chat/rules/#{rule.id}.json"
|
delete "/admin/plugins/chat/rules/#{rule.id}.json"
|
||||||
|
|
||||||
expect(response).to be_success
|
expect(response).to be_success
|
||||||
|
|
||||||
expect(DiscourseChat::Rule.all.size).to eq(0)
|
expect(DiscourseChat::Rule.all.size).to eq(0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -38,7 +38,9 @@ describe 'Mattermost Command Controller', type: :request do
|
|||||||
token = 'sometoken'
|
token = 'sometoken'
|
||||||
SiteSetting.chat_integration_mattermost_incoming_webhook_token = token
|
SiteSetting.chat_integration_mattermost_incoming_webhook_token = token
|
||||||
|
|
||||||
post '/chat-integration/mattermost/command.json', text: 'help', token: token
|
post '/chat-integration/mattermost/command.json', params: {
|
||||||
|
text: 'help', token: token
|
||||||
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
end
|
end
|
||||||
@ -46,14 +48,16 @@ describe 'Mattermost Command Controller', type: :request do
|
|||||||
|
|
||||||
describe 'when the token is invalid' do
|
describe 'when the token is invalid' do
|
||||||
it 'should raise the right error' do
|
it 'should raise the right error' do
|
||||||
expect { post '/chat-integration/mattermost/command.json', text: 'help' }
|
expect { post '/chat-integration/mattermost/command.json', params: { text: 'help' } }
|
||||||
.to raise_error(ActionController::ParameterMissing)
|
.to raise_error(ActionController::ParameterMissing)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'when incoming webhook token has not been set' do
|
describe 'when incoming webhook token has not been set' do
|
||||||
it 'should raise the right error' do
|
it 'should raise the right error' do
|
||||||
post '/chat-integration/mattermost/command.json', text: 'help', token: 'some token'
|
post '/chat-integration/mattermost/command.json', params: {
|
||||||
|
text: 'help', token: 'some token'
|
||||||
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(403)
|
expect(response.status).to eq(403)
|
||||||
end
|
end
|
||||||
@ -72,10 +76,11 @@ describe 'Mattermost Command Controller', type: :request do
|
|||||||
describe 'add new rule' do
|
describe 'add new rule' do
|
||||||
|
|
||||||
it 'should add a new rule correctly' do
|
it 'should add a new rule correctly' do
|
||||||
post "/chat-integration/mattermost/command.json",
|
post "/chat-integration/mattermost/command.json", params: {
|
||||||
text: "watch #{category.slug}",
|
text: "watch #{category.slug}",
|
||||||
channel_name: 'welcome',
|
channel_name: 'welcome',
|
||||||
token: token
|
token: token
|
||||||
|
}
|
||||||
|
|
||||||
json = JSON.parse(response.body)
|
json = JSON.parse(response.body)
|
||||||
|
|
||||||
@ -90,10 +95,11 @@ describe 'Mattermost Command Controller', type: :request do
|
|||||||
|
|
||||||
context 'from an unknown channel' do
|
context 'from an unknown channel' do
|
||||||
it 'creates the channel' do
|
it 'creates the channel' do
|
||||||
post "/chat-integration/mattermost/command.json",
|
post "/chat-integration/mattermost/command.json", params: {
|
||||||
text: "watch #{category.slug}",
|
text: "watch #{category.slug}",
|
||||||
channel_name: 'general',
|
channel_name: 'general',
|
||||||
token: token
|
token: token
|
||||||
|
}
|
||||||
|
|
||||||
json = JSON.parse(response.body)
|
json = JSON.parse(response.body)
|
||||||
|
|
||||||
|
@ -38,7 +38,9 @@ describe 'Slack Command Controller', type: :request do
|
|||||||
token = 'sometoken'
|
token = 'sometoken'
|
||||||
SiteSetting.chat_integration_slack_incoming_webhook_token = token
|
SiteSetting.chat_integration_slack_incoming_webhook_token = token
|
||||||
|
|
||||||
post '/chat-integration/slack/command.json', text: 'help', token: token
|
post '/chat-integration/slack/command.json', params: {
|
||||||
|
text: 'help', token: token
|
||||||
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
end
|
end
|
||||||
@ -46,14 +48,16 @@ describe 'Slack Command Controller', type: :request do
|
|||||||
|
|
||||||
describe 'when the token is invalid' do
|
describe 'when the token is invalid' do
|
||||||
it 'should raise the right error' do
|
it 'should raise the right error' do
|
||||||
expect { post '/chat-integration/slack/command.json', text: 'help' }
|
expect { post '/chat-integration/slack/command.json', params: { text: 'help' } }
|
||||||
.to raise_error(ActionController::ParameterMissing)
|
.to raise_error(ActionController::ParameterMissing)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'when incoming webhook token has not been set' do
|
describe 'when incoming webhook token has not been set' do
|
||||||
it 'should raise the right error' do
|
it 'should raise the right error' do
|
||||||
post '/chat-integration/slack/command.json', text: 'help', token: 'some token'
|
post '/chat-integration/slack/command.json', params: {
|
||||||
|
text: 'help', token: 'some token'
|
||||||
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(403)
|
expect(response.status).to eq(403)
|
||||||
end
|
end
|
||||||
@ -72,10 +76,11 @@ describe 'Slack Command Controller', type: :request do
|
|||||||
describe 'add new rule' do
|
describe 'add new rule' do
|
||||||
|
|
||||||
it 'should add a new rule correctly' do
|
it 'should add a new rule correctly' do
|
||||||
post "/chat-integration/slack/command.json",
|
post "/chat-integration/slack/command.json", params: {
|
||||||
text: "watch #{category.slug}",
|
text: "watch #{category.slug}",
|
||||||
channel_name: 'welcome',
|
channel_name: 'welcome',
|
||||||
token: token
|
token: token
|
||||||
|
}
|
||||||
|
|
||||||
json = JSON.parse(response.body)
|
json = JSON.parse(response.body)
|
||||||
|
|
||||||
@ -90,10 +95,11 @@ describe 'Slack Command Controller', type: :request do
|
|||||||
|
|
||||||
context 'from an unknown channel' do
|
context 'from an unknown channel' do
|
||||||
it 'creates the channel' do
|
it 'creates the channel' do
|
||||||
post "/chat-integration/slack/command.json",
|
post "/chat-integration/slack/command.json", params: {
|
||||||
text: "watch #{category.slug}",
|
text: "watch #{category.slug}",
|
||||||
channel_name: 'general',
|
channel_name: 'general',
|
||||||
token: token
|
token: token
|
||||||
|
}
|
||||||
|
|
||||||
json = JSON.parse(response.body)
|
json = JSON.parse(response.body)
|
||||||
|
|
||||||
@ -184,12 +190,13 @@ describe 'Slack Command Controller', type: :request do
|
|||||||
.with(body: /attachments/)
|
.with(body: /attachments/)
|
||||||
.to_return(body: { ok: true }.to_json)
|
.to_return(body: { ok: true }.to_json)
|
||||||
|
|
||||||
post "/chat-integration/slack/command.json",
|
post "/chat-integration/slack/command.json", params: {
|
||||||
text: "post",
|
text: "post",
|
||||||
response_url: 'https://hooks.slack.com/commands/1234',
|
response_url: 'https://hooks.slack.com/commands/1234',
|
||||||
channel_name: 'general',
|
channel_name: 'general',
|
||||||
channel_id: 'C6029G78F',
|
channel_id: 'C6029G78F',
|
||||||
token: token
|
token: token
|
||||||
|
}
|
||||||
|
|
||||||
expect(command_stub).to have_been_requested
|
expect(command_stub).to have_been_requested
|
||||||
end
|
end
|
||||||
@ -199,12 +206,13 @@ describe 'Slack Command Controller', type: :request do
|
|||||||
.with(body: /1501801629\.052212/)
|
.with(body: /1501801629\.052212/)
|
||||||
.to_return(body: { ok: true }.to_json)
|
.to_return(body: { ok: true }.to_json)
|
||||||
|
|
||||||
post "/chat-integration/slack/command.json",
|
post "/chat-integration/slack/command.json", params: {
|
||||||
text: "post https://sometestslack.slack.com/archives/C6029G78F/p1501801629052212",
|
text: "post https://sometestslack.slack.com/archives/C6029G78F/p1501801629052212",
|
||||||
response_url: 'https://hooks.slack.com/commands/1234',
|
response_url: 'https://hooks.slack.com/commands/1234',
|
||||||
channel_name: 'general',
|
channel_name: 'general',
|
||||||
channel_id: 'C6029G78F',
|
channel_id: 'C6029G78F',
|
||||||
token: token
|
token: token
|
||||||
|
}
|
||||||
|
|
||||||
expect(command_stub).to have_been_requested
|
expect(command_stub).to have_been_requested
|
||||||
end
|
end
|
||||||
@ -214,12 +222,13 @@ describe 'Slack Command Controller', type: :request do
|
|||||||
.with(body: /1501801629\.052212/)
|
.with(body: /1501801629\.052212/)
|
||||||
.to_return(body: { ok: true }.to_json)
|
.to_return(body: { ok: true }.to_json)
|
||||||
|
|
||||||
post "/chat-integration/slack/command.json",
|
post "/chat-integration/slack/command.json", params: {
|
||||||
text: "post 4",
|
text: "post 4",
|
||||||
response_url: 'https://hooks.slack.com/commands/1234',
|
response_url: 'https://hooks.slack.com/commands/1234',
|
||||||
channel_name: 'general',
|
channel_name: 'general',
|
||||||
channel_id: 'C6029G78F',
|
channel_id: 'C6029G78F',
|
||||||
token: token
|
token: token
|
||||||
|
}
|
||||||
|
|
||||||
expect(command_stub).to have_been_requested
|
expect(command_stub).to have_been_requested
|
||||||
end
|
end
|
||||||
@ -229,12 +238,13 @@ describe 'Slack Command Controller', type: :request do
|
|||||||
.with(body: /1501615820\.949638/)
|
.with(body: /1501615820\.949638/)
|
||||||
.to_return(body: { ok: true }.to_json)
|
.to_return(body: { ok: true }.to_json)
|
||||||
|
|
||||||
post "/chat-integration/slack/command.json",
|
post "/chat-integration/slack/command.json", params: {
|
||||||
text: "post",
|
text: "post",
|
||||||
response_url: 'https://hooks.slack.com/commands/1234',
|
response_url: 'https://hooks.slack.com/commands/1234',
|
||||||
channel_name: 'general',
|
channel_name: 'general',
|
||||||
channel_id: 'C6029G78F',
|
channel_id: 'C6029G78F',
|
||||||
token: token
|
token: token
|
||||||
|
}
|
||||||
|
|
||||||
expect(command_stub).to have_been_requested
|
expect(command_stub).to have_been_requested
|
||||||
end
|
end
|
||||||
@ -243,12 +253,13 @@ describe 'Slack Command Controller', type: :request do
|
|||||||
it 'deals with failed API calls correctly' do
|
it 'deals with failed API calls correctly' do
|
||||||
stub1 = stub_request(:post, "https://slack.com/api/users.list").to_return(status: 403)
|
stub1 = stub_request(:post, "https://slack.com/api/users.list").to_return(status: 403)
|
||||||
|
|
||||||
post "/chat-integration/slack/command.json",
|
post "/chat-integration/slack/command.json", params: {
|
||||||
text: "post 2",
|
text: "post 2",
|
||||||
response_url: 'https://hooks.slack.com/commands/1234',
|
response_url: 'https://hooks.slack.com/commands/1234',
|
||||||
channel_name: 'general',
|
channel_name: 'general',
|
||||||
channel_id: 'C6029G78F',
|
channel_id: 'C6029G78F',
|
||||||
token: token
|
token: token
|
||||||
|
}
|
||||||
|
|
||||||
json = JSON.parse(response.body)
|
json = JSON.parse(response.body)
|
||||||
|
|
||||||
@ -258,12 +269,13 @@ describe 'Slack Command Controller', type: :request do
|
|||||||
it 'errors correctly if there is no api key' do
|
it 'errors correctly if there is no api key' do
|
||||||
SiteSetting.chat_integration_slack_access_token = ''
|
SiteSetting.chat_integration_slack_access_token = ''
|
||||||
|
|
||||||
post "/chat-integration/slack/command.json",
|
post "/chat-integration/slack/command.json", params: {
|
||||||
text: "post 2",
|
text: "post 2",
|
||||||
response_url: 'https://hooks.slack.com/commands/1234',
|
response_url: 'https://hooks.slack.com/commands/1234',
|
||||||
channel_name: 'general',
|
channel_name: 'general',
|
||||||
channel_id: 'C6029G78F',
|
channel_id: 'C6029G78F',
|
||||||
token: token
|
token: token
|
||||||
|
}
|
||||||
|
|
||||||
json = JSON.parse(response.body)
|
json = JSON.parse(response.body)
|
||||||
|
|
||||||
|
@ -36,7 +36,10 @@ describe 'Telegram Command Controller', type: :request do
|
|||||||
describe 'when forum is private' do
|
describe 'when forum is private' do
|
||||||
it 'should not redirect to login page' do
|
it 'should not redirect to login page' do
|
||||||
SiteSetting.login_required = true
|
SiteSetting.login_required = true
|
||||||
post '/chat-integration/telegram/command/shhh.json', message: { chat: { id: 123 }, text: '/help' }
|
|
||||||
|
post '/chat-integration/telegram/command/shhh.json', params: {
|
||||||
|
message: { chat: { id: 123 }, text: '/help' }
|
||||||
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
end
|
end
|
||||||
@ -44,7 +47,10 @@ describe 'Telegram Command Controller', type: :request do
|
|||||||
|
|
||||||
describe 'when the token is invalid' do
|
describe 'when the token is invalid' do
|
||||||
it 'should raise the right error' do
|
it 'should raise the right error' do
|
||||||
post '/chat-integration/telegram/command/blah.json', message: { chat: { id: 123 }, text: '/help' }
|
post '/chat-integration/telegram/command/blah.json', params: {
|
||||||
|
message: { chat: { id: 123 }, text: '/help' }
|
||||||
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(403)
|
expect(response.status).to eq(403)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -52,7 +58,9 @@ describe 'Telegram Command Controller', type: :request do
|
|||||||
describe 'when token has not been set' do
|
describe 'when token has not been set' do
|
||||||
it 'should raise the right error' do
|
it 'should raise the right error' do
|
||||||
SiteSetting.chat_integration_telegram_access_token = ""
|
SiteSetting.chat_integration_telegram_access_token = ""
|
||||||
post '/chat-integration/telegram/command/blah.json', message: { chat: { id: 123 }, text: '/help' }
|
post '/chat-integration/telegram/command/blah.json', params: {
|
||||||
|
message: { chat: { id: 123 }, text: '/help' }
|
||||||
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(403)
|
expect(response.status).to eq(403)
|
||||||
end
|
end
|
||||||
@ -68,7 +76,9 @@ describe 'Telegram Command Controller', type: :request do
|
|||||||
describe 'add new rule' do
|
describe 'add new rule' do
|
||||||
|
|
||||||
it 'should add a new rule correctly' do
|
it 'should add a new rule correctly' do
|
||||||
post '/chat-integration/telegram/command/shhh.json', message: { chat: { id: 123 }, text: "/watch #{category.slug}" }
|
post '/chat-integration/telegram/command/shhh.json', params: {
|
||||||
|
message: { chat: { id: 123 }, text: "/watch #{category.slug}" }
|
||||||
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect(stub).to have_been_requested.once
|
expect(stub).to have_been_requested.once
|
||||||
@ -81,7 +91,9 @@ describe 'Telegram Command Controller', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should add a new rule correctly using group chat syntax' do
|
it 'should add a new rule correctly using group chat syntax' do
|
||||||
post '/chat-integration/telegram/command/shhh.json', message: { chat: { id: 123 }, text: "/watch@my-awesome-bot #{category.slug}" }
|
post '/chat-integration/telegram/command/shhh.json', params: {
|
||||||
|
message: { chat: { id: 123 }, text: "/watch@my-awesome-bot #{category.slug}" }
|
||||||
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect(stub).to have_been_requested.once
|
expect(stub).to have_been_requested.once
|
||||||
@ -95,7 +107,10 @@ describe 'Telegram Command Controller', type: :request do
|
|||||||
|
|
||||||
context 'from an unknown channel' do
|
context 'from an unknown channel' do
|
||||||
it 'does nothing' do
|
it 'does nothing' do
|
||||||
post '/chat-integration/telegram/command/shhh.json', message: { chat: { id: 456 }, text: "/watch #{category.slug}" }
|
post '/chat-integration/telegram/command/shhh.json', params: {
|
||||||
|
message: { chat: { id: 456 }, text: "/watch #{category.slug}" }
|
||||||
|
}
|
||||||
|
|
||||||
expect(DiscourseChat::Rule.all.size).to eq(0)
|
expect(DiscourseChat::Rule.all.size).to eq(0)
|
||||||
expect(DiscourseChat::Channel.all.size).to eq(1)
|
expect(DiscourseChat::Channel.all.size).to eq(1)
|
||||||
end
|
end
|
||||||
@ -103,12 +118,16 @@ describe 'Telegram Command Controller', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "should respond only to a specific command in a broadcast channel" do
|
it "should respond only to a specific command in a broadcast channel" do
|
||||||
post '/chat-integration/telegram/command/shhh.json', channel_post: { chat: { id: 123 }, text: "something" }
|
post '/chat-integration/telegram/command/shhh.json', params: {
|
||||||
|
channel_post: { chat: { id: 123 }, text: "something" }
|
||||||
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect(stub).to have_been_requested.times(0)
|
expect(stub).to have_been_requested.times(0)
|
||||||
|
|
||||||
post '/chat-integration/telegram/command/shhh.json', channel_post: { chat: { id: 123 }, text: "/getchatid" }
|
post '/chat-integration/telegram/command/shhh.json', params: {
|
||||||
|
channel_post: { chat: { id: 123 }, text: "/getchatid" }
|
||||||
|
}
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect(stub).to have_been_requested.times(1)
|
expect(stub).to have_been_requested.times(1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user