diff --git a/.gitignore b/.gitignore index 3ff4fada..d75d727d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ # Ignore environemnt variables .env +coverage diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..1ac47683 --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,23 @@ +require_relative "recipient" + +class Channel < Recipient + attr_reader :num_members, :topic + + def initialize(id, name, num_members, topic) + super(id, name) + + @num_members = num_members + @topic = topic + + if @id == nil || @name == nil || @num_members == nil || @topic == nil + raise ArgumentError, "arguments can't be nil" + end + end + + def details + puts "Name: #{@name}" + puts "Topic: #{@topic}" + puts "Number of Members: #{@num_members}" + puts "Channel ID: #{@id}" + end +end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..db5f9e3e --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,38 @@ +require 'dotenv' +require 'httparty' + + +Dotenv.load + +BASE_URL = "https://slack.com/api/chat.postMessage" +# KEY = ENV["SLACK_TOKEN"] + + +class Recipient + attr_accessor :name, :id + def initialize(id, name) + @name = name + @id = id + end + + def self.create + raise NotImplementedError + end + + def details + raise NotImplementedError + end + + def send_message(message,selected_recipient) + response = HTTParty.post( + "#{BASE_URL}", { + body: { + token: KEY, + channel: selected_recipient.id, + text: message + } + }) + puts "message sent" + return response.code == 200 && response.parsed_response["ok"] + end +end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index 8a0b659b..1cd5f4f9 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,12 +1,63 @@ #!/usr/bin/env ruby +require 'httparty' +require 'table_print' +require_relative 'workspace' def main puts "Welcome to the Ada Slack CLI!" workspace = Workspace.new - # TODO project + puts "Your workspace has #{workspace.num_of_channels} channels." + puts "Your workspace has #{workspace.num_of_users} users." + + options(workspace) puts "Thank you for using the Ada Slack CLI" end +# @TODO: Refactor to make this not recursive. Nice to have, +# but not required. +def options(workspace) + puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- send message\n- quit" + user_input = gets.chomp.downcase + valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "send message", "quit"] + + until valid_inputs.include?(user_input) + puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- send message\n- quit" + user_input = gets.chomp.downcase + end + + case user_input + when "list users" + # @TODO why does this not work tp workspace.users, "slack_id", "name", "real_name" + workspace.list_users + options(workspace) + when "list channels" + workspace.list_channels + options(workspace) + when "select user" + user_info = workspace.name_or_id("user") + options(workspace) + when "select channel" + channel_info = workspace.name_or_id("channel") + options(workspace) + when "details" + if workspace.selected_type == "user" || workspace.selected_type == "channel" + workspace.selected_recipient.details + else + "You have not selected a recipient." + end + options(workspace) + when "send message" + workspace.send_message_if_selected + options(workspace) + when "quit" + return + end +end + + + + + main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..6857eb67 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,24 @@ +require 'table_print' + +require_relative 'recipient' + +#module Slack + class User < Recipient + attr_reader :real_name + + def initialize (id, name, real_name) + super(id, name) + @real_name = real_name + + if @id == nil || @name == nil || @real_name == nil + raise ArgumentError, "arguments can't be nil" + end + end + + def details + puts "Username: #{@name}" + puts "Name: #{@real_name}" + puts "Id: #{@id}" + end + end +#end diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..32edbc65 --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,106 @@ + +require 'dotenv' +require 'httparty' + +require_relative 'recipient' +require_relative 'user' +require_relative 'channel' + +# @TODO: Load environment objects and key in an actual method +Dotenv.load + +KEY = ENV["SLACK_TOKEN"] + +class Workspace + attr_accessor :channels, :users, :selected_recipient, :selected_type + + def initialize + @users = Workspace.get("https://slack.com/api/users.list") + @channels = Workspace.get("https://slack.com/api/conversations.list") + @selected_recipient = nil + @selected_type = nil + end + + def self.get(url) + response = HTTParty.get(url, query: {token: ENV['SLACK_TOKEN']}) + + if response.code != 200 || response["ok"] == false + raise SlackAPIError, "We encountered a problem: #{response["error"]}" + end + + return response + end + + def num_of_channels + number = @channels["channels"].count + return number + end + + def list_channels + i = 1 + + channels["channels"].each do |channel| + puts "Channel number #{i}'s name is #{channel["name"]}, their topic is '#{channel["topic"]["value"]}', it has #{channel["num_members"]} members and its id is #{channel["id"]}." + i += 1 + end + + end + + def num_of_users + number = users["members"].count + return number + end + + def list_users + i = 1 + + users["members"].each do |member| + puts "User number #{i}'s username is #{member["name"]}, their name is #{member["real_name"]}, and id is #{member["id"]}." + i += 1 + end + end + + + + def send_message_if_selected + if selected_recipient != nil + puts "Lets send a message!" + puts "Please type the message you want to send." + message = gets.chomp + selected_recipient.send_message(message, selected_recipient) + else + puts "You don't have any recipient selected" + end + end + + def name_or_id(type) # TODO break this up into methods select channel and select user to better match given design + puts "Please provide a user name or ID for your channel or user" + answer = gets.chomp + + if type == "user" + users["members"].each do |member| + if member["name"] == answer || member["id"] == answer + @selected_recipient = User.new(member["id"], member["name"], member["real_name"]) + @selected_type = "user" + puts "Thank you, I have noted your selection" + return + end + end + puts "You did not provide a vaild recipient" + return + elsif type == "channel" + channels["channels"].each do |channel| + if channel["name"] == answer || channel["id"] == answer + @selected_recipient = Channel.new(channel["id"], channel["name"], channel["num_members"], channel["topic"]["value"]) + @selected_type = "channel" + puts "Thank you, I have noted your selection" + return + end + end + puts "You did not provide a vaild recipient" + return + end + end +end + +class SlackAPIError < StandardError ; end \ No newline at end of file diff --git a/test/cassettes/channels.yml b/test/cassettes/channels.yml new file mode 100644 index 00000000..29e9879b --- /dev/null +++ b/test/cassettes/channels.yml @@ -0,0 +1,175 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_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: + - '803' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 05:34:11 GMT + Server: + - Apache + X-Slack-Req-Id: + - e6884b8ae93f41ca77f8701417cbbd73 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-4kab + X-Cache: + - Miss from cloudfront + Via: + - 1.1 e8afb729a4bc6f5676d32307ea14bdae.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO50-C1 + X-Amz-Cf-Id: + - QTHWKtE1Hljn5Pw-NjeihEVfttr6oX6SabyGStau7TJ3epFfAPaQfw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A + place to talk about ada homework","creator":"UUW7BN96D","last_set":1584056896},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"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":"UV85Q5X6K","last_set":1583874438},"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":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"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":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":5},{"id":"CV8S3C59T","name":"butthead","is_channel":true,"is_group":false,"is_im":false,"created":1583966699,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"butthead","is_shared":false,"parent_conversation":null,"creator":"UV6A4F83S","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"jessica + is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I + am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 05:34:11 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_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: + - '1690' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 05:34:11 GMT + Server: + - Apache + X-Slack-Req-Id: + - a07876007048ad4be31fa58108309620 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-4fol + X-Cache: + - Miss from cloudfront + Via: + - 1.1 26ca01ec7377e425b59b6a08cb1ec343.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO50-C1 + X-Amz-Cf-Id: + - 3MSqf5vG_K81Z9TYfZXl_36i3w-iYz6DmjkW4-LbFniWZ5fhO6lQqQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","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":"TV85Q5X0X"},"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":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna + Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna + Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna + Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara + Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara + Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara + Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica + Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica + Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica + Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea + Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea + Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583874540,"has_2fa":false}],"cache_ts":1584077651,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 05:34:11 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/list_of_users.yml b/test/cassettes/list_of_users.yml new file mode 100644 index 00000000..a27915a7 --- /dev/null +++ b/test/cassettes/list_of_users.yml @@ -0,0 +1,159 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_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: + - '1827' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 21:37:33 GMT + Server: + - Apache + X-Slack-Req-Id: + - 22b0b97cd74447aeca01d14cdc1752d0 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-22gd + X-Cache: + - Miss from cloudfront + Via: + - 1.1 0d686860a571e09f23ba7586948f0629.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD52-C2 + X-Amz-Cf-Id: + - r9pLsI_m5bZ6SihiTAJMmvYecvdQU_1IDIHCmuBL9yBVYfpsz3Hm5A== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","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":"TV85Q5X0X"},"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":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna + Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna + Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna + Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara + Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara + Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara + Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica + Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica + Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica + Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea + Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea + Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583874540,"has_2fa":false},{"id":"UVCHSSS20","team_id":"TV85Q5X0X","name":"vwhwang38","deleted":false,"color":"684b6c","real_name":"Vicki + Hwang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Vicki + Hwang","real_name_normalized":"Vicki Hwang","display_name":"Vicki Hwang","display_name_normalized":"Vicki + Hwang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb8a3420bda5","image_24":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1584115945,"has_2fa":false}],"cache_ts":1584221853,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Sat, 14 Mar 2020 21:37:33 GMT +- request: + method: get + uri: https://slack.com/api/bogus.call?token=SLACK_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: + - '76' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 21:46:34 GMT + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Referrer-Policy: + - no-referrer + X-Slack-Backend: + - h + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 0a45a6b1db8ac51c7397faedafe43e93 + X-Xss-Protection: + - '0' + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-37rz + X-Cache: + - Miss from cloudfront + Via: + - 1.1 14ebd2119b0260233f69a56e7943bedb.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD50-C1 + X-Amz-Cf-Id: + - EE2IJhkj6LHWI3ZRjykAk1rWReXUKBofd8fcI2L0Sk6_XipZmwDc7Q== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"unknown_method","req_method":"bogus.call"}' + http_version: null + recorded_at: Sat, 14 Mar 2020 21:46:34 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/users.yml b/test/cassettes/users.yml new file mode 100644 index 00000000..1cfd8e34 --- /dev/null +++ b/test/cassettes/users.yml @@ -0,0 +1,175 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_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: + - '803' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 05:34:11 GMT + Server: + - Apache + X-Slack-Req-Id: + - 35344daec45893937a33900e70273a94 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-zk2s + X-Cache: + - Miss from cloudfront + Via: + - 1.1 e8afb729a4bc6f5676d32307ea14bdae.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO50-C1 + X-Amz-Cf-Id: + - EVTARcfzEKaOmbjYO-gb7PFeHTyEWYq_9kmG4f__CDLZDhX5rogu0g== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A + place to talk about ada homework","creator":"UUW7BN96D","last_set":1584056896},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"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":"UV85Q5X6K","last_set":1583874438},"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":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"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":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":5},{"id":"CV8S3C59T","name":"butthead","is_channel":true,"is_group":false,"is_im":false,"created":1583966699,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"butthead","is_shared":false,"parent_conversation":null,"creator":"UV6A4F83S","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"jessica + is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I + am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 05:34:11 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_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: + - '1690' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 05:34:11 GMT + Server: + - Apache + X-Slack-Req-Id: + - f9eeb67e64aa600603bdf5b643b0198e + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-a0o8 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 c34da255183aa208dd1c722ff211f9b2.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO50-C1 + X-Amz-Cf-Id: + - al1MichJMOoBLmcf0nlbrj61dAnR5p-d0XX3SuHVs5DSid9wHm8nPQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","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":"TV85Q5X0X"},"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":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna + Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna + Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna + Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara + Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara + Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara + Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica + Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica + Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica + Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea + Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea + Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"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":1583874540,"has_2fa":false}],"cache_ts":1584077651,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 05:34:11 GMT +recorded_with: VCR 5.1.0 diff --git a/test/channel_test.rb b/test/channel_test.rb new file mode 100644 index 00000000..cd5dc3cb --- /dev/null +++ b/test/channel_test.rb @@ -0,0 +1,24 @@ +require_relative "test_helper" +describe "channel initializes" do + + it "channel initializes with arguments" do + recipient = Channel.new(1, "Ada", 3, "general") + + expect(recipient).must_be_instance_of Channel + expect(recipient.name).must_equal "Ada" + expect(recipient.id).must_equal 1 + expect(recipient.num_members).must_equal 3 + expect(recipient.topic).must_equal "general" + end + + it "user raises error with not enough arguments" do + + expect{Channel.new()}.must_raise ArgumentError + expect{Channel.new(1)}.must_raise ArgumentError + expect{Channel.new(nil,nil,nil,nil)}.must_raise ArgumentError + expect{Channel.new(1,nil,3)}.must_raise ArgumentError + expect{Channel.new(1,"ada")}.must_raise ArgumentError + expect{Channel.new(nil,"ada")}.must_raise ArgumentError + end + +end \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..62d9f91f --- /dev/null +++ b/test/recipient_test.rb @@ -0,0 +1,52 @@ +require_relative "test_helper" + +require 'httparty' + +describe "initialize" do + + it "initializes" do + recipient = Recipient.new(1, "Ada") + + expect(recipient).must_be_instance_of Recipient + expect(recipient.name).must_equal "Ada" + expect(recipient.id).must_equal 1 + end + + it "initializes with some arguments" do + recipient = Recipient.new(id = nil, name = "Ada") + recipient2 = Recipient.new(id = 100, name = nil) + recipient3 = Recipient.new(id = nil, name = nil) + + expect(recipient).must_be_instance_of Recipient + expect(recipient.name).must_equal "Ada" + expect(recipient.id).must_equal nil + + expect(recipient2).must_be_instance_of Recipient + expect(recipient2.id).must_equal 100 + expect(recipient2.name).must_equal nil + + expect(recipient3).must_be_instance_of Recipient + expect(recipient3.id).must_equal nil + expect(recipient3.name).must_equal nil + + end +end + + + +# Ughhhhhh I don't know, My IQ lowered this week! I'm going to sleep. +# describe "send_message" do +# it "can send a valid message" do +# VCR.use_cassette("slack-posts") do +# response = Recipient.send_message("Hey I can post messages!", "UV85Q5X6K") +# expect(response).must_equal true +# end +# end +# end + + + + + + + diff --git a/test/slack_test.rb b/test/slack_test.rb new file mode 100644 index 00000000..c70c1676 --- /dev/null +++ b/test/slack_test.rb @@ -0,0 +1,13 @@ +require_relative "test_helper" + +xdescribe "" do + it "" do + + + end + + it "" do + + + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 1fcf2bab..b93121a9 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -7,10 +7,19 @@ require 'minitest/autorun' require 'minitest/reporters' require 'minitest/skip_dsl' +require "webmock/minitest" #added require 'vcr' +# require "dotenv" #added +# Dotenv.load #added Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new +require_relative "../lib/workspace.rb" +require_relative "../lib/slack.rb" +require_relative "../lib/user.rb" +require_relative "../lib/channel.rb" +require_relative "../lib/recipient.rb" + VCR.configure do |config| config.cassette_library_dir = "test/cassettes" config.hook_into :webmock @@ -23,7 +32,12 @@ :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 } - + config.filter_sensitive_data("SLACK_TOKEN") do + ENV["SLACK_TOKEN"] + end # Don't leave our token lying around in a cassette file. end + + + diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..5aecea87 --- /dev/null +++ b/test/user_test.rb @@ -0,0 +1,24 @@ +require_relative "test_helper" + +describe "user initializes" do + + it "user initializes with name" do + recipient = User.new(1, "Ada", "AdaLove") + + expect(recipient).must_be_instance_of User + expect(recipient.name).must_equal "Ada" + expect(recipient.id).must_equal 1 + expect(recipient.real_name).must_equal "AdaLove" + end + + it "user raises error with not enough arguments" do + + expect{User.new()}.must_raise ArgumentError + expect{User.new(1)}.must_raise ArgumentError + expect{User.new(nil,nil,nil)}.must_raise ArgumentError + expect{User.new(1,nil,"ada")}.must_raise ArgumentError + expect{User.new(1,"ada")}.must_raise ArgumentError + expect{User.new(nil,"ada")}.must_raise ArgumentError + end + +end diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..ffa4adc0 --- /dev/null +++ b/test/workspace_test.rb @@ -0,0 +1,45 @@ +require_relative "test_helper" +require 'httparty' + +describe "getting number of channels" do + it "can get number of channels" do + VCR.use_cassette("channels") do + response = Workspace.new + + expect(response.channels).wont_be_nil + expect(response.num_of_channels).must_equal 5 + end + end +end + +describe "getting number of users" do + it "can get number of users" do + VCR.use_cassette("users") do + response = Workspace.new + + expect(response.users).wont_be_nil + expect(response.num_of_users).must_equal 8 + end + end +end + + +describe "list_users" do + it "outputs list of users" do + result = {} + VCR.use_cassette("list_of_users") do + result = Workspace.get("https://slack.com/api/users.list") + end + + expect(result).must_be_kind_of HTTParty::Response + expect(result["ok"]).must_equal true + end + + it "raises an error when a call fails" do + VCR.use_cassette("list_of_users") do + expect {Workspace.get("https://slack.com/api/bogus.call")}.must_raise SlackAPIError #from Devins live code + end + end +end + +