diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..5148ee04 --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,26 @@ +require_relative "recipient" + +class Channel < Recipient + attr_reader :id, :name, :details, :topic, :member_count + + def initialize(id, name, details = "", topic = "", member_count = "") + super(id, name) + @details = details + @topic = topic + @member_count = member_count + end + + def self.load_all(url, token) + recipients = HTTParty.get(url, query: { token: token }) + all_recipients = recipients["channels"].map do |recipient| + recipient = new(recipient["id"], recipient["name"], recipient["info"], topic = recipient["topic"]["value"], member_count = recipient["num_members"]) + end + return all_recipients + end + + def load_details + # inherits ID & Name from Recipient + super + return super + "\nTopic: #{@topic}" + "\nMember Count: #{@member_count}" + end +end diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..b7c68c4a --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,25 @@ +require "dotenv" + +Dotenv.load + +class Recipient + attr_reader :id, :name + + def initialize(id, name) + @id = id + @name = name + end + + def self.load_all(url, token) + recipients = HTTParty.get(url, query: { token: token }) + all_recipients = recipients["members"].map do |recipient| + recipient = new(recipient["id"], recipient["name"]) + end + return all_recipients + end + + def load_details + # inherited by Channel & User + return "#{self.class} Details\nID: #{self.id}\nName: #{self.name}" + end +end diff --git a/lib/slack.rb b/lib/slack.rb index 960cf2f7..09ac7b9e 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,11 +1,63 @@ #!/usr/bin/env ruby +require "dotenv" +require "httparty" +require "vcr" +require "awesome_print" +require_relative "workspace" +Dotenv.load def main - puts "Welcome to the Ada Slack CLI!" - - # TODO project - - puts "Thank you for using the Ada Slack CLI" + workspace = Workspace.new + puts workspace.get_channels + puts "Hello. Welcome, friend. Please enjoy our Slack CLI." + puts "What would you like to do? Please select an option" + puts "1. List Channels\n2. List Users\n3. Select Channel\n4. Select User\n5. List Details\n6. Send Message\n7. Quit" + user_selection = gets.chomp.downcase + while user_selection + case user_selection + when "1" || "list channels" + puts "list_channels" + puts workspace.list_channels + when "2" || "list users" + puts "list_users" + puts workspace.list_users + when "3" || "select channel" + puts "select_channel" + selection = gets.chomp + while workspace.valid_selection?("channel", selection) == false + puts "Please enter a channel name or id." + selection = gets.chomp + end + puts workspace.find_by_id_or_name("channel", selection) + when "4" || "select user" + puts "select_user" + selection = gets.chomp + while workspace.valid_selection?("user", selection) == false + puts "Please enter a user name or id." + selection = gets.chomp + end + puts workspace.find_by_id_or_name("user", selection) + when "5" || "details" + puts "list_details_on_current_recipient" + workspace.list_details_on_current_recipient + when "6" || "send message" + puts "send_message" + puts "Do you want cats with that? (yes/no)" + cats = gets.chomp.downcase + puts "Please enter your message:" + message = gets.chomp + puts workspace.send_message(message, cats) + when "7" || "quit" + puts "Thank you for using the Ada Slack CLI" + exit + else + puts "Please select a valid input." + user_selection = gets.chomp + end + puts "What would you like to do? Please select an option" + puts "1. List Channels\n2. List Users\n3. Select Channel\n4. Select User\n5. List Details\n6. Send Message\n7. Quit" + user_selection = gets.chomp.downcase + end end -main if __FILE__ == $PROGRAM_NAME \ No newline at end of file +main if __FILE__ == $PROGRAM_NAME diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..13f03e9e --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,24 @@ +require_relative "recipient" + +class User < Recipient + attr_reader :id, :name, :details, :username + + def initialize(id, name, details = "", username = "") + super(id, name) + @details = details + @username = username + end + + def self.load_all(url, token) + recipients = HTTParty.get(url, query: { token: token }) + all_recipients = recipients["members"].map do |recipient| + recipient = new(recipient["id"], recipient["real_name"], details = recipient["info"], username = recipient["name"]) + end + return all_recipients + end + + def load_details + # inherits ID & Name from Recipient + return super + "\nUsername: #{@username}" + end +end diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..182251b5 --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,116 @@ +require "dotenv" +require "httparty" +require "uri" +Dotenv.load + +require_relative "recipient" +require_relative "channel" +require_relative "user" + +class Workspace + TOKEN = ENV["SLACK_TOKEN"] + + attr_accessor :users, :channels, :current_recipient, :user_url, :channel_url, :message_url + + def initialize + @channel_url = "https://slack.com/api/conversations.list" + @user_url = "https://slack.com/api/users.list" + @message_url = "https://slack.com/api/chat.postMessage" + @channel_member_url = "https://slack.com/api/conversations.members" + @users = get_users + @channels = get_channels + @current_recipient = nil + end + + def get_users + User.load_all(@user_url, TOKEN) + end + + def get_channels + Channel.load_all(@channel_url, TOKEN) + end + + def valid_selection?(selection_type, selection) + case selection_type + when "channel" + @channels.find { |channel| channel.id == selection || channel.name == selection } ? true : false + when "user" + @users.find { |user| user.id == selection || user.name == selection } ? true : false + end + end + + def find_by_id_or_name(recipient_type, search_arg) + if recipient_type.downcase != "user" && recipient_type.downcase != "channel" + raise ArgumentError, "Recipient must be either a user or a channel." + end + + recipient_list = [] + if (recipient_type.downcase == "user") + recipient_list = @users + else + recipient_list = @channels + end + + recipient = recipient_list.find do |recipient| + recipient.id == search_arg || recipient.name == search_arg + end + + if recipient == nil + raise ArgumentError, "Recipient not found." + else + @current_recipient = recipient + end + end + + def list_details_on_current_recipient + if @current_recipient == nil + raise ArgumentError, "No recipient is currently selected." + else + @current_recipient.load_details + end + return @current_recipient + end + + def send_message(message, cats) + id = @current_recipient.id + if cats == "yes" + cat_block = '[{"type": "image", "alt_text": "cat", "image_url": "https://cataas.com/cat/says/' + URI.encode(message) + '"}]' + new_message = HTTParty.post(@message_url, + headers: { "Content-Type" => "application/x-www-form-urlencoded" }, + body: { + "token" => TOKEN, + "channel" => id, + "text" => message, + "blocks" => cat_block, + }) + else + new_message = HTTParty.post(@message_url, + headers: { "Content-Type" => "application/x-www-form-urlencoded" }, + body: { + "token" => TOKEN, + "channel" => id, + "text" => message, + }) + end + new_message + end + + def list_users + user_list = HTTParty.get(@user_url, query: { token: TOKEN }) + user_list["members"].map do |user| + "ID: #{user["id"]} + Username: #{user["name"]} + Name: #{user["real_name"]}" + end + end + + def list_channels + channel_list = HTTParty.get(@channel_url, query: { token: TOKEN }) + channel_list["channels"].map do |channel| + "ID: #{channel["id"]} + Name: #{channel["name"]} + Topic: #{channel["topic"]["value"]} + Member Count: #{channel["num_members"]}" + end + end +end diff --git a/test/cassettes/channel_find_by_id_or_name.yml b/test/cassettes/channel_find_by_id_or_name.yml new file mode 100644 index 00000000..62c47011 --- /dev/null +++ b/test/cassettes/channel_find_by_id_or_name.yml @@ -0,0 +1,157 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:26 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 06dbd9e2-1cb7-4ed9-8876-c9c98190eda5 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-o27m + X-Cache: + - Miss from cloudfront + Via: + - 1.1 3a5c7b53ec8bee631ff6043996ffc1ce.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 6z7Tjvkj0rCoXaJ9PZ7a1XDx86xizO-8q2aJaq2FapX7Beyj6sKGEQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411606,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:26 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '607' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:27 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - e16493be-531f-420f-8639-2ec83ae37e7f + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-og2s + X-Cache: + - Miss from cloudfront + Via: + - 1.1 bf3ec4bcb6f4f29d898c3c4e0f95a185.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - kghIH4Tu_IE1xaSeJtnE_UVWZIzg64rB0JUlCr78ewO3_vpxEvoZ2w== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMTGDS4LA","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CMURH40JX","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CN85SCME3","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568072433,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:27 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/list_details_on_current_recipient.yml b/test/cassettes/list_details_on_current_recipient.yml new file mode 100644 index 00000000..49558c58 --- /dev/null +++ b/test/cassettes/list_details_on_current_recipient.yml @@ -0,0 +1,157 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:26 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 0a2e225f-c1ff-4143-8456-fcf3b115153b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-sk4y + X-Cache: + - Miss from cloudfront + Via: + - 1.1 b3e015b6529fa35dca94f1f2661af384.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - dViWyG5kqpHxvHBnQL9b9xjocueprumYW_eQC-yENzp3Hyqja0UAPQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411606,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:26 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '607' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:26 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 034ce3b9-83c9-4aec-8f97-37e153647b2e + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-xtep + X-Cache: + - Miss from cloudfront + Via: + - 1.1 686ace1321107362da87839adf526fc6.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - wkl9XBrCNIzPGslbdNgFy4EZkSbijm4gOl-c9c65hyiNRRjqmsaDdQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMTGDS4LA","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CMURH40JX","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CN85SCME3","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568072433,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:26 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/recipient_test.yml b/test/cassettes/recipient_test.yml new file mode 100644 index 00000000..8803e333 --- /dev/null +++ b/test/cassettes/recipient_test.yml @@ -0,0 +1,311 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:25 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - a16fc0d2-9102-4e93-9b99-fc55c86437a6 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-lqa3 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 e8276e704fe9ab202d1f5aa2709d2f93.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - DYHhy_2tTw8BZcuRJ_x7keRRoa0IBcGxPLmMRYbLNKKSeWi9R4pGXQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411605,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:25 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '607' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:25 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 40e5c660-70c6-43fb-a92d-27479e85576e + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-sk4y + X-Cache: + - Miss from cloudfront + Via: + - 1.1 43fc53332a866a4c9b5c72cec114706b.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - LHfzZbTS4-qa762XVGhJ9CV6A8_u_6Zb_xWTVboYuI28UYOQ_L4kVA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMTGDS4LA","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CMURH40JX","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CN85SCME3","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568072433,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:25 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '607' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:56:21 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - efa3087b-02a5-412b-972c-799082c54c2e + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-cviw + X-Cache: + - Miss from cloudfront + Via: + - 1.1 05c281b7186067b6c66ca266cdeda2f8.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - sIydc2c6tQGAlPe0-w854vG0mwOx_D6Qh9Jf8YjaGxXeeizNa35j0A== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMTGDS4LA","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CMURH40JX","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CN85SCME3","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568072433,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:56:21 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:56:21 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 8811c393-2d94-4d73-9b1b-8de1a426e304 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-9agp + X-Cache: + - Miss from cloudfront + Via: + - 1.1 73bd23077f64204bc8f5efea09d16ebd.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - UniKqf62CJlkTs8humGGfkjYIRDHeWXX_QzNbU4EyIIjGH6_-g8ohw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411781,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:56:21 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/send_message.yml b/test/cassettes/send_message.yml new file mode 100644 index 00000000..a9c58cdb --- /dev/null +++ b/test/cassettes/send_message.yml @@ -0,0 +1,294 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:24 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 0e85e890-fdc2-46a5-87cb-e4611d9c4880 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-d0g2 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 48324d3b69a5418ddcbd1f772305eff1.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - I3ueT8yVR3vyfs8gDAxxgBRYHR1EGkin06Dvnoow-JJ8cojeLnwCqw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411604,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:24 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '607' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:25 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 4261a6cc-bdf7-4173-be53-0a2a58901273 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-uw19 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 c3d327d7fba3cf3679ba86e6faf3a795.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - yDPsmwCWA1HkK5IIkUy1pQghWJ5WhU0t9B4RfgENrKgfhog15pXKHQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMTGDS4LA","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CMURH40JX","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CN85SCME3","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568072433,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:25 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage + body: + encoding: UTF-8 + string: token=&channel=random&text=POTTYMOUTH + headers: + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:56:22 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 8f772d86-e409-49cd-95a8-f1fcb8f430ed + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - chat:write:bot + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-nxmy + X-Cache: + - Miss from cloudfront + Via: + - 1.1 bb14b7a4f45e3e0b1ae5065c59f7826f.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 0VdMA9WaS1gKKAtGiL9r0OW37Zat1iAnv5gjQC1AgUkhaJPctRsekA== + body: + encoding: UTF-8 + string: '{"ok":true,"channel":"CMTGDS4LA","ts":"1568411782.000200","message":{"type":"message","subtype":"bot_message","text":"POTTYMOUTH","ts":"1568411782.000200","username":"Branches + - Macaria - API Project","bot_id":"BN6A90GTS"}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:56:22 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage + body: + encoding: UTF-8 + string: token=&channel=CMTGDS4LA&text=MEOWMEOW&blocks=%5B%7B%22type%22%3A%20%22image%22%2C%20%22alt_text%22%3A%20%22cat%22%2C%20%22image_url%22%3A%20%22https%3A%2F%2Fcataas.com%2Fcat%2Fsays%2FMEOWMEOW%22%7D%5D + headers: + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:59:11 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 4bad57db-2595-4b12-b30c-667ae017ad56 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - chat:write:bot + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-dzl1 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 92c8c11d2a0d1554296f15adc76d2e64.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - NvqNG0ymI1CC8wC2LMWb3z_pVo_8bcmoHolQmLNK9xAbtE2brHcnUg== + body: + encoding: UTF-8 + string: '{"ok":true,"channel":"CMTGDS4LA","ts":"1568411952.000300","message":{"type":"message","subtype":"bot_message","text":"MEOWMEOW","ts":"1568411952.000300","username":"Branches + - Macaria - API Project","bot_id":"BN6A90GTS","blocks":[{"type":"image","block_id":"bbj","image_url":"https:\/\/cataas.com\/cat\/says\/MEOWMEOW","alt_text":"cat","fallback":"600x592px + image","image_width":600,"image_height":592,"image_bytes":31597}]}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:59:12 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/user_find_by_id_or_name.yml b/test/cassettes/user_find_by_id_or_name.yml new file mode 100644 index 00000000..f9b2d4be --- /dev/null +++ b/test/cassettes/user_find_by_id_or_name.yml @@ -0,0 +1,157 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:26 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 457117c7-4679-48b5-a786-b981da7eb8f1 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-64vz + X-Cache: + - Miss from cloudfront + Via: + - 1.1 c9175050329bc171442756cc6f0e0d88.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - pPK5Qwno1Oz7gNko4uCVD9t-RdbJBV2voErRHGlkhNWydDnRf8likQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411606,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:26 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '607' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:26 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - ffeb9a39-0230-4c5b-897d-0c943b4a3917 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-eluc + X-Cache: + - Miss from cloudfront + Via: + - 1.1 73bd23077f64204bc8f5efea09d16ebd.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - FU5qIMu9eDZXzMTIdQArGRXpLawEor8Hig8vxZxLSfGgWXoka-E5qA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMTGDS4LA","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CMURH40JX","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CN85SCME3","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568072433,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:26 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/workspace_find_channel_by_id_error.yml b/test/cassettes/workspace_find_channel_by_id_error.yml new file mode 100644 index 00000000..db2b07b9 --- /dev/null +++ b/test/cassettes/workspace_find_channel_by_id_error.yml @@ -0,0 +1,157 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:26 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 15ed9dcc-8407-4955-a650-2120a60e544b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-g1op + X-Cache: + - Miss from cloudfront + Via: + - 1.1 6af340edf5d0c2e1a2d1773e9c7a6ecc.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - jXDME1Wl57x52F2TRRrOTe2Oo9cy6u7kml14-boeUWgipC4JdoGInQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411606,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:26 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '607' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:26 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 740815b4-1657-408c-b495-f3c364344dfe + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-og2s + X-Cache: + - Miss from cloudfront + Via: + - 1.1 ddc77da3ee14d939006f8adaf09d8aa5.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - q_DWEL6duZ0I3BqWFF9ZUuAgJXIayYFd7lIT1cHZ-gD7G3a26I96lw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMTGDS4LA","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CMURH40JX","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CN85SCME3","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568072433,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:26 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/workspace_get_users_test.yml b/test/cassettes/workspace_get_users_test.yml new file mode 100644 index 00000000..b951543e --- /dev/null +++ b/test/cassettes/workspace_get_users_test.yml @@ -0,0 +1,234 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:27 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 6408aedb-3c0f-44cb-a44e-c379cf8f75d4 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-j6j4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 ceb7b8c925a9435b9b08b23014561fbb.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - srlXJXKAe0Mz7O87UZf_FIkFwYaqsOxTi2VBSnMupXFc2_aFNo6WOw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411607,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:27 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '607' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:27 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - d9253797-d1af-4680-a42f-81fb2412127b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-vdbk + X-Cache: + - Miss from cloudfront + Via: + - 1.1 48b1d9f5c5a47a0b424a9637eb513cee.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 0EfJcfJAWshE1eplH_SR4w78HbzsGUuXRJHUbnTsbO_Dy6xpiis8gw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMTGDS4LA","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CMURH40JX","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CN85SCME3","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568072433,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:27 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:56:22 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - d9650336-82c6-4f62-af20-14c822f3e23c + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-fdpw + X-Cache: + - Miss from cloudfront + Via: + - 1.1 bf747dc419d7840e37c22083d04ecd8e.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - WkqnCEQ5gzxpc04OPFqYN9HW6VbKNjcEUkaQPKH33A2p9JEPouLl1A== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411782,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:56:22 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/workspace_list_channels_test.yml b/test/cassettes/workspace_list_channels_test.yml new file mode 100644 index 00000000..965c9a77 --- /dev/null +++ b/test/cassettes/workspace_list_channels_test.yml @@ -0,0 +1,234 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:27 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 66d93f1c-7b79-41f8-822d-5510850d9d7e + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-sk4y + X-Cache: + - Miss from cloudfront + Via: + - 1.1 c3d327d7fba3cf3679ba86e6faf3a795.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - OolFurlq7D68ifTK0EycGqFPWglzV0Phi2gFv0jn30GkzWoiKGLEdQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411607,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:27 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '607' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:27 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 8e134ada-13f1-4d88-bb9a-587045893b66 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-u9rp + X-Cache: + - Miss from cloudfront + Via: + - 1.1 05c281b7186067b6c66ca266cdeda2f8.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - npNdqSk1f2IJ0cdxrYeEKVNDtyeKERL9IwLmSs42dZHpG-5WnX9wdQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMTGDS4LA","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CMURH40JX","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CN85SCME3","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568072433,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:27 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '607' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:56:22 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 610094c4-69ea-42e5-a782-4fb50c1532a0 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-nvih + X-Cache: + - Miss from cloudfront + Via: + - 1.1 5970fc402458c01688529eb3dab967de.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - zYrgdoQzSEHJm3lkpbuoDPzZC9vPumky5bI1H6WKFlcwQhZb_00K7g== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMTGDS4LA","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CMURH40JX","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CN85SCME3","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568072433,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:56:22 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/workspace_list_users_test.yml b/test/cassettes/workspace_list_users_test.yml new file mode 100644 index 00000000..cd7b6c45 --- /dev/null +++ b/test/cassettes/workspace_list_users_test.yml @@ -0,0 +1,234 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:25 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 741b3a68-1a1f-4ae8-b914-7be8f91f96f3 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-aaa1 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 79f18dd6382f7347397cfbd42c438a75.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - _AHoMPC_e2leZG8dQD1_FtJz3iET6t4CKxFhoGUS4XslvWzx4bt22w== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411605,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:25 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '607' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:53:25 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - ae063494-c98a-4f42-bed2-944f6f88d04f + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-8m7g + X-Cache: + - Miss from cloudfront + Via: + - 1.1 490c6b39f412c738a30c226f07db749c.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - FnAtNb0AdYUHpu3O8oUjQyK1_HguXIy5acqGkhEPaar9rqP2cM4qpQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMTGDS4LA","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CMURH40JX","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568072432,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMURH3TBM","last_set":1568072432},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMURH3TBM","last_set":1568072432},"previous_names":[],"num_members":2},{"id":"CN85SCME3","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568072433,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UMURH3TBM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69R3XAL"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:53:25 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '914' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:56:21 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 0a1913da-0bcc-4443-8dd2-828e993e6eeb + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-g1op + X-Cache: + - Miss from cloudfront + Via: + - 1.1 6bd725b6233f3b787d5f5373be153d66.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - o2JXAwUoUVlGRRB0DtmCCLIIGf1xkp4jz672m2HjYG9M6U_EPwxXZw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69R3XAL","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TN69R3XAL"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UMURH3TBM","team_id":"TN69R3XAL","name":"m.dove","deleted":false,"color":"9f69e7","real_name":"Mackie + Dove","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mackie + Dove","real_name_normalized":"Mackie Dove","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"5c5f13b47d78","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_original.jpg","first_name":"Mackie","last_name":"Dove","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754354966469_5c5f13b47d78f68d62aa_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568141455,"has_2fa":false},{"id":"UN5RH5EP6","team_id":"TN69R3XAL","name":"kelseykripp","deleted":false,"color":"e7392d","real_name":"Kelsey + Kripp","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kelsey + Kripp","real_name_normalized":"Kelsey Kripp","display_name":"Kelsey Kripp","display_name_normalized":"Kelsey + Kripp","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"f8aa0156bcd0","image_original":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_original.jpg","image_24":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2019-09-09\/754351894768_f8aa0156bcd0e1281338_1024.jpg","status_text_canonical":"","team":"TN69R3XAL","is_custom_image":true},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1568074237,"has_2fa":false}],"cache_ts":1568411781,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:56:21 GMT +recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb new file mode 100644 index 00000000..5d8655ed --- /dev/null +++ b/test/channel_test.rb @@ -0,0 +1,27 @@ +require_relative "test_helper" +describe "channel" do + before do + VCR.use_cassette("recipient_test") do + @workspace = Workspace.new + @channels = Channel.load_all(@workspace.channel_url, ENV["SLACK_TOKEN"]) + end + end + describe "initialize" do + before do + @test_channel = Channel.new(id, name, details = "", topic = "", member_count = "") + it "creates an instance of channel" do + expect @test_channel.must_be_instance_of Channel + end + it "responds to variable names" do #we got this idea from Amal & Julia + [:id, :name, :details, :topic, :member_count].each do |variable| + expect(@test_channel).must_respond_to variable + end + end + end + end + describe "self.load_all" do + it "loads ids and names of all channels into an array" do + expect @channels.must_be_instance_of Array + end + end +end diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..0ac46c61 --- /dev/null +++ b/test/recipient_test.rb @@ -0,0 +1,15 @@ +require_relative "test_helper" + +describe "recipient" do + before do + VCR.use_cassette("recipient_test") do + @workspace = Workspace.new + @recipients = Recipient.load_all(@workspace.user_url, ENV["SLACK_TOKEN"]) + end + end + describe "self.load_all" do + it "loads ids and names of all recipients into an array" do + expect @recipients.must_be_instance_of Array + end + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 90aeb408..d1efe387 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,17 +1,30 @@ -require 'simplecov' +require "simplecov" SimpleCov.start do - add_filter 'test/' + add_filter "test/" end -require 'minitest' -require 'minitest/autorun' -require 'minitest/reporters' -require 'minitest/skip_dsl' -require 'vcr' +require "minitest" +require "minitest/autorun" +# require "minitest/reporters" +require "minitest/skip_dsl" +require "minitest/pride" +require "vcr" -Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new +# Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new VCR.configure do |config| config.cassette_library_dir = "test/cassettes" config.hook_into :webmock + config.default_cassette_options = { + :record => :new_episodes, + :match_requests_on => [:method, :uri, :body], + } + config.filter_sensitive_data("") do + ENV["SLACK_TOKEN"] + end end + +require_relative "../lib/workspace" +require_relative "../lib/user" +require_relative "../lib/channel" +require_relative "../lib/recipient" diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..bbb74562 --- /dev/null +++ b/test/user_test.rb @@ -0,0 +1,29 @@ +require_relative "test_helper" + +describe "user" do + before do + VCR.use_cassette("recipient_test") do + @workspace = Workspace.new + @user = @workspace.users[1] + end + end + describe "initialize" do + before do + @test_user = User.new(id, name, details = "", username = "") + it "creates an instance of user" do + expect @test_user.must_be_instance_of User + end + it "responds to variable names" do #we got this idea from Amal & Julia + [:id, :name, :details, :username].each do |variable| + expect(@test_user).must_respond_to variable + end + end + end + end + describe "load_details" do + it "returns an accurate username" do + expect @user.load_details.must_be_instance_of String + expect @user.load_details.must_include "ID:" + end + end +end diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..6adffe17 --- /dev/null +++ b/test/workspace_test.rb @@ -0,0 +1,167 @@ +require_relative "test_helper" + +describe "workspace" do + describe "list_users" do + before do + VCR.use_cassette("workspace_get_users_test") do + @workspace = Workspace.new + + @users = @workspace.get_users + end + end + it "retrieves the correct number of users in a workspace" do + expect(@users.length).must_equal 3 + end + it "gets the usernames of all the users" do + expect(@users[0].username).must_equal "slackbot" + expect(@users[1].username).must_equal "m.dove" + expect(@users[2].username).must_equal "kelseykripp" + end + it "gets the real names of all the users" do + expect(@users[0].name).must_equal "Slackbot" + expect(@users[1].name).must_equal "Mackie Dove" + expect(@users[2].name).must_equal "Kelsey Kripp" + end + end + describe "list_channels" do + before do + VCR.use_cassette("workspace_list_channels_test") do + @workspace = Workspace.new + + @channels = @workspace.list_channels + end + end + + it "retrieves the correct number of channels in a workspace" do + expect(@channels.length).must_equal 3 + end + end + describe "list_users" do + before do + VCR.use_cassette("workspace_list_users_test") do + @workspace = Workspace.new + + @users = @workspace.list_users + end + end + + it "retrieves the correct number of users in the workspace" do + expect(@users.length).must_equal 3 + end + end + + describe "error cases" do + before do + VCR.use_cassette("workspace_find_channel_by_id_error") do + @workspace = Workspace.new + end + end + + it "attempts to find a channel whose id does not exist" do + expect { @workspace.find_by_id_or_name("channel", "IDONTEXIST") }.must_raise ArgumentError + end + + it "attempts to find a user whose id does not exist" do + expect { @workspace.find_by_id_or_name("user", "IDONTEXIST") }.must_raise ArgumentError + end + end + describe "instantiate a channel" do + before do + @channel = Channel.new("https://slack.com/api/conversations.list", ENV["SLACK_TOKEN"]) + Channel.load_all + end + end + describe "find_by_id_or_name" do + before do + VCR.use_cassette("channel_find_by_id_or_name") do + @workspace = Workspace.new + end + end + + it "retrieves the correct channel matching the id" do + channel = nil + + channel = @workspace.find_by_id_or_name("channel", "CN85SCME3") + + expect(channel).must_be_instance_of Channel + expect(channel.name).must_equal "slack-cli" + end + end + + describe "valid_selection" do + before do + VCR.use_cassette("list_details_on_current_recipient") do + @workspace = Workspace.new + end + end + it "returns true if input is valid" do + expect(@workspace.valid_selection?("channel", "random")).must_equal true + expect(@workspace.valid_selection?("user", "Slackbot")).must_equal true + end + it "returns false if input is invalid" do + expect(@workspace.valid_selection?("channel", "nothing")).must_equal false + expect(@workspace.valid_selection?("user", "nobody")).must_equal false + end + end + + describe "list_details_on_current_recipient" do + before do + VCR.use_cassette("list_details_on_current_recipient") do + @workspace = Workspace.new + end + end + it "raises an argument error when no receipient is selected" do + expect { @workspace.list_details_on_current_recipient }.must_raise ArgumentError + end + it "gets details on a selected recipient" do + @workspace.find_by_id_or_name("channel", "CN85SCME3") + expect(@workspace.list_details_on_current_recipient).must_be_instance_of Channel + end + end + + describe "find_by_id_or_name" do + before do + VCR.use_cassette("user_find_by_id_or_name") do + @workspace = Workspace.new + end + end + + it "retrieves the correct user matching the id" do + user = nil + + user = @workspace.find_by_id_or_name("user", "UMURH3TBM") + + expect(user).must_be_instance_of User + expect(user.username).must_equal "m.dove" + end + it "raises an agument error if either a channel or user is not selected" do + expect { @workspace.find_by_id_or_name("otter", "UMURH3TBM") }.must_raise ArgumentError + end + end + describe "send_message" do + before do + VCR.use_cassette("send_message") do + @workspace = Workspace.new + @message_url = @workspace.message_url + @test_message = HTTParty.post(@message_url, + headers: { "Content-Type" => "application/x-www-form-urlencoded" }, + body: { + "token" => ENV["SLACK_TOKEN"], + "channel" => "random", + "text" => "POTTYMOUTH", + }) + end + end + it "can send a message with given text" do + expect @test_message["message"]["text"].must_equal "POTTYMOUTH" + end + it "allows for inclusion of a cat_block" do + VCR.use_cassette("send_message") do + @workspace.find_by_id_or_name("channel", "random") + @sent_message = @workspace.send_message("MEOWMEOW", "yes") + end + expect @sent_message["message"]["blocks"][0]["image_url"].must_include "MEOWMEOW" + expect @workspace.current_recipient.name.must_equal "random" + end + end +end