diff --git a/.gitignore b/.gitignore index 3ff4fada..e702a125 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,4 @@ .DS_Store -# Ignore environemnt variables -.env +.env diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..6da3fc37 --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,41 @@ +#coded along with Devin for Wave 1 + +require 'httparty' +require_relative 'recipient' + + +class Channel < Recipient + attr_reader :topic, :member_count + + def initialize(topic:, member_count:, name:, slack_id:) + super(slack_id: slack_id, name: name) + @topic = topic + @member_count = member_count + end + + def details + return [{ + "name" => @name, + "slack_id" => @slack_id, + "topic" => @topic, + "member_count" => @member_count + }] + end + + def self.list_all + data = self.get("https://api.slack.com/api/conversations.list") + channels = [] + + data["channels"].each do |channel| + channels << Channel.new( + name: channel["name"], + slack_id: channel["id"], + topic: channel["topic"]["value"], + member_count: channel["num_members"] + ) + end + + return channels + end + +end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..8ad6d4f6 --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,46 @@ +#coded along with Devin for Wave 1 + +require 'httparty' + +class Recipient + attr_reader :slack_id, :name + + def initialize(slack_id:, name:) + @slack_id = slack_id + @name = name + end + + def send(message) + response = HTTParty.post( + "https://api.slack.com/api/chat.postMessage", + body: { + token: ENV['SLACK_TOKEN'], + text: message, + channel: @slack_id + }, + headers: { 'Content-Type' => 'application/x-www-form-urlencoded' } + ) + end + + def details + raise NotImplementedError, "Define this method in a child class" + end + + def self.get(url) + response = HTTParty.get(url, query: {token: ENV['SLACK_TOKEN']}) + + if response.code != 200 || response["ok"] == false + raise SlackAPIError, "We encountered a problem: #{response["error"]}" + end + + return response + end + + def self.list_all + raise NotImplementedError, "Define this method in a child class" + end +end + + +class SlackAPIError < Exception +end diff --git a/lib/slack.rb b/lib/slack.rb index 8a0b659b..dd7a3a17 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,12 +1,70 @@ +#coded along with Devin for Wave 1 #!/usr/bin/env ruby +require 'httparty' +require 'dotenv' +Dotenv.load +require 'table_print' +require_relative 'workspace' + + def main - puts "Welcome to the Ada Slack CLI!" - workspace = Workspace.new + workspace = Workspace.new + + puts "\n" + puts "Welcome to the Ada Slack CLI! This Slack workspace currently has #{workspace.users.length} users and #{workspace.channels.length} channels." + + user_input = input_prompt + + #really liked this way of formatting after seeing it on the Wave 1 Live Code vs using if-elsif statements + ##changed my formatting to match. + until user_input == "Quit" + + case user_input + when "List users" + tp workspace.users, "slack_id", "name", "real_name", "status_emoji", "status_text" + puts "\n" + + when "List channels" + tp workspace.channels, "name", "slack_id", "topic", "member_count" + puts "\n" + + when "Select user" + print "Please enter user name or ID: " + user_input = gets.chomp.upcase + workspace.select_user(user_input) + puts "\n" + + when "Select channel" + print "Please enter channel name or ID: " + user_input = gets.chomp.upcase + workspace.select_channel(user_input) + puts "\n" + + when "Details" + workspace.show_details + + when "Send message" + workspace.send_message + + else + puts "Sorry, I didn't understand your request. Please try again." + end + + user_input = input_prompt + end + + puts "Thank you for using the ADA Slack CLI!" + puts "\n" + +end - # TODO project +def input_prompt + puts "What would you like to do? Your options are:" + puts "List users \nList channels \nSelect user \nSelect channel \nDetails \nSend message \nQuit" + puts "\n" - puts "Thank you for using the Ada Slack CLI" + return gets.chomp.capitalize end main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..dfbef9b4 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,39 @@ +#coded along with Devin for Wave 1 +require 'httparty' +require_relative 'recipient' + +class User < Recipient + attr_reader :real_name, :status_text + + def initialize(real_name:, status_text:, name:, slack_id:) + super(slack_id: slack_id, name: name) + + @real_name = real_name + @status_text = status_text + end + + def details + return [{ + "name" => @name, + "slack_id" => @slack_id, + "real_name" => @real_name, + "status_text" => @status_text + }] + end + + def self.list_all + data = self.get("https://api.slack.com/api/users.list") + users = [] + + data["members"].each do |user| + users << User.new( + name: user["name"], + slack_id: user["id"], + real_name: user["profile"]["real_name"], + status_text: user["profile"]["status_text"] + ) + end + + return users + end +end \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..6399f348 --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,58 @@ +#coded along with Devin for Wave 1 + +require_relative 'user' +require_relative 'channel' +require 'dotenv' +Dotenv.load + +class Workspace + attr_reader :users, :channels, :selected + + def initialize + @users = User.list_all + @channels = Channel.list_all + @selected = nil + end + + def select_user(user_input) + @users.each do |user| + if (user.name.upcase || user.slack_id.upcase) == user_input + @selected = user + return @selected + end + end + end + + def select_channel(user_input) + @channels.each do |channel| + if (channel.name.upcase || channel.slack_id.upcase) == user_input + @selected = channel + return @selected + end + end + end + + def show_details + if @selected == nil + puts "Unable to show details, as no recipient is selected." + puts "\n\n" + else + puts "The current recipient is: #{@selected.name}, #{@selected.slack_id}." + puts "\n\n" + end + end + + def send_message + if @selected == nil + puts "Please select a recipient before attempting to send a messsage." + puts "\n\n" + else + puts "Please enter your message: " + message = gets.chomp + @selected.send(message) + end + end + +end + + diff --git a/test/cassettes/channel-list-endpoint.yml b/test/cassettes/channel-list-endpoint.yml new file mode 100644 index 00000000..8e7be7b1 --- /dev/null +++ b/test/cassettes/channel-list-endpoint.yml @@ -0,0 +1,229 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/bogus.endpoint?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: + - '80' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 14:49:37 GMT + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Referrer-Policy: + - no-referrer + X-Slack-Backend: + - h + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 1ecbe6f45819fb27086d9d56cc109dd1 + X-Xss-Protection: + - '0' + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-dph4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 174acb08636ac7d9e9a778bbf1bcbc53.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - l4njQlBeRrwND0yiBL_PVFqwYr4ttmxo-a7CXWxw-nevkh8Fx_AaAw== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"unknown_method","req_method":"bogus.endpoint"}' + http_version: null + recorded_at: Mon, 16 Mar 2020 14:49:38 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: + - '811' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 14:49:38 GMT + Server: + - Apache + X-Slack-Req-Id: + - 8aad180573f7adabaf2d3385689b1701 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - r + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-bylg + X-Cache: + - Miss from cloudfront + Via: + - 1.1 10b37ec1ede3e33f11dd42b87558cd1f.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - jNjDwvxfnfKuKZblDwKrIfv_-z65srdMWy-6lZ9WhcnVjMSBAok-zg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUT6XEYR0","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865723,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"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":"UUUGBHPDH","last_set":1583865723},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UUUGBHPDH","last_set":1583865723},"previous_names":[],"num_members":5},{"id":"CUT6ZCFGS","name":"rand_channel2","is_channel":true,"is_group":false,"is_im":false,"created":1583865776,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"rand_channel2","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CUUGBK77D","name":"slack-api-project","is_channel":true,"is_group":false,"is_im":false,"created":1583865723,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api-project","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CV1D0TP50","name":"test_channel","is_channel":true,"is_group":false,"is_im":false,"created":1584165197,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"test_channel","is_shared":false,"parent_conversation":null,"creator":"UUT7ESHPU","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"for + testing","creator":"UUT7ESHPU","last_set":1584165198},"previous_names":[],"num_members":1},{"id":"CV60NTK4G","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865723,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UUUGBHPDH","last_set":1583865723},"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":"UUUGBHPDH","last_set":1583865723},"previous_names":[],"num_members":4},{"id":"CV8KPL19U","name":"katiestestchannel","is_channel":true,"is_group":false,"is_im":false,"created":1583879041,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"katiestestchannel","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"C01050CDZC6","name":"olivias_spam","is_channel":true,"is_group":false,"is_im":false,"created":1584365923,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"olivias_spam","is_shared":false,"parent_conversation":null,"creator":"UV5GT0PBN","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"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":1}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Mon, 16 Mar 2020 14:49:38 GMT +- request: + method: get + uri: https://api.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: + - '811' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 14:49:38 GMT + Server: + - Apache + X-Slack-Req-Id: + - d538eed86461a02978663b6eca14ce93 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-ghzf + X-Cache: + - Miss from cloudfront + Via: + - 1.1 61bc723adb3b1884ed759711e84e13a9.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - l9c0ToTMCdnrwKcB5DCJULRyyYXKLXlbiLEXxJZfiCi4uGPQToEpwg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUT6XEYR0","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865723,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"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":"UUUGBHPDH","last_set":1583865723},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UUUGBHPDH","last_set":1583865723},"previous_names":[],"num_members":5},{"id":"CUT6ZCFGS","name":"rand_channel2","is_channel":true,"is_group":false,"is_im":false,"created":1583865776,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"rand_channel2","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CUUGBK77D","name":"slack-api-project","is_channel":true,"is_group":false,"is_im":false,"created":1583865723,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api-project","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CV1D0TP50","name":"test_channel","is_channel":true,"is_group":false,"is_im":false,"created":1584165197,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"test_channel","is_shared":false,"parent_conversation":null,"creator":"UUT7ESHPU","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"for + testing","creator":"UUT7ESHPU","last_set":1584165198},"previous_names":[],"num_members":1},{"id":"CV60NTK4G","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865723,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UUUGBHPDH","last_set":1583865723},"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":"UUUGBHPDH","last_set":1583865723},"previous_names":[],"num_members":4},{"id":"CV8KPL19U","name":"katiestestchannel","is_channel":true,"is_group":false,"is_im":false,"created":1583879041,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"katiestestchannel","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"C01050CDZC6","name":"olivias_spam","is_channel":true,"is_group":false,"is_im":false,"created":1584365923,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"olivias_spam","is_shared":false,"parent_conversation":null,"creator":"UV5GT0PBN","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"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":1}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Mon, 16 Mar 2020 14:49:38 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/send.yml b/test/cassettes/send.yml new file mode 100644 index 00000000..fd32f030 --- /dev/null +++ b/test/cassettes/send.yml @@ -0,0 +1,80 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.slack.com/api/chat.postMessage + body: + encoding: UTF-8 + string: token=&text=hello&channel=C01050CDZC6 + headers: + Content-Type: + - application/x-www-form-urlencoded + 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: + - '334' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 14:49:37 GMT + Server: + - Apache + X-Slack-Req-Id: + - 119c20734a0feaebf21f6dea8790ad21 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - chat:write + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-5fln + X-Cache: + - Miss from cloudfront + Via: + - 1.1 98aedae6661e3904540676966998ed89.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - YyDZaZpw2GAVwFOfTajdv_VZt0WqiqoLpahFpNpLYzzudkUwa0MLWg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channel":"C01050CDZC6","ts":"1584370177.000800","message":{"bot_id":"BV2JBMGJX","type":"message","text":"hello","user":"UV5GT0PBN","ts":"1584370177.000800","team":"TV617KKKP","bot_profile":{"id":"BV2JBMGJX","deleted":false,"name":"Space + - Olivia - API Project","updated":1584147630,"app_id":"A01028HT4FQ","icons":{"image_36":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/bot_36.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/bot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/service_72.png"},"team_id":"TV617KKKP"}}}' + http_version: null + recorded_at: Mon, 16 Mar 2020 14:49:37 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/users-list-endpoint.yml b/test/cassettes/users-list-endpoint.yml new file mode 100644 index 00000000..12254b2d --- /dev/null +++ b/test/cassettes/users-list-endpoint.yml @@ -0,0 +1,235 @@ +--- +http_interactions: +- request: + method: get + uri: https://api.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: + - '1809' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 14:49:36 GMT + Server: + - Apache + X-Slack-Req-Id: + - c1c56e6527a0aea6a782746674ce5511 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-gnio + X-Cache: + - Miss from cloudfront + Via: + - 1.1 d6a002c70d55f415107618b0750d493d.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - O2W7yZ0_G056dUyI4Pd386duAH9gnWAFOplDS7NdrGjnlCB0UBFvDg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV617KKKP","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":"TV617KKKP"},"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":"UUT7ESHPU","team_id":"TV617KKKP","name":"pchelina.kate","deleted":false,"color":"e7392d","real_name":"Ekaterina","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"hello","phone":"","skype":"","real_name":"Ekaterina","real_name_normalized":"Ekaterina","display_name":"Kate","display_name_normalized":"Kate","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge00c4c4b571","first_name":"Ekaterina","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1584084018},{"id":"UUUGBHPDH","team_id":"TV617KKKP","name":"katie.vandervoort","deleted":false,"color":"9f69e7","real_name":"katie.vandervoort","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"katie.vandervoort","real_name_normalized":"katie.vandervoort","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g05c27faff1c","image_24":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1584320106},{"id":"UUUL7E4HZ","team_id":"TV617KKKP","name":"katieslackapiproject","deleted":false,"color":"674b1b","real_name":"katieslackapiproject","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"katieslackapiproject","real_name_normalized":"katieslackapiproject","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g5d44bcb8226","api_app_id":"AV8A54MK8","always_active":false,"bot_id":"BUW222YSD","image_24":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583869411},{"id":"UUWHGFP25","team_id":"TV617KKKP","name":"time_kate_api_project","deleted":false,"color":"e0a729","real_name":"time_kate_api_project","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_kate_api_project","real_name_normalized":"time_kate_api_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge2f423a0037","api_app_id":"AV665NBEY","always_active":true,"bot_id":"BV8S561GE","first_name":"time_kate_api_project","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1584214923},{"id":"UV5GT0PBN","team_id":"TV617KKKP","name":"oliviamulholland94","deleted":false,"color":"4bbe2e","real_name":"Liv + Mulholland","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Liv + Mulholland","real_name_normalized":"Liv Mulholland","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g887cc50d61b","image_24":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1583871017,"has_2fa":false},{"id":"UV5KULM28","team_id":"TV617KKKP","name":"lucky.seattle.monkey","deleted":false,"color":"3c989f","real_name":"Charlotte","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Charlotte","real_name_normalized":"Charlotte","display_name":"Charlotte","display_name_normalized":"Charlotte","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g7847ff4c074","image_24":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1583869293},{"id":"UV8K51L30","team_id":"TV617KKKP","name":"space_charlotte_api_p","deleted":false,"color":"e96699","real_name":"space_charlotte_api_p","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_charlotte_api_p","real_name_normalized":"space_charlotte_api_p","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g03c8e8249fa","api_app_id":"AV8K0D2AJ","always_active":false,"bot_id":"BUUUM6U59","image_24":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878260},{"id":"UVDJNMTC4","team_id":"TV617KKKP","name":"space_olivia_api_proj","deleted":false,"color":"684b6c","real_name":"space_olivia_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_olivia_api_proj","real_name_normalized":"space_olivia_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g68b3c5d6959","api_app_id":"A01028HT4FQ","always_active":false,"bot_id":"B0101U26D1V","image_24":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1584147555}],"cache_ts":1584370176,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Mon, 16 Mar 2020 14:49:36 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: + - '1809' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 14:49:38 GMT + Server: + - Apache + X-Slack-Req-Id: + - b12c00eb232069c10a2401b271aba047 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-4usq + X-Cache: + - Miss from cloudfront + Via: + - 1.1 b48dedcc55e63f14261aa92cf2d61522.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - 7Ug-aAkiGlRfILbLaFNw-ON-VPIHa8YZEt1_wdpXc3c2GMscqWzxqA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV617KKKP","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":"TV617KKKP"},"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":"UUT7ESHPU","team_id":"TV617KKKP","name":"pchelina.kate","deleted":false,"color":"e7392d","real_name":"Ekaterina","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"hello","phone":"","skype":"","real_name":"Ekaterina","real_name_normalized":"Ekaterina","display_name":"Kate","display_name_normalized":"Kate","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge00c4c4b571","first_name":"Ekaterina","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1584084018},{"id":"UUUGBHPDH","team_id":"TV617KKKP","name":"katie.vandervoort","deleted":false,"color":"9f69e7","real_name":"katie.vandervoort","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"katie.vandervoort","real_name_normalized":"katie.vandervoort","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g05c27faff1c","image_24":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1584320106},{"id":"UUUL7E4HZ","team_id":"TV617KKKP","name":"katieslackapiproject","deleted":false,"color":"674b1b","real_name":"katieslackapiproject","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"katieslackapiproject","real_name_normalized":"katieslackapiproject","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g5d44bcb8226","api_app_id":"AV8A54MK8","always_active":false,"bot_id":"BUW222YSD","image_24":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583869411},{"id":"UUWHGFP25","team_id":"TV617KKKP","name":"time_kate_api_project","deleted":false,"color":"e0a729","real_name":"time_kate_api_project","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_kate_api_project","real_name_normalized":"time_kate_api_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge2f423a0037","api_app_id":"AV665NBEY","always_active":true,"bot_id":"BV8S561GE","first_name":"time_kate_api_project","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1584214923},{"id":"UV5GT0PBN","team_id":"TV617KKKP","name":"oliviamulholland94","deleted":false,"color":"4bbe2e","real_name":"Liv + Mulholland","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Liv + Mulholland","real_name_normalized":"Liv Mulholland","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g887cc50d61b","image_24":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1583871017,"has_2fa":false},{"id":"UV5KULM28","team_id":"TV617KKKP","name":"lucky.seattle.monkey","deleted":false,"color":"3c989f","real_name":"Charlotte","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Charlotte","real_name_normalized":"Charlotte","display_name":"Charlotte","display_name_normalized":"Charlotte","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g7847ff4c074","image_24":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1583869293},{"id":"UV8K51L30","team_id":"TV617KKKP","name":"space_charlotte_api_p","deleted":false,"color":"e96699","real_name":"space_charlotte_api_p","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_charlotte_api_p","real_name_normalized":"space_charlotte_api_p","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g03c8e8249fa","api_app_id":"AV8K0D2AJ","always_active":false,"bot_id":"BUUUM6U59","image_24":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878260},{"id":"UVDJNMTC4","team_id":"TV617KKKP","name":"space_olivia_api_proj","deleted":false,"color":"684b6c","real_name":"space_olivia_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_olivia_api_proj","real_name_normalized":"space_olivia_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g68b3c5d6959","api_app_id":"A01028HT4FQ","always_active":false,"bot_id":"B0101U26D1V","image_24":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1584147555}],"cache_ts":1584370178,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Mon, 16 Mar 2020 14:49:38 GMT +- request: + method: get + uri: https://slack.com/api/bogus.endpoint?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: + - '80' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 14:49:38 GMT + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Referrer-Policy: + - no-referrer + X-Slack-Backend: + - h + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - c4ed8587335a03e023fb529bef785401 + X-Xss-Protection: + - '0' + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-14kb + X-Cache: + - Miss from cloudfront + Via: + - 1.1 8275ae3e861a04a309ec8b466cdc4a26.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - Udnt4FzrFvmrcQSuqOhG88yQRAXPYuw6hIQBolN0iXildVLUV770DA== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"unknown_method","req_method":"bogus.endpoint"}' + http_version: null + recorded_at: Mon, 16 Mar 2020 14:49:38 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/workspace-data.yml b/test/cassettes/workspace-data.yml new file mode 100644 index 00000000..379528b7 --- /dev/null +++ b/test/cassettes/workspace-data.yml @@ -0,0 +1,168 @@ +--- +http_interactions: +- request: + method: get + uri: https://api.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: + - '1809' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 14:49:36 GMT + Server: + - Apache + X-Slack-Req-Id: + - 7bd99eb5d3c8193db7b7fa10511caa89 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - r + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-xfo9 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 112d82578d402a38d8d02e8b857617e1.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - otsr0I5m06R4MNFVEUeiumVttzoajDcweaw3UeCCGr22_GNmN8UrXA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV617KKKP","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":"TV617KKKP"},"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":"UUT7ESHPU","team_id":"TV617KKKP","name":"pchelina.kate","deleted":false,"color":"e7392d","real_name":"Ekaterina","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"hello","phone":"","skype":"","real_name":"Ekaterina","real_name_normalized":"Ekaterina","display_name":"Kate","display_name_normalized":"Kate","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge00c4c4b571","first_name":"Ekaterina","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e00c4c4b5711b9dde7578be443cbbac4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0010-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1584084018},{"id":"UUUGBHPDH","team_id":"TV617KKKP","name":"katie.vandervoort","deleted":false,"color":"9f69e7","real_name":"katie.vandervoort","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"katie.vandervoort","real_name_normalized":"katie.vandervoort","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g05c27faff1c","image_24":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/05c27faff1ced480969f574b1c34940d.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0007-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1584320106},{"id":"UUUL7E4HZ","team_id":"TV617KKKP","name":"katieslackapiproject","deleted":false,"color":"674b1b","real_name":"katieslackapiproject","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"katieslackapiproject","real_name_normalized":"katieslackapiproject","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g5d44bcb8226","api_app_id":"AV8A54MK8","always_active":false,"bot_id":"BUW222YSD","image_24":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/5d44bcb8226b5cb96467fa6f3178cefd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583869411},{"id":"UUWHGFP25","team_id":"TV617KKKP","name":"time_kate_api_project","deleted":false,"color":"e0a729","real_name":"time_kate_api_project","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_kate_api_project","real_name_normalized":"time_kate_api_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge2f423a0037","api_app_id":"AV665NBEY","always_active":true,"bot_id":"BV8S561GE","first_name":"time_kate_api_project","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e2f423a0037f2046c42a0b9e2f2bd8fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0012-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1584214923},{"id":"UV5GT0PBN","team_id":"TV617KKKP","name":"oliviamulholland94","deleted":false,"color":"4bbe2e","real_name":"Liv + Mulholland","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Liv + Mulholland","real_name_normalized":"Liv Mulholland","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g887cc50d61b","image_24":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/887cc50d61be79a5ceb6e587d9fccbc4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1583871017,"has_2fa":false},{"id":"UV5KULM28","team_id":"TV617KKKP","name":"lucky.seattle.monkey","deleted":false,"color":"3c989f","real_name":"Charlotte","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Charlotte","real_name_normalized":"Charlotte","display_name":"Charlotte","display_name_normalized":"Charlotte","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g7847ff4c074","image_24":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/7847ff4c07422eed7349937685f7a643.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-512.png","status_text_canonical":"","team":"TV617KKKP"},"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":1583869293},{"id":"UV8K51L30","team_id":"TV617KKKP","name":"space_charlotte_api_p","deleted":false,"color":"e96699","real_name":"space_charlotte_api_p","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_charlotte_api_p","real_name_normalized":"space_charlotte_api_p","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g03c8e8249fa","api_app_id":"AV8K0D2AJ","always_active":false,"bot_id":"BUUUM6U59","image_24":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/03c8e8249fada9835861ce96e126d4f5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0021-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878260},{"id":"UVDJNMTC4","team_id":"TV617KKKP","name":"space_olivia_api_proj","deleted":false,"color":"684b6c","real_name":"space_olivia_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_olivia_api_proj","real_name_normalized":"space_olivia_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g68b3c5d6959","api_app_id":"A01028HT4FQ","always_active":false,"bot_id":"B0101U26D1V","image_24":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/68b3c5d695971b6cef412319bbd04385.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV617KKKP"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1584147555}],"cache_ts":1584370176,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Mon, 16 Mar 2020 14:49:36 GMT +- request: + method: get + uri: https://api.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: + - '811' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 14:49:36 GMT + Server: + - Apache + X-Slack-Req-Id: + - 85aac9562b02994482bec4848b7218cf + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-hitr + X-Cache: + - Miss from cloudfront + Via: + - 1.1 d6b180eb367f7de26d67a9f3901b96a6.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - 5aBOvbapQMjHruAVgTvUxjJsIBKTAAlJn5auR8ey_J49BCy49CsTZw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUT6XEYR0","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865723,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"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":"UUUGBHPDH","last_set":1583865723},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UUUGBHPDH","last_set":1583865723},"previous_names":[],"num_members":5},{"id":"CUT6ZCFGS","name":"rand_channel2","is_channel":true,"is_group":false,"is_im":false,"created":1583865776,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"rand_channel2","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CUUGBK77D","name":"slack-api-project","is_channel":true,"is_group":false,"is_im":false,"created":1583865723,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api-project","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CV1D0TP50","name":"test_channel","is_channel":true,"is_group":false,"is_im":false,"created":1584165197,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"test_channel","is_shared":false,"parent_conversation":null,"creator":"UUT7ESHPU","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"for + testing","creator":"UUT7ESHPU","last_set":1584165198},"previous_names":[],"num_members":1},{"id":"CV60NTK4G","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865723,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UUUGBHPDH","last_set":1583865723},"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":"UUUGBHPDH","last_set":1583865723},"previous_names":[],"num_members":4},{"id":"CV8KPL19U","name":"katiestestchannel","is_channel":true,"is_group":false,"is_im":false,"created":1583879041,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"katiestestchannel","is_shared":false,"parent_conversation":null,"creator":"UUUGBHPDH","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"C01050CDZC6","name":"olivias_spam","is_channel":true,"is_group":false,"is_im":false,"created":1584365923,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"olivias_spam","is_shared":false,"parent_conversation":null,"creator":"UV5GT0PBN","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV617KKKP"],"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":1}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Mon, 16 Mar 2020 14:49:36 GMT +recorded_with: VCR 5.1.0 diff --git a/test/channel_test.rb b/test/channel_test.rb new file mode 100644 index 00000000..0524d364 --- /dev/null +++ b/test/channel_test.rb @@ -0,0 +1,52 @@ +#coded along with Devin for Wave 1 + +require_relative "test_helper" +require_relative '../lib/channel' + +describe "Channel" do + + describe "Channel.new" do + it "creates a new channel" do + new_channel = Channel.new(slack_id: 1, name: "name", topic: "topic", member_count: "member_count") + + expect(new_channel.name).must_equal "name" + expect(new_channel.slack_id).must_equal 1 + expect(new_channel).must_be_kind_of Channel + end + end + + describe "self.get" do + it "gets a list of channels" do + result = {} + VCR.use_cassette("channel-list-endpoint") do + result = Channel.get("https://slack.com/api/conversations.list") + end + + expect(result).must_be_kind_of HTTParty::Response + expect(result["ok"]).must_equal true + end + + it "raises an error when a call fails" do + VCR.use_cassette("channel-list-endpoint") do + expect {User.get("https://slack.com/api/bogus.endpoint")}.must_raise SlackAPIError + end + end + end + + describe "self.list" do + it "returns a valid list of channels" do + result = [] + + VCR.use_cassette("channel-list-endpoint") do + result = Channel.list_all + end + + expect(result).must_be_kind_of Array + expect(result.length).must_be :>, 0 + result.each do |channel| + expect(channel).must_be_kind_of Channel + end + end + end + +end \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..ad321d2b --- /dev/null +++ b/test/recipient_test.rb @@ -0,0 +1,30 @@ +require_relative "test_helper" +require_relative '../lib/recipient' + +describe "Recipient" do + before do + @new_recipient = Recipient.new(slack_id: "C01050CDZC6", name: "name") + end + + it "initializes recipient" do + expect(@new_recipient).must_be_kind_of Recipient + expect(@new_recipient.name).must_equal "name" + expect(@new_recipient.slack_id).must_equal "C01050CDZC6" + end + + describe "send method" do + it "sends a slack message" do + response = nil + message = "hello" + + VCR.use_cassette("send") do + response = @new_recipient.send(message) + end + + expect(response).must_be_kind_of HTTParty::Response + expect(response["ok"]).must_equal true + expect(response["channel"]).must_equal "C01050CDZC6" + expect(response["message"]["text"]).must_equal message + end + end +end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index 1fcf2bab..483af4ac 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,13 +1,22 @@ +#coded along with Devin for Wave 1 + require 'simplecov' SimpleCov.start do add_filter 'test/' + add_filter 'lib/slack.rb' end +require 'httparty' require 'minitest' require 'minitest/autorun' require 'minitest/reporters' require 'minitest/skip_dsl' +require 'webmock/minitest' require 'vcr' +require 'dotenv' + +Dotenv.load + Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new @@ -17,13 +26,15 @@ end VCR.configure do |config| - config.cassette_library_dir = "test/cassettes" # folder where casettes will be located - config.hook_into :webmock # tie into this other tool called webmock + config.cassette_library_dir = "test/cassettes" + config.hook_into :webmock config.default_cassette_options = { - :record => :new_episodes, # record new data when we don't have it yet - :match_requests_on => [:method, :uri, :body], # The http method, URI and body of a request all need to match + :record => :new_episodes, + :match_requests_on => [:method, :uri, :body] } - # Don't leave our token lying around in a cassette file. + config.filter_sensitive_data("") do + ENV['SLACK_TOKEN'] + end end diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..0a8ed036 --- /dev/null +++ b/test/user_test.rb @@ -0,0 +1,50 @@ +#coded along with Devin for Wave 1 + +require_relative "test_helper" +require_relative '../lib/user' + +describe "User" do + describe "User.new" do + it "creates a new user" do + new_user = User.new(slack_id: 8, name: "Liv", real_name: "Olivia", status_text: "tired, per usual") + + expect(new_user.name).must_equal "Liv" + expect(new_user.slack_id).must_equal 8 + expect(new_user).must_be_kind_of User + end + end + + describe "self.get" do + it "gets a list of users" do + result = {} + VCR.use_cassette("users-list-endpoint") do + result = User.get("https://slack.com/api/users.list") + end + + expect(result).must_be_kind_of HTTParty::Response + expect(result["ok"]).must_equal true + end + + it "raises an error when a call fails" do + VCR.use_cassette("users-list-endpoint") do + expect {User.get("https://slack.com/api/bogus.endpoint")}.must_raise SlackAPIError + end + end + end + + describe "self.list" do + it "returns a valid list of users" do + result = [] + + VCR.use_cassette("users-list-endpoint") do + result = User.list_all + end + + expect(result).must_be_kind_of Array + expect(result.length).must_be :>, 0 + result.each do |user| + expect(user).must_be_kind_of User + end + end + end +end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..7b5fa5e9 --- /dev/null +++ b/test/workspace_test.rb @@ -0,0 +1,51 @@ +#coded along with Devin for Wave 1 + +require_relative "test_helper" +require_relative '../lib/workspace' + +describe "Workspace" do + before do + VCR.use_cassette("workspace-data") do + @new_workspace = Workspace.new + end + end + + describe "initializes workspace" do + it "creates instance of workspace" do + expect(@new_workspace).must_be_kind_of Workspace + end + + it "has array of users and channels" do + expect(@new_workspace.channels).must_be_kind_of Array + expect(@new_workspace.users).must_be_kind_of Array + expect(@new_workspace.selected).must_equal nil + end + end + + describe "select_user and select_channel methods" do + it "selects user based off user input" do + @new_workspace.select_user("OLIVIAMULHOLLAND94") + + expect(@new_workspace.selected).must_be_kind_of User + expect(@new_workspace.selected.name).must_equal "oliviamulholland94" + expect(@new_workspace.selected.slack_id).must_equal "UV5GT0PBN" + end + + it "selects channel based off user input" do + @new_workspace.select_channel("RANDOM") + + expect(@new_workspace.selected).must_be_kind_of Channel + expect(@new_workspace.selected.name).must_equal "random" + expect(@new_workspace.selected.slack_id).must_equal "CV60NTK4G" + end + end + + describe "show_details" do + it "returns selected user details" do + deets = @new_workspace.select_user("OLIVIAMULHOLLAND94").show_details + + expect(deets).must_be_kind_of String + expect(deets).must_equal "The current recipient is: oliviamulholland94, UV5GT0PBN." + end + end +end \ No newline at end of file