diff --git a/.gitignore b/.gitignore index 8d6a243f..4c446720 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.rbc /.config /coverage/ +.ds_store /InstalledFiles /pkg/ /spec/reports/ @@ -11,7 +12,7 @@ /tmp/ # Used by dotenv library to load environment variables. -# .env +.env ## Specific to RubyMotion: .dat* diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..05d99bae --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,34 @@ +require_relative "recipient" +require "httparty" +require 'pry' + +module Slack + class Channel < Recipient + attr_reader :topic, :member_count + + def initialize(slack_id, name, topic = nil, member_count) + super(slack_id, name) + @topic = topic + @member_count = member_count + end + + def details + tp self, "slack_id", "name", "topic", "member_count" + end + + def self.list + response = Channel.get("https://slack.com/api/conversations.list") + channels = [] + + response["channels"].each do |channel| + channels << Channel.new( + slack_id = channel["id"], + name = channel["name"], + topic = channel["topic"]["value"], + member_count = channel["num_members"], + ) + end + return channels + end + end +end diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..354a28a1 --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,38 @@ +require "httparty" +require 'pry' + +class API_Error < StandardError +end +module Slack + class Recipient + URL = "https://slack.com/api/users.list" + attr_reader :slack_id, :name + + def initialize(slack_id, name) + @slack_id = slack_id + @name = name + end + + def details + raise API_Error.new, 'Implement me in a child class!' + end + + def self.list + raise API_Error.new, 'Implement me in a child class!' + end + + def self.get(url) + response = HTTParty.get(url, query: {token: ENV['SLACK_API_TOKEN']}) + return response + end + + def send_message(slack_id, message) + response = HTTParty.post("https://slack.com/api/chat.postMessage", query: {token: ENV['SLACK_API_TOKEN'], channel: slack_id, text: message}) + + unless response.code == 200 + raise ExceptionError, "Message not sent." + end + return response + end + end +end diff --git a/lib/slack.rb b/lib/slack.rb index 960cf2f7..21ac41ca 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,11 +1,77 @@ -#!/usr/bin/env ruby +require "dotenv" +require "httparty" +require "table_print" -def main - puts "Welcome to the Ada Slack CLI!" +require_relative "recipient" +require_relative "user" +require_relative "channel" +require_relative "workspace" - # TODO project +Dotenv.load - puts "Thank you for using the Ada Slack CLI" +def main + workspace = Slack::Workspace.new + puts "\n" + puts "Welcome to the Ada Slack CLI! This Slack workspace currently has #{workspace.users.count} users and #{workspace.channels.count} channels. Press enter to continue." + + user_input = gets.chomp + + until user_input == "quit" + print "Please choose an option: list users, list channels, select user, select channel, details, send message, or quit: " + user_input = gets.chomp.downcase + + case user_input + when "list users" + tp workspace.users, "slack_id", "name", "real_name" + puts "\n" + user_input = nil + + when "list channels" + tp workspace.channels, "name", "topic", "member_count", "slack_id" + puts "\n" + user_input = nil + + when "select user" + print "Please enter the user name or ID: " + name_or_id = gets.chomp + puts workspace.select(name_or_id) + puts "\n" + + when "select channel" + print "Please enter the channel name or ID: " + name_or_id = gets.chomp + puts workspace.select(name_or_id) + puts "\n" + + when "details" + if workspace.selected == nil + puts "Please select a user or channel." + user_input = nil + puts "\n" + else + workspace.show_details + user_input = nil + puts "\n" + end + when "send message" + if workspace.selected == nil + puts "Please select a user or channel." + user_input = nil + puts "\n" + else + print "Please enter your message: " + message = gets.chomp + slack_id = workspace.select(name_or_id) + workspace.user_message(message, slack_id) + puts "\n" + end + else + puts "Sorry, I didn't understand your request. Please try again." + puts "\n" + end + end + puts "Thank you for using the ADA Slack CLI!" + puts "\n" 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..515a6147 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,32 @@ +require_relative "recipient" +require "httparty" +require 'pry' + +module Slack + class User < Recipient + attr_reader :real_name + + def initialize(slack_id, name, real_name) + super(slack_id, name) + @real_name = real_name + end + + def details + tp self, "slack_id", "name", "real_name" + end + + def self.list + response = User.get("https://slack.com/api/users.list") + users = [] + + response["members"].each do |user| + users << User.new( + slack_id = user["id"], + name = user["name"], + real_name = user["real_name"], + ) + end + return users + end + end +end diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..d0e8a6e6 --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,41 @@ +require_relative "user" +require_relative "channel" + +module Slack + class Workspace + attr_reader :users, :channels, :selected + + def initialize + @users = User.list + @channels = Channel.list + @selected = nil + end + + def select(name_or_id) + @channels.each do |channel| + if channel.name == name_or_id || channel.slack_id == name_or_id + @selected = channel + return "Okay, #{@selected.name} is selected." + else + @users.each do |user| + if user.name == name_or_id || user.slack_id == name_or_id + @selected = user + return "Okay, #{@selected.name} is selected." + end + end + end + end + puts "Sorry, I couldn't find that user or channel." + end + + def show_details + return @selected.details + end + + def user_message(message, slack_id) + @selected.send_message(@selected.slack_id, message) + return "Success! Message sent to #{@selected.name}." + end + + end +end diff --git a/test/cassettes/channel-info.yml b/test/cassettes/channel-info.yml new file mode 100644 index 00000000..26169781 --- /dev/null +++ b/test/cassettes/channel-info.yml @@ -0,0 +1,84 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_API_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: + - '736' + Connection: + - keep-alive + Date: + - Sat, 14 Sep 2019 22:14:10 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 5adecfe4-0df6-4f44-8961-cbf25b1fb0e8 + 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-1ir4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 1f6e68152880a39d72e6bf2996cd6a61.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - RyLCQM_WwLWaeyQ5TKpGPXNBI1iYl42Q2nJt1AxfV0GJik5uH5M6iw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"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":"UN5R273J8","last_set":1568071183},"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":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"is_group":false,"is_im":false,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"turkey","is_shared":false,"parent_conversation":null,"creator":"UMUR43REX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"To + collect images of turkeys and information about turkeys","creator":"UN5R273J8","last_set":1568232705},"purpose":{"value":"to + collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232665},"purpose":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232660},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"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":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Sat, 14 Sep 2019 22:14:10 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/recipient-info.yml b/test/cassettes/recipient-info.yml new file mode 100644 index 00000000..69cde395 --- /dev/null +++ b/test/cassettes/recipient-info.yml @@ -0,0 +1,249 @@ +--- +http_interactions: +- request: + method: post + uri: https://slack.com/api/chat.postMessage?channel=USLACKBOT&text=Woe%20upon%20your%20Cylon%20heart.&token=SLACK_API_TOKEN + body: + encoding: UTF-8 + 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: + - '188' + Connection: + - keep-alive + Date: + - Sat, 14 Sep 2019 22:14:10 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 3c358ea1-883c-4ea6-8227-350e83f747a3 + 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-4phi + X-Cache: + - Miss from cloudfront + Via: + - 1.1 2e20768704c71ff3ce2e677251d27f3c.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - s_Gfs1fBeeL7UxD-XZhSGXr9z-7GMwAM6bvLaOHr5ceGPsvBdx0EFA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channel":"DN8S5J2F2","ts":"1568499250.000200","message":{"type":"message","subtype":"bot_message","text":"Woe + upon your Cylon heart.","ts":"1568499250.000200","username":"Leaves - Julia + K - API Project","bot_id":"BN8FYF5UN"}}' + http_version: + recorded_at: Sat, 14 Sep 2019 22:14:10 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_API_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: + - '1605' + Connection: + - keep-alive + Date: + - Sat, 14 Sep 2019 22:14:10 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 2c8f6a8b-f950-46c9-901b-097ffd6e823c + 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-xtep + X-Cache: + - Miss from cloudfront + Via: + - 1.1 1570d93226c1bbca2ebaad510cff3e0d.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - "-i775E1GkmDTw819JMyXKpYvN72wBDPvcpZPKpEloKQ0CIiwyleBzA==" + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","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":"TN69AJ2SU"},"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":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha + Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha + Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha + Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina + Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina + Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina + Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya + Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya + Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya + Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071452},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna + Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna + Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia + K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia + K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia + K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071668,"has_2fa":false},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan + Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan + Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan + Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany + Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany + Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071504}],"cache_ts":1568499250,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Sat, 14 Sep 2019 22:14:11 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_API_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: + - '736' + Connection: + - keep-alive + Date: + - Sat, 14 Sep 2019 22:14:11 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - d84fe2e2-107f-4564-89d8-0a55735933aa + 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-wfx1 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 deaaf0548506de20925615eb51a7ea7f.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - xbXQd3GXIZFI2we3ajmGAPUY0EPUsVutltzuxY9ATNmmc7X_JQVD-Q== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"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":"UN5R273J8","last_set":1568071183},"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":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"is_group":false,"is_im":false,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"turkey","is_shared":false,"parent_conversation":null,"creator":"UMUR43REX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"To + collect images of turkeys and information about turkeys","creator":"UN5R273J8","last_set":1568232705},"purpose":{"value":"to + collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232665},"purpose":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232660},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"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":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Sat, 14 Sep 2019 22:14:11 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/user-info.yml b/test/cassettes/user-info.yml new file mode 100644 index 00000000..7a36b677 --- /dev/null +++ b/test/cassettes/user-info.yml @@ -0,0 +1,95 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_API_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: + - '1605' + Connection: + - keep-alive + Date: + - Sat, 14 Sep 2019 22:14:11 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 067b8a7f-9385-467d-a620-e156afaa1694 + 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-uoee + X-Cache: + - Miss from cloudfront + Via: + - 1.1 b48dedcc55e63f14261aa92cf2d61522.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - ZUOwJPtWzJ_AGuNCnJpegBOnAWARSe7sJklx-R9mNdUUjYUondVYTQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","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":"TN69AJ2SU"},"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":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha + Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha + Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha + Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina + Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina + Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina + Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya + Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya + Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya + Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071452},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna + Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna + Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia + K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia + K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia + K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071668,"has_2fa":false},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan + Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan + Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan + Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany + Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany + Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071504}],"cache_ts":1568499251,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Sat, 14 Sep 2019 22:14:11 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/workspace-info.yml b/test/cassettes/workspace-info.yml new file mode 100644 index 00000000..5a536c81 --- /dev/null +++ b/test/cassettes/workspace-info.yml @@ -0,0 +1,422 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_API_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: + - '1605' + Connection: + - keep-alive + Date: + - Sat, 14 Sep 2019 22:14:10 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 8d4fcbff-4078-40fc-bdc7-e4cb34671876 + 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-kftm + X-Cache: + - Miss from cloudfront + Via: + - 1.1 3a6260aec53985f2e6eb8a637c47918d.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - bn9R2GMe7oaWV4qyguFoLww3w5BmxziLHayEqHEvdzbwLadpy7C6sg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","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":"TN69AJ2SU"},"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":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha + Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha + Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha + Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina + Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina + Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina + Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya + Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya + Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya + Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071452},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna + Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna + Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia + K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia + K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia + K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071668,"has_2fa":false},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan + Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan + Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan + Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany + Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany + Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071504}],"cache_ts":1568499250,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Sat, 14 Sep 2019 22:14:10 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_API_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: + - '736' + Connection: + - keep-alive + Date: + - Sat, 14 Sep 2019 22:14:10 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - d61f8ec0-128b-4610-b259-9f653b3d454c + 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-x62j + X-Cache: + - Miss from cloudfront + Via: + - 1.1 42ef990e439ae115ff739f04e3945234.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - UyBFqQsXPkPgPRq3Cxvd4lhFcMwdXnQqiqyAexYYpyQwSOAZUsp7VQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"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":"UN5R273J8","last_set":1568071183},"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":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"is_group":false,"is_im":false,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"turkey","is_shared":false,"parent_conversation":null,"creator":"UMUR43REX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"To + collect images of turkeys and information about turkeys","creator":"UN5R273J8","last_set":1568232705},"purpose":{"value":"to + collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232665},"purpose":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232660},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"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":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Sat, 14 Sep 2019 22:14:10 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_API_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: + - '1605' + Connection: + - keep-alive + Date: + - Sat, 14 Sep 2019 22:21:27 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - c378ce1a-979b-458f-9593-7d81617251b9 + 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-gxt6 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 b4085435efbe95a420f374958bd145bf.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - 82pfDG1y_nkEaBWfP3NkObY4ldjiyn0dwZLVml-U80xJCt_5z9VKxQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN69AJ2SU","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":"TN69AJ2SU"},"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":"UMTG0S5D0","team_id":"TN69AJ2SU","name":"samantha.collares","deleted":false,"color":"674b1b","real_name":"Samantha + Collares","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Samantha + Collares","real_name_normalized":"Samantha Collares","display_name":"Samantha + Collares","display_name_normalized":"Samantha Collares","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge444d412eed","image_24":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e444d412eed1a77c04bbf0fb2c43d8b8.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0008-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071698},{"id":"UMUR43REX","team_id":"TN69AJ2SU","name":"sabrina","deleted":false,"color":"e7392d","real_name":"Sabrina + Lowney","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sabrina + Lowney","real_name_normalized":"Sabrina Lowney","display_name":"Sabrina Lowney","display_name_normalized":"Sabrina + Lowney","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3826fd588f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3826fd588f7f72df044c1512a719f733.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0013-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071592},{"id":"UMZSUVBED","team_id":"TN69AJ2SU","name":"mariya.burrows","deleted":false,"color":"e96699","real_name":"Mariya + Burrows","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mariya + Burrows","real_name_normalized":"Mariya Burrows","display_name":"Mariya Burrows","display_name_normalized":"Mariya + Burrows","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g742995f6521","image_24":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/742995f6521248254aa31fc269323b35.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0001-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071452},{"id":"UN5R273J8","team_id":"TN69AJ2SU","name":"dtingg","deleted":false,"color":"9f69e7","real_name":"Dianna + Tingg","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dianna + Tingg","real_name_normalized":"Dianna Tingg","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g18e16502755","first_name":"Dianna","last_name":"Tingg","image_24":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/18e16502755f0b33603d2f0476f51f79.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071477},{"id":"UN5R3N6P6","team_id":"TN69AJ2SU","name":"juliakingreyworks","deleted":false,"color":"3c989f","real_name":"Julia + K","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Julia + K","real_name_normalized":"Julia K","display_name":"Julia K","display_name_normalized":"Julia + K","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g8ae03401380","image_24":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/8ae034013803a39e79167e24e08629fc.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0003-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071668,"has_2fa":false},{"id":"UN5R3NYUU","team_id":"TN69AJ2SU","name":"morganlschuler","deleted":false,"color":"e0a729","real_name":"Morgan + Schuler","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Morgan + Schuler","real_name_normalized":"Morgan Schuler","display_name":"Morgan Schuler","display_name_normalized":"Morgan + Schuler","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gc6d02aa49cf","image_24":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/c6d02aa49cf9d47142e8cfcb7e897b98.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071410},{"id":"UN69C37BJ","team_id":"TN69AJ2SU","name":"tiffanycee123","deleted":false,"color":"4bbe2e","real_name":"Tiffany + Chio","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Tiffany + Chio","real_name_normalized":"Tiffany Chio","display_name":"Tiffany Chio","display_name_normalized":"Tiffany + Chio","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge49485fcc1e","image_24":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e49485fcc1e6f86f199952b8108015e0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0015-512.png","status_text_canonical":"","team":"TN69AJ2SU"},"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":1568071504}],"cache_ts":1568499687,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Sat, 14 Sep 2019 22:21:27 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_API_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: + - '736' + Connection: + - keep-alive + Date: + - Sat, 14 Sep 2019 22:21:27 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 13607df5-cea2-4641-b27f-dce8a9464bbc + 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-vh1f + X-Cache: + - Miss from cloudfront + Via: + - 1.1 331202b5b8aab67acbf389883133f257.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - Ch_cy8vcG0kshBpfAikr2rGAW6VAd5GcqkA_CzlM0xOOCecejTWoiQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMUR2JTNX","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"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":"UN5R273J8","last_set":1568071183},"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":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7},{"id":"CN6A88SJZ","name":"turkey","is_channel":true,"is_group":false,"is_im":false,"created":1568073346,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"turkey","is_shared":false,"parent_conversation":null,"creator":"UMUR43REX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"To + collect images of turkeys and information about turkeys","creator":"UN5R273J8","last_set":1568232705},"purpose":{"value":"to + collect images of turkeys and information about turkeys","creator":"UMUR43REX","last_set":1568073347},"previous_names":[],"num_members":3},{"id":"CN85BSBQF","name":"slack-cli","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-cli","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232665},"purpose":{"value":"Posts + about the Slack CLI project","creator":"UN5R273J8","last_set":1568232660},"previous_names":[],"num_members":7},{"id":"CN8FME7AS","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071183,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN5R273J8","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN69AJ2SU"],"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":"UN5R273J8","last_set":1568071183},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN5R273J8","last_set":1568071183},"previous_names":[],"num_members":7}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Sat, 14 Sep 2019 22:21:27 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage?channel=CMUR2JTNX&text=The%20bots%20are%20pleased.&token=SLACK_API_TOKEN + body: + encoding: UTF-8 + 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: + - '184' + Connection: + - keep-alive + Date: + - Sat, 14 Sep 2019 23:41:53 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - eea5131a-3a11-4ae1-ae71-e9a9a0586c09 + 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-1m6r + X-Cache: + - Miss from cloudfront + Via: + - 1.1 36fbf419b5fa237613e1567ab33d3698.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19 + X-Amz-Cf-Id: + - 770HxniJfz-0MWPqhC1NugC6ijvB2lJX0wUJFXLthlstAYiPF32Rvg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channel":"CMUR2JTNX","ts":"1568504513.000300","message":{"type":"message","subtype":"bot_message","text":"The + bots are pleased.","ts":"1568504513.000300","username":"Leaves - Julia K - + API Project","bot_id":"BN8FYF5UN"}}' + http_version: + recorded_at: Sat, 14 Sep 2019 23:41:53 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..61518751 --- /dev/null +++ b/test/channel_test.rb @@ -0,0 +1,25 @@ +require_relative "test_helper" + +describe "Channel" do + describe "initialize" do + it "is an instance of Channel" do + channel = Slack::Channel.new("abc", "random", nil, 2) + expect(channel).must_be_kind_of Slack::Channel + end + + it "checks data structures at initialize" do + channel = Slack::Channel.new("abc", "random", nil, 2) + expect(channel.name).must_be_kind_of String + end + end + + describe "self.list" do + it "return an array of Channel Instances" do + VCR.use_cassette("channel-info") do + channel = Slack::Channel.list + expect(channel).must_be_kind_of Array + end + end + + end +end diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..c4e1b74b --- /dev/null +++ b/test/recipient_test.rb @@ -0,0 +1,92 @@ +require_relative "test_helper" + +describe "Recipient" do + describe "initialize" do + it "is an instance of Recipient" do + VCR.use_cassette("recipient-info") do + recipient = Slack::Recipient.new(1, "spongebob") + expect(recipient).must_be_kind_of Slack::Recipient + end + end + + it "checks data structures at initialize" do + VCR.use_cassette("recipient-info") do + recipient = Slack::Recipient.new(1, "spongebob") + expect(recipient).must_be_kind_of Slack::Recipient + end + end + end + + describe "details" do + it "raises an error if implementation attempted within Recipient class" do + VCR.use_cassette("recipient-info") do + recipient = Slack::Recipient.new(1, "spongebob") + expect{ recipient.details + }.must_raise API_Error + end + end + end + + describe "self.list" do + it "raises an error if implementation attempted within Recipient class" do + VCR.use_cassette("recipient-info") do + expect{ Slack::Recipient.list + }.must_raise API_Error + end + end + end + + describe "self.get" do + it "user returns instance of HTTParty" do + VCR.use_cassette("recipient-info") do + user = Slack::Recipient.get("https://slack.com/api/users.list") + expect(user).must_be_kind_of HTTParty::Response + end + end + + it "channel returns an instance of HTTParty" do + VCR.use_cassette("recipient-info") do + channel = Slack::Recipient.get("https://slack.com/api/conversations.list") + expect(channel).must_be_kind_of HTTParty::Response + end + end + end + + describe "send message" do + it "raises an error if invalid ID is provided" do + VCR.use_cassette("recipient-info") do + + slack_id = "INVALID" + message = "I exist only in the ether." + + expect{ Slack::Recipient.send_message(slack_id, message) + }.must_raise Exception + end + end + + it "raises an error if response code isn't 200" do + VCR.use_cassette("recipient-info") do + + slack_id = "USLACKBOT" + message = "Woe upon your Cylon heart." + { "ok": false, "error": "too_many_attachments" } + + expect{ Slack::Recipient.send_message(slack_id, message) + }.must_raise Exception + end + end + + it "returns an instance of HTTParty when successful" do + VCR.use_cassette("recipient-info") do + + slack_id = "USLACKBOT" + message = "Woe upon your Cylon heart." + + api_response = HTTParty.post("https://slack.com/api/chat.postMessage", query: {token: ENV['SLACK_API_TOKEN'], channel: slack_id, text: message}) + + expect(api_response).must_be_kind_of HTTParty::Response + end + end + end + +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 90aeb408..8af07e58 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -9,9 +9,23 @@ require 'minitest/skip_dsl' require 'vcr' +require_relative "../lib/recipient" +require_relative "../lib/user" +require_relative "../lib/channel" +require_relative "../lib/workspace" +require_relative "../lib/slack" + Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new VCR.configure do |config| - config.cassette_library_dir = "test/cassettes" - config.hook_into :webmock + config.cassette_library_dir = "test/cassettes" # folder where casettes will be located + config.hook_into :webmock # tie into this other tool called 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 + } + # Don't leave our token lying around in a cassette file. + config.filter_sensitive_data('SLACK_API_TOKEN') do + ENV['SLACK_API_TOKEN'] + end end diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..5f39f595 --- /dev/null +++ b/test/user_test.rb @@ -0,0 +1,24 @@ +require_relative "test_helper" + +describe "User" do + describe "self.list" do + it "return an array" do + VCR.use_cassette("user-info") do + user_list = Slack::User.list + expect(user_list).must_be_kind_of Array + end + end + describe "initialize" do + it "is an instance of User" do + user = Slack::User.new("CS50", "spongebob", "bob smith") + expect(user).must_be_kind_of Slack::User + end + + it "checks data structures at initialize" do + user = Slack::User.new("CS50", "spongebob", "bob smith") + expect(user.real_name).must_be_kind_of String + end + end + end + +end diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..78be2492 --- /dev/null +++ b/test/workspace_test.rb @@ -0,0 +1,96 @@ +require_relative "test_helper" + +describe "Workspace" do + describe "initialize" do + it "is an instance of Workspace" do + VCR.use_cassette("workspace-info") do + workspace = Slack::Workspace.new + expect(workspace).must_be_kind_of Slack::Workspace + end + end + + it "checks data structures at initialize" do + VCR.use_cassette("workspace-info") do + workspace = Slack::Workspace.new + expect(workspace.users).must_be_kind_of Array + end + end + end + + describe "select" do + it "returns a string for a matching user name" do + VCR.use_cassette("workspace-info") do + workspace = Slack::Workspace.new + name_or_id = "slackbot" + + user = workspace.select(name_or_id) + expect(user).must_be_kind_of String + end + end + + + it "returns a string for a matching channel name" do + VCR.use_cassette("workspace-info") do + workspace = Slack::Workspace.new + name_or_id = "random" + + channel = workspace.select(name_or_id) + expect(channel).must_be_kind_of String + end + end + + it "returns a string for a matching user ID" do + VCR.use_cassette("workspace-info") do + workspace = Slack::Workspace.new + name_or_id = "USLACKBOT" + + user = workspace.select(name_or_id) + expect(user).must_be_kind_of String + end + end + + it "returns a string for a matching channel ID" do + VCR.use_cassette("workspace-info") do + workspace = Slack::Workspace.new + name_or_id = "CMUR2JTNX" + + user = workspace.select(name_or_id) + expect(user).must_be_kind_of String + end + end + + it "returns nil for non-matching input" do + VCR.use_cassette("workspace-info") do + workspace = Slack::Workspace.new + name_or_id = "nonexistentname" + user = workspace.select(name_or_id) + assert_nil user + end + end + end + + describe "show details" do + it "returns a table for the selected user or channel" do + VCR.use_cassette("workspace-info") do + workspace = Slack::Workspace.new + name_or_id = "random" + @selected = workspace.select(name_or_id) + expect(workspace.show_details).must_be_kind_of TablePrint::Returnable + end + end + + end + + describe "user_message" do + it "returns a message string when a message is sent successfully" do + VCR.use_cassette("workspace-info") do + workspace = Slack::Workspace.new + name_or_id = "random" + @selected = workspace.select(name_or_id) + message = "The bots are pleased." + slack_id = "CMUR2JTNX" + expect(workspace.user_message(message, slack_id)).must_be_kind_of String + end + end + end +end