From 649980781a0a135666fef7c20239818b76914396 Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Tue, 10 Mar 2020 22:17:04 -0700 Subject: [PATCH 01/15] set up the test_helper with all the required files and hide authentication_token --- .gitignore | 3 ++- test/test_helper.rb | 23 ++++++++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 3ff4fada..7b8b9065 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -/coverage/ +/coverage/ +#ask: are we adding a coverage or is this already there just hidden? .DS_Store diff --git a/test/test_helper.rb b/test/test_helper.rb index 1fcf2bab..339b1b04 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,13 +1,12 @@ -require 'simplecov' -SimpleCov.start do - add_filter 'test/' -end - -require 'minitest' -require 'minitest/autorun' -require 'minitest/reporters' -require 'minitest/skip_dsl' -require 'vcr' +require "minitest" +require "minitest/autorun" +require "minitest/reporters" +require "minitest/skip_dsl" +require "vcr" +require_relative "../lib/workspace" +require_relative "../lib/recipient" +require_relative "../lib/channel" +require_relative "../lib/user" Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new @@ -25,5 +24,7 @@ } # Don't leave our token lying around in a cassette file. - + config.filter_sensitive_data("") do + ENV["SLACK_TOKEN"] + end end From b7de36af89f79ee40ff7898ebbc9f20afa3ce99e Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Tue, 10 Mar 2020 22:20:31 -0700 Subject: [PATCH 02/15] created User and Channel class- they will use Recipient to inherint the API to access data and return a list of all user and channel lists respectively --- lib/channel.rb | 26 ++++++++++++++++++++++++++ lib/recipient.rb | 28 ++++++++++++++++++++++++++++ lib/user.rb | 23 +++++++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 lib/channel.rb create mode 100644 lib/recipient.rb create mode 100644 lib/user.rb diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..91ae6a4a --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,26 @@ +require_relative "recipient" + +class Channel < Recipient + attr_reader :topic, :member_count + + def initialize(name, slack_id, topic, member_count) + super(name, slack_id) + @topic = topic + @member_count = member_count + end + + #?????????????? + def self.list_all + response = Channel.get("https://slack.com/api/channels.list") + channel_list = response["channels"].map do |channel| + Channel.new( + name = channel["name"], + slack_id = channel["id"], + topic = channel["topic"]["value"], + member_count = channel["num_members"] + ) + end + + return channel_list + end +end diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..e62708b5 --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,28 @@ +require "httparty" +require "dotenv" +Dotenv.load +AUTH_TOKEN = ENV["SLACK_TOKEN"] + +class Recipient + attr_reader :name, :slack_id + + def initialize(name, slack_id) + @name = name + @slack_id = slack_id + end + + private +#??????????????? + def self.get(base_url) + query = { + token: AUTH_TOKEN, + } + response = HTTParty.get(base_url, query: query) + + return response unless response["okay"] == false + end + + def self.list_all + raise(NotImplementedError, "Implement me in a child class!") + end +end diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..3d2c7401 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,23 @@ +require_relative "recipient" + +class User < Recipient + attr_reader :real_name + + def initialize(name, slack_id, real_name) + super(name, slack_id) + @real_name = real_name + end + + def self.list_all + response = User.get("https://slack.com/api/users.list") + user_list = response["members"].map do |member| + User.new( + name = member["name"], + slack_id = member["id"], + real_name = member["real_name"] + ) + end + + return user_list + end +end From 93d205e43bc1ca6503af62ab493764ea5dceeb24 Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Tue, 10 Mar 2020 22:22:03 -0700 Subject: [PATCH 03/15] created workspace class that is composed of user and channel class and is intended to interact with slack.rb- it's attributes include list of all users and all channels --- lib/workspace.rb | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 lib/workspace.rb diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..6b0f5324 --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,32 @@ +require "httparty" +require "dotenv" +require_relative "channel" +require_relative "user" +# Dotenv.load +# URL = "https://slack.com/api/channels.list" +# AUTH_TOKEN = ENV["SLACK_TOKEN"] + +# query = { +# token: AUTH_TOKEN, +# } + +# response = HTTParty.get(URL, query: query) +# response["channels"].each do |channel| +# ap channel["name"] +# end + +# # unless response.code == 200 +# # raise(ArgumentError, "what is happening") +# # end + +class Workspace + attr_reader :users, :channels + + def initialize + @users = User.list_all + @channels = Channel.list_all + end + + + +end From cdae88e2b0ebed0a856eadb124e84fdf1e89ba5b Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Tue, 10 Mar 2020 22:24:08 -0700 Subject: [PATCH 04/15] finished wave 1 of project- user can choose from three options - this class is responsible for interacting with the user --- lib/slack.rb | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index 8a0b659b..5b121b75 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,12 +1,35 @@ #!/usr/bin/env ruby +require "httparty" +require "dotenv" +require "awesome_print" +require_relative "workspace" def main - puts "Welcome to the Ada Slack CLI!" + puts "Welcome to the Mair Bear's Slack CLI!" workspace = Workspace.new + puts "There are #{workspace.channels.length} channels and #{workspace.users.length} users in this Slack." - # TODO project + while true + puts "What would you like to do?" + puts "\nlist users\nlist channels\nquit" + options = ["list users", "list channels", "quit"] + users_option = gets.chomp.downcase + until options.include? users_option + puts "Please input a valid command." + users_option = gets.chomp.downcase + end - puts "Thank you for using the Ada Slack CLI" + case users_option + when "list users" + ap workspace.users + when "list channels" + ap workspace.channels + when "quit" + break + end + end + + puts "Thank you for using the Mair Bear's Slack CLI" end -main if __FILE__ == $PROGRAM_NAME \ No newline at end of file +main if __FILE__ == $PROGRAM_NAME From ebe500551133c265480aabe3ce066821f0c1e092 Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Wed, 11 Mar 2020 12:54:43 -0700 Subject: [PATCH 05/15] set up test files for Recipient, User, Channel, and Workspace class --- lib/slack.rb | 1 - lib/workspace.rb | 16 ---------------- test/channel_test.rb | 1 + test/recipient_test.rb | 1 + test/user_test.rb | 1 + test/workspace_test.rb | 1 + 6 files changed, 4 insertions(+), 17 deletions(-) create mode 100644 test/channel_test.rb create mode 100644 test/recipient_test.rb create mode 100644 test/user_test.rb create mode 100644 test/workspace_test.rb diff --git a/lib/slack.rb b/lib/slack.rb index 5b121b75..4eef42bd 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,4 +1,3 @@ -#!/usr/bin/env ruby require "httparty" require "dotenv" require "awesome_print" diff --git a/lib/workspace.rb b/lib/workspace.rb index 6b0f5324..2778a580 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -2,22 +2,6 @@ require "dotenv" require_relative "channel" require_relative "user" -# Dotenv.load -# URL = "https://slack.com/api/channels.list" -# AUTH_TOKEN = ENV["SLACK_TOKEN"] - -# query = { -# token: AUTH_TOKEN, -# } - -# response = HTTParty.get(URL, query: query) -# response["channels"].each do |channel| -# ap channel["name"] -# end - -# # unless response.code == 200 -# # raise(ArgumentError, "what is happening") -# # end class Workspace attr_reader :users, :channels diff --git a/test/channel_test.rb b/test/channel_test.rb new file mode 100644 index 00000000..05f49f78 --- /dev/null +++ b/test/channel_test.rb @@ -0,0 +1 @@ +require "test_helper" \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..05f49f78 --- /dev/null +++ b/test/recipient_test.rb @@ -0,0 +1 @@ +require "test_helper" \ No newline at end of file diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..05f49f78 --- /dev/null +++ b/test/user_test.rb @@ -0,0 +1 @@ +require "test_helper" \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..05f49f78 --- /dev/null +++ b/test/workspace_test.rb @@ -0,0 +1 @@ +require "test_helper" \ No newline at end of file From 1feee435d68d4dfb802c409ad4c20e1be0672e14 Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Thu, 12 Mar 2020 15:25:58 -0700 Subject: [PATCH 06/15] wrote test for Channel to ensure .get and list_all work as expected --- test/channel_test.rb | 51 +++++++++++++++++++++++++++++++++++++++++- test/user_test.rb | 2 +- test/workspace_test.rb | 2 +- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/test/channel_test.rb b/test/channel_test.rb index 05f49f78..463578e7 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1 +1,50 @@ -require "test_helper" \ No newline at end of file +require_relative "test_helper" +describe "channel" do + describe "get" do + before do + VCR.use_cassette("uses_get(url)") do + @url = "https://slack.com/api/channels.list" + @response = Channel.get(@url) + end + end + it "Uses .get method from the Recipient to get a channel object containing information about workspace channel" do + expect(@response).must_be_instance_of HTTParty::Response + expect(@response.code).must_equal 200 + end + + it "Should raise an Exception if the API search fails" do + url = "" + expect { response = Channel.get(url) }.must_raise Exception + end + #this is dependent on Slacks api + it "Should return a list of all channels within the workspace" do + expect(@response.parsed_response).must_be_kind_of Hash + expect(@response["channels"].length).must_equal 3 + end + it "Should have correct info for the first channel" do + expect(@response["channels"][0]["name"]).must_equal "general" + expect(@response["channels"][0]["id"]).must_equal "CV5GLCW12" + expect(@response["channels"][0]["topic"]["value"]).must_equal "Company-wide announcements and work-based matters" + expect(@response["channels"][0]["num_members"]).must_equal 5 + end + it "Should have the correct info for the last channel" do + expect(@response["channels"][-1]["name"]).must_equal "random" + expect(@response["channels"][-1]["id"]).must_equal "CV86RT7AS" + expect(@response["channels"][-1]["topic"]["value"]).must_equal "Non-work banter and water cooler conversation" + expect(@response["channels"][-1]["num_members"]).must_equal 5 + end + end + describe "list_all" do + before do + VCR.use_cassette("list_all_channels") do + @channel_list = Channel.list_all + end + end + it "Should return an array of Channel objects" do + expect(@channel_list).must_be_kind_of Array + @channel_list.each do |channel| + expect(channel).must_be_instance_of Channel + end + end + end +end diff --git a/test/user_test.rb b/test/user_test.rb index 05f49f78..a46e6816 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1 +1 @@ -require "test_helper" \ No newline at end of file +require_relative "test_helper" \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 05f49f78..a46e6816 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1 +1 @@ -require "test_helper" \ No newline at end of file +require_relative "test_helper" \ No newline at end of file From aa0b539dc083362707dd1a6ec3faba538b480599 Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Thu, 12 Mar 2020 15:27:53 -0700 Subject: [PATCH 07/15] implemented method to see details on user/channel --- lib/channel.rb | 8 ++++++-- lib/user.rb | 6 ++++++ test/recipient_test.rb | 1 - 3 files changed, 12 insertions(+), 3 deletions(-) delete mode 100644 test/recipient_test.rb diff --git a/lib/channel.rb b/lib/channel.rb index 91ae6a4a..35d0ee3d 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -9,9 +9,8 @@ def initialize(name, slack_id, topic, member_count) @member_count = member_count end - #?????????????? def self.list_all - response = Channel.get("https://slack.com/api/channels.list") + response = Channel.get("https://slack.com/api/conversations.list") channel_list = response["channels"].map do |channel| Channel.new( name = channel["name"], @@ -23,4 +22,9 @@ def self.list_all return channel_list end + + def details + return "Channel name: #{name}\nSlack ID: #{slack_id}\nChannel topic: #{topic}\nMember count: #{member_count}" + end + end diff --git a/lib/user.rb b/lib/user.rb index 3d2c7401..aee4acd4 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -20,4 +20,10 @@ def self.list_all return user_list end + + def details + return "Slack name: #{name}\nSlack ID: #{slack_id}\nReal name: #{real_name}" + end + + end diff --git a/test/recipient_test.rb b/test/recipient_test.rb deleted file mode 100644 index 05f49f78..00000000 --- a/test/recipient_test.rb +++ /dev/null @@ -1 +0,0 @@ -require "test_helper" \ No newline at end of file From f1deedf7c51889f255633a04f69f66a976d5d9e0 Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Thu, 12 Mar 2020 15:29:27 -0700 Subject: [PATCH 08/15] implement method to find user and/or channel given their id or name- called on send_message so user can send a message --- lib/workspace.rb | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/lib/workspace.rb b/lib/workspace.rb index 2778a580..f27dc3a3 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -4,13 +4,51 @@ require_relative "user" class Workspace - attr_reader :users, :channels + attr_reader :users, :channels, :selected def initialize @users = User.list_all @channels = Channel.list_all + @selected = nil end - + #condense this method so checks the name and slack id in one loop? + def select_user(name_or_slack_id) + user = @users.find do |user| + p user + user.name == name_or_slack_id || user.slack_id == name_or_slack_id + end + return "no such user exists 😢" if user == nil + + @selected = user + return "you've selected a user yay! šŸ¤—" + end + + select_user("UV60Q76GG") + + def select_channel(name_or_slack_id) + channel = @channels.find do |channel| + p channel + channel.name == name_or_slack_id || channel.slack_id == name_or_slack_id + end + + return "no such channel exists šŸ¤”" if channel == nil + + @selected = channel + return "you've selected a channel yay! 🄳" + end + + def details_of + return "please select a user or channel to get details on" if @selected == nil + + return @selected.details + end + + def text_me(message) + return "Please write a message...." if message == nil + return "you must choose a user or channel you want to send this message to" if @selected == nil + channel = @selected.slack_id + @selected.send_message(channel, message) + end end From 8b73dcb18bd235463933fb68eab66669460b35b5 Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Thu, 12 Mar 2020 15:30:09 -0700 Subject: [PATCH 09/15] implemented method using HTTParty to post message on slack --- lib/recipient.rb | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/recipient.rb b/lib/recipient.rb index e62708b5..b89cc592 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -11,18 +11,31 @@ def initialize(name, slack_id) @slack_id = slack_id end + + def send_message(channel, message) + url = "https://slack.com/api/chat.postMessage" + query = { + token: AUTH_TOKEN, + channel: channel, + text: message, + } + response = HTTParty.post(url, query: query) + raise(Exception, "Failed to send your message") if response["true"] == false + end + private -#??????????????? + def self.get(base_url) query = { token: AUTH_TOKEN, } response = HTTParty.get(base_url, query: query) - - return response unless response["okay"] == false + raise(Exception, "Failed to access API, check url") if response["okay"] == false + return response end def self.list_all raise(NotImplementedError, "Implement me in a child class!") end + end From b5cb7ed66c5631cd24142142aa912f77b17ffd74 Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Thu, 12 Mar 2020 15:31:28 -0700 Subject: [PATCH 10/15] added select user/channel/details and send message to the options of command for the user- finishes wave 3, still needs refactoring------ --- lib/slack.rb | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index 4eef42bd..965fe3a6 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -8,10 +8,24 @@ def main workspace = Workspace.new puts "There are #{workspace.channels.length} channels and #{workspace.users.length} users in this Slack." + def pretty_user_list(workspace) + workspace.users.each do |user| + puts "šŸ”ø#{user.details}" + puts "" + end + end + + def pretty_channel_list(workspace) + workspace.channels.each do |channel| + puts "šŸ”ø#{channel.details}" + puts "" + end + end + while true puts "What would you like to do?" - puts "\nlist users\nlist channels\nquit" - options = ["list users", "list channels", "quit"] + puts "\nšŸ”µ list users\nšŸ”µ list channels\nšŸ”µ select user\nšŸ”µ select channel\nšŸ”µ details\nšŸ”µ send message\nšŸ”µ quit" + options = ["list users", "list channels", "select user", "select channel", "details", "quit", "send message"] users_option = gets.chomp.downcase until options.include? users_option puts "Please input a valid command." @@ -20,9 +34,23 @@ def main case users_option when "list users" - ap workspace.users + pretty_user_list(workspace) when "list channels" - ap workspace.channels + pretty_channel_list(workspace) + when "select user" + puts "enter name of a user" + select_user = gets.chomp.downcase + puts workspace.select_user(select_user) + when "select channel" + puts "enter name of a channel" + select_channel = gets.chomp.downcase + puts workspace.select_channel(select_channel) + when "details" + puts workspace.details_of #colorize? + when "send message" + puts "what is your message?" + message = gets.chomp.downcase + workspace.text_me(message) when "quit" break end @@ -32,3 +60,6 @@ def main end main if __FILE__ == $PROGRAM_NAME + +#do something that tells the user their message has been sent +#return "Your message has been sent šŸ“Ø" if response["okay"] == true From b95d7c6369948389f543ae56af8328655658e29b Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Thu, 12 Mar 2020 15:32:28 -0700 Subject: [PATCH 11/15] added cassettes from tests written for channel- only test written so far- haven't been tested for sending messages or details --- test/cassettes/list_all_channels.yml | 84 ++++++++++++++++++++++++++++ test/cassettes/uses_get_url_.yml | 84 ++++++++++++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 test/cassettes/list_all_channels.yml create mode 100644 test/cassettes/uses_get_url_.yml diff --git a/test/cassettes/list_all_channels.yml b/test/cassettes/list_all_channels.yml new file mode 100644 index 00000000..c4a89b3c --- /dev/null +++ b/test/cassettes/list_all_channels.yml @@ -0,0 +1,84 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '598' + Connection: + - keep-alive + Date: + - Wed, 11 Mar 2020 23:22:52 GMT + Server: + - Apache + X-Slack-Req-Id: + - 5325afc0170ca58969bbf86bd507b277 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels: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 62a7001a7a5cdae0c372f387ebcd07e5.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD53-C1 + X-Amz-Cf-Id: + - '09HynqzH5LULCsPUh4kb0CuQKT_8JxBQr2Gg_HLFPJxm_Sb4nEJJ5w==' + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CV5GLCW12","name":"general","is_channel":true,"created":1583865622,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UV5GLBZT6","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UV5GLBZT6","UV60P4CMN","UV60Q76GG","UV64BM5QV","UV68KR96Z"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UV5GLBZT6","last_set":1583865622},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5},{"id":"CV5GLDJ9J","name":"slack-bot","is_channel":true,"created":1583865623,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UV5GLBZT6","name_normalized":"slack-bot","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UV5GLBZT6","UV60P4CMN","UV60Q76GG","UV64BM5QV","UV68KR96Z"],"topic":{"value":"A + place for us to test our slack API projects","creator":"UV5GLBZT6","last_set":1583865752},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":5},{"id":"CV86RT7AS","name":"random","is_channel":true,"created":1583865622,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UV5GLBZT6","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UV5GLBZT6","UV60P4CMN","UV60Q76GG","UV64BM5QV","UV68KR96Z"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UV5GLBZT6","last_set":1583865622},"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":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Wed, 11 Mar 2020 23:22:52 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/uses_get_url_.yml b/test/cassettes/uses_get_url_.yml new file mode 100644 index 00000000..940d92e1 --- /dev/null +++ b/test/cassettes/uses_get_url_.yml @@ -0,0 +1,84 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '598' + Connection: + - keep-alive + Date: + - Wed, 11 Mar 2020 21:18:48 GMT + Server: + - Apache + X-Slack-Req-Id: + - b51ed5f96b56ec0cc57403c7edc03487 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels: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-xy1y + X-Cache: + - Miss from cloudfront + Via: + - 1.1 5838e45b12e9f614d10d25d52f72cdab.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD53-C1 + X-Amz-Cf-Id: + - i9t6fGuVal2_mzP6_OGG6l2khQsUwIFvEs9ou1VvPrW0PG0ddbkwBw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CV5GLCW12","name":"general","is_channel":true,"created":1583865622,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UV5GLBZT6","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UV5GLBZT6","UV64BM5QV","UV68KR96Z","UV60Q76GG","UV60P4CMN"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UV5GLBZT6","last_set":1583865622},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5},{"id":"CV5GLDJ9J","name":"slack-bot","is_channel":true,"created":1583865623,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UV5GLBZT6","name_normalized":"slack-bot","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UV5GLBZT6","UV64BM5QV","UV68KR96Z","UV60Q76GG","UV60P4CMN"],"topic":{"value":"A + place for us to test our slack API projects","creator":"UV5GLBZT6","last_set":1583865752},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":5},{"id":"CV86RT7AS","name":"random","is_channel":true,"created":1583865622,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UV5GLBZT6","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UV5GLBZT6","UV64BM5QV","UV68KR96Z","UV60Q76GG","UV60P4CMN"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UV5GLBZT6","last_set":1583865622},"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":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Wed, 11 Mar 2020 21:18:48 GMT +recorded_with: VCR 5.1.0 From 2cf0de8efb27e035294ce455e1bd506e5a674038 Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Thu, 12 Mar 2020 20:45:51 -0700 Subject: [PATCH 12/15] done with wave 3- refactored, no tests written yet --- lib/channel.rb | 2 +- lib/recipient.rb | 7 +++---- lib/slack.rb | 46 +++++++++++++++++++++++++++++++++++----------- lib/user.rb | 2 -- lib/workspace.rb | 29 +++++++---------------------- 5 files changed, 46 insertions(+), 40 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 35d0ee3d..b2314487 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -1,5 +1,6 @@ require_relative "recipient" + class Channel < Recipient attr_reader :topic, :member_count @@ -26,5 +27,4 @@ def self.list_all def details return "Channel name: #{name}\nSlack ID: #{slack_id}\nChannel topic: #{topic}\nMember count: #{member_count}" end - end diff --git a/lib/recipient.rb b/lib/recipient.rb index b89cc592..d0151df2 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -19,12 +19,11 @@ def send_message(channel, message) channel: channel, text: message, } - response = HTTParty.post(url, query: query) - raise(Exception, "Failed to send your message") if response["true"] == false + request = HTTParty.post(url, query: query) + raise(Exception, "Failed to send your message") if request["true"] == false + return request end - private - def self.get(base_url) query = { token: AUTH_TOKEN, diff --git a/lib/slack.rb b/lib/slack.rb index 965fe3a6..5f041f61 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -23,7 +23,7 @@ def pretty_channel_list(workspace) end while true - puts "What would you like to do?" + puts "\nWhat would you like to do?" puts "\nšŸ”µ list users\nšŸ”µ list channels\nšŸ”µ select user\nšŸ”µ select channel\nšŸ”µ details\nšŸ”µ send message\nšŸ”µ quit" options = ["list users", "list channels", "select user", "select channel", "details", "quit", "send message"] users_option = gets.chomp.downcase @@ -38,19 +38,46 @@ def pretty_channel_list(workspace) when "list channels" pretty_channel_list(workspace) when "select user" - puts "enter name of a user" + puts "enter username or slack ID of a user" select_user = gets.chomp.downcase - puts workspace.select_user(select_user) + workspace.select_user(select_user) + if workspace.selected.nil? + puts "no such user exists 😢" + elsif workspace.selected != nil + puts "you've selected a user yay! šŸ¤—" + end when "select channel" - puts "enter name of a channel" + puts "enter username or slack ID of a channel" select_channel = gets.chomp.downcase - puts workspace.select_channel(select_channel) + workspace.select_channel(select_channel) + if workspace.selected.nil? + puts "no such channel exists šŸ¤”" + elsif workspace.selected != nil + puts "you've selected a channel yay! 🄳" + end + + when "details" - puts workspace.details_of #colorize? + if workspace.selected.nil? + puts "please select a user or channel to get details on" + else + puts workspace.details_of + end when "send message" puts "what is your message?" - message = gets.chomp.downcase - workspace.text_me(message) + message = gets.chomp + until message != nil && message != "" + puts "enter your message" + message = gets.chomp + end + + if workspace.selected.nil? + puts "you must choose a channel or a user before you send a message" + elsif workspace.text_me(message) == false + puts "unable to send your message 🄺" + else + puts "your message has been succefully sent šŸ“Ø" + end when "quit" break end @@ -60,6 +87,3 @@ def pretty_channel_list(workspace) end main if __FILE__ == $PROGRAM_NAME - -#do something that tells the user their message has been sent -#return "Your message has been sent šŸ“Ø" if response["okay"] == true diff --git a/lib/user.rb b/lib/user.rb index aee4acd4..40426d64 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -24,6 +24,4 @@ def self.list_all def details return "Slack name: #{name}\nSlack ID: #{slack_id}\nReal name: #{real_name}" end - - end diff --git a/lib/workspace.rb b/lib/workspace.rb index f27dc3a3..78b9cdf2 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -1,5 +1,4 @@ require "httparty" -require "dotenv" require_relative "channel" require_relative "user" @@ -12,43 +11,29 @@ def initialize @selected = nil end - #condense this method so checks the name and slack id in one loop? def select_user(name_or_slack_id) user = @users.find do |user| - p user - user.name == name_or_slack_id || user.slack_id == name_or_slack_id + user.name.downcase == name_or_slack_id.downcase || user.slack_id.downcase == name_or_slack_id.downcase end - return "no such user exists 😢" if user == nil - - @selected = user - return "you've selected a user yay! šŸ¤—" + @selected = user unless user == nil end - select_user("UV60Q76GG") - def select_channel(name_or_slack_id) channel = @channels.find do |channel| - p channel - channel.name == name_or_slack_id || channel.slack_id == name_or_slack_id + channel.name.downcase == name_or_slack_id.downcase || channel.slack_id.downcase == name_or_slack_id.downcase end - return "no such channel exists šŸ¤”" if channel == nil - - @selected = channel - return "you've selected a channel yay! 🄳" + @selected = channel unless channel == nil end def details_of - return "please select a user or channel to get details on" if @selected == nil - return @selected.details end def text_me(message) - return "Please write a message...." if message == nil - return "you must choose a user or channel you want to send this message to" if @selected == nil channel = @selected.slack_id - @selected.send_message(channel, message) + request = @selected.send_message(channel, message) + return false if request["okay"] == false end -end +end \ No newline at end of file From 116a41dba2f42ecb8ed5d0949e47190719ab9a57 Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Fri, 13 Mar 2020 15:50:41 -0700 Subject: [PATCH 13/15] wrote tests for User and made minor modification to Channel tests --- lib/recipient.rb | 4 +- test/cassettes/list_all_channels.yml | 81 ++++++++++++++++++++++++ test/cassettes/list_all_users.yml | 90 +++++++++++++++++++++++++++ test/cassettes/user_uses_self_get.yml | 90 +++++++++++++++++++++++++++ test/cassettes/uses_get_url_.yml | 81 ++++++++++++++++++++++++ test/channel_test.rb | 7 ++- test/user_test.rb | 36 ++++++++++- 7 files changed, 383 insertions(+), 6 deletions(-) create mode 100644 test/cassettes/list_all_users.yml create mode 100644 test/cassettes/user_uses_self_get.yml diff --git a/lib/recipient.rb b/lib/recipient.rb index d0151df2..7ebfeeff 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -20,7 +20,7 @@ def send_message(channel, message) text: message, } request = HTTParty.post(url, query: query) - raise(Exception, "Failed to send your message") if request["true"] == false + raise(Exception, "Encountered an error: #{request["error"]}") if request["true"] == false || request.code != 200 return request end @@ -29,7 +29,7 @@ def self.get(base_url) token: AUTH_TOKEN, } response = HTTParty.get(base_url, query: query) - raise(Exception, "Failed to access API, check url") if response["okay"] == false + raise(Exception, "Encountered an error: #{response["error"]}") if response["okay"] == false || response.code != 200 return response end diff --git a/test/cassettes/list_all_channels.yml b/test/cassettes/list_all_channels.yml index c4a89b3c..9c3857aa 100644 --- a/test/cassettes/list_all_channels.yml +++ b/test/cassettes/list_all_channels.yml @@ -81,4 +81,85 @@ http_interactions: you''d prefer to keep out of more focused work-related channels.","creator":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5}],"response_metadata":{"next_cursor":""}}' http_version: null recorded_at: Wed, 11 Mar 2020 23:22:52 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '633' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 22:38:55 GMT + Server: + - Apache + X-Slack-Req-Id: + - ee3a559444c889b4c01b3ffe05bcea3d + 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-9vsr + X-Cache: + - Miss from cloudfront + Via: + - 1.1 9046e5a276a05e60ee34c8475e92b8e7.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - A5FN14ixqJhPkR9G2-jRVF_G_whrlAVS9jlcj9vObSTAQWWIb5yDOQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CV5GLCW12","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5},{"id":"CV5GLDJ9J","name":"slack-bot","is_channel":true,"is_group":false,"is_im":false,"created":1583865623,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-bot","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A + place for us to test our slack API projects","creator":"UV5GLBZT6","last_set":1583865752},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":5},{"id":"CV86RT7AS","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"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":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 22:38:55 GMT recorded_with: VCR 5.1.0 diff --git a/test/cassettes/list_all_users.yml b/test/cassettes/list_all_users.yml new file mode 100644 index 00000000..51376804 --- /dev/null +++ b/test/cassettes/list_all_users.yml @@ -0,0 +1,90 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1982' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 22:45:51 GMT + Server: + - Apache + X-Slack-Req-Id: + - 9a4a50b2d272bc6e2c59483b20ac5206 + 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-4sfv + X-Cache: + - Miss from cloudfront + Via: + - 1.1 d8792dbd3191bbe722eba5b536b979c8.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - TsgEQH-QdJIosms2E8OsX7Md4dEgDXJ_qnmM42jr4XCSpTBWZRRsQw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TUVTGCG8H","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":"TUVTGCG8H"},"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":"UUTB447GA","team_id":"TUVTGCG8H","name":"space_nikki_v_api_pro","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"space_nikki_v_api_pro","real_name_normalized":"space_nikki_v_api_pro","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g9f1f52862a3","api_app_id":"AV80E6U15","always_active":false,"bot_id":"BV80VFAF9","image_24":"https:\/\/secure.gravatar.com\/avatar\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039082},{"id":"UUTFEGX7U","team_id":"TUVTGCG8H","name":"time_vera_api_project","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_vera_api_project","real_name_normalized":"time_vera_api_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3c93b95bac9","api_app_id":"AUTF5G9R8","always_active":false,"bot_id":"BV8561FMM","image_24":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1583874337},{"id":"UUW8EPTR7","team_id":"TUVTGCG8H","name":"time_sharon_cheung_ap","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_sharon_cheung_ap","real_name_normalized":"time_sharon_cheung_ap","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g39da6f1a267","api_app_id":"AV6AZG6Q5","always_active":false,"bot_id":"BUTH5NWSW","image_24":"https:\/\/secure.gravatar.com\/avatar\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039172},{"id":"UUWNEB82F","team_id":"TUVTGCG8H","name":"time_emily_api_projec","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_emily_api_projec","real_name_normalized":"time_emily_api_projec","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ga34175d6590","api_app_id":"AVACSNPN2","always_active":false,"bot_id":"BV7NS2P1A","image_24":"https:\/\/secure.gravatar.com\/avatar\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039217},{"id":"UV5GLBZT6","team_id":"TUVTGCG8H","name":"e.anderson8977","deleted":false,"color":"9f69e7","real_name":"Emily + Cowan","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Emily + Cowan","real_name_normalized":"Emily Cowan","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g42c84c2e8ed","first_name":"Emily","last_name":"Cowan","image_24":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583865695},{"id":"UV60P4CMN","team_id":"TUVTGCG8H","name":"keikei1128","deleted":false,"color":"4bbe2e","real_name":"Sharon + Cheung","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sharon + Cheung","real_name_normalized":"Sharon Cheung","display_name":"Sharon Cheung","display_name_normalized":"Sharon + Cheung","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"247b75993584","image_original":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_original.jpg","is_custom_image":true,"image_24":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_1024.jpg","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583865896},{"id":"UV60Q76GG","team_id":"TUVTGCG8H","name":"lizeth.veraro","deleted":false,"color":"e7392d","real_name":"Vera","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Vera","real_name_normalized":"Vera","display_name":"Vera","display_name_normalized":"Vera","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"220b824fa494","image_original":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_original.png","is_custom_image":true,"image_24":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_24.png","image_32":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_32.png","image_48":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_48.png","image_72":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_72.png","image_192":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_192.png","image_512":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_512.png","image_1024":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_1024.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583872956},{"id":"UV64BM5QV","team_id":"TUVTGCG8H","name":"vnikki13","deleted":false,"color":"3c989f","real_name":"Nikki + Vaughan","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Nikki + Vaughan","real_name_normalized":"Nikki Vaughan","display_name":"Nikki Vaughan","display_name_normalized":"Nikki + Vaughan","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g9e7c278e8fd","image_24":"https:\/\/secure.gravatar.com\/avatar\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583868664},{"id":"UV68KR96Z","team_id":"TUVTGCG8H","name":"mairheshmati","deleted":false,"color":"e96699","real_name":"Mair + Bear","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mair + Bear","real_name_normalized":"Mair Bear","display_name":"Mair Bear","display_name_normalized":"Mair + Bear","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g93f8924e6f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583872779,"has_2fa":false}],"cache_ts":1584139551,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 22:45:51 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/user_uses_self_get.yml b/test/cassettes/user_uses_self_get.yml new file mode 100644 index 00000000..e5afc5a4 --- /dev/null +++ b/test/cassettes/user_uses_self_get.yml @@ -0,0 +1,90 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1982' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 22:38:55 GMT + Server: + - Apache + X-Slack-Req-Id: + - ec626485c202890d4391354bbf52d926 + 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-g1md + X-Cache: + - Miss from cloudfront + Via: + - 1.1 3cd7af07832481c336aa1c93c9b4a6fe.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - UdmxPrjeetbX0xZ7Va92bx7r6BxnJt6gf-X9skkvVUQiVVfh8ZimHA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TUVTGCG8H","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":"TUVTGCG8H"},"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":"UUTB447GA","team_id":"TUVTGCG8H","name":"space_nikki_v_api_pro","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"space_nikki_v_api_pro","real_name_normalized":"space_nikki_v_api_pro","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g9f1f52862a3","api_app_id":"AV80E6U15","always_active":false,"bot_id":"BV80VFAF9","image_24":"https:\/\/secure.gravatar.com\/avatar\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039082},{"id":"UUTFEGX7U","team_id":"TUVTGCG8H","name":"time_vera_api_project","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_vera_api_project","real_name_normalized":"time_vera_api_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3c93b95bac9","api_app_id":"AUTF5G9R8","always_active":false,"bot_id":"BV8561FMM","image_24":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1583874337},{"id":"UUW8EPTR7","team_id":"TUVTGCG8H","name":"time_sharon_cheung_ap","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_sharon_cheung_ap","real_name_normalized":"time_sharon_cheung_ap","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g39da6f1a267","api_app_id":"AV6AZG6Q5","always_active":false,"bot_id":"BUTH5NWSW","image_24":"https:\/\/secure.gravatar.com\/avatar\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039172},{"id":"UUWNEB82F","team_id":"TUVTGCG8H","name":"time_emily_api_projec","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_emily_api_projec","real_name_normalized":"time_emily_api_projec","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ga34175d6590","api_app_id":"AVACSNPN2","always_active":false,"bot_id":"BV7NS2P1A","image_24":"https:\/\/secure.gravatar.com\/avatar\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039217},{"id":"UV5GLBZT6","team_id":"TUVTGCG8H","name":"e.anderson8977","deleted":false,"color":"9f69e7","real_name":"Emily + Cowan","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Emily + Cowan","real_name_normalized":"Emily Cowan","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g42c84c2e8ed","first_name":"Emily","last_name":"Cowan","image_24":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583865695},{"id":"UV60P4CMN","team_id":"TUVTGCG8H","name":"keikei1128","deleted":false,"color":"4bbe2e","real_name":"Sharon + Cheung","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sharon + Cheung","real_name_normalized":"Sharon Cheung","display_name":"Sharon Cheung","display_name_normalized":"Sharon + Cheung","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"247b75993584","image_original":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_original.jpg","is_custom_image":true,"image_24":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_1024.jpg","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583865896},{"id":"UV60Q76GG","team_id":"TUVTGCG8H","name":"lizeth.veraro","deleted":false,"color":"e7392d","real_name":"Vera","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Vera","real_name_normalized":"Vera","display_name":"Vera","display_name_normalized":"Vera","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"220b824fa494","image_original":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_original.png","is_custom_image":true,"image_24":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_24.png","image_32":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_32.png","image_48":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_48.png","image_72":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_72.png","image_192":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_192.png","image_512":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_512.png","image_1024":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_1024.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583872956},{"id":"UV64BM5QV","team_id":"TUVTGCG8H","name":"vnikki13","deleted":false,"color":"3c989f","real_name":"Nikki + Vaughan","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Nikki + Vaughan","real_name_normalized":"Nikki Vaughan","display_name":"Nikki Vaughan","display_name_normalized":"Nikki + Vaughan","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g9e7c278e8fd","image_24":"https:\/\/secure.gravatar.com\/avatar\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583868664},{"id":"UV68KR96Z","team_id":"TUVTGCG8H","name":"mairheshmati","deleted":false,"color":"e96699","real_name":"Mair + Bear","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mair + Bear","real_name_normalized":"Mair Bear","display_name":"Mair Bear","display_name_normalized":"Mair + Bear","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g93f8924e6f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583872779,"has_2fa":false}],"cache_ts":1584139135,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 22:38:55 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/uses_get_url_.yml b/test/cassettes/uses_get_url_.yml index 940d92e1..2d02f19c 100644 --- a/test/cassettes/uses_get_url_.yml +++ b/test/cassettes/uses_get_url_.yml @@ -81,4 +81,85 @@ http_interactions: you''d prefer to keep out of more focused work-related channels.","creator":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5}],"response_metadata":{"next_cursor":""}}' http_version: null recorded_at: Wed, 11 Mar 2020 21:18:48 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '633' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 22:38:55 GMT + Server: + - Apache + X-Slack-Req-Id: + - 6476af33272a45761a19004c0d445733 + 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-1tez + X-Cache: + - Miss from cloudfront + Via: + - 1.1 814362d7589b223cc8927cc821d97136.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - uCIaugSiuPGU5w_flZdbUsioCymlhQwcf-SAvGfSsV0Ot_WtnL9bYg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CV5GLCW12","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5},{"id":"CV5GLDJ9J","name":"slack-bot","is_channel":true,"is_group":false,"is_im":false,"created":1583865623,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-bot","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A + place for us to test our slack API projects","creator":"UV5GLBZT6","last_set":1583865752},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":5},{"id":"CV86RT7AS","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"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":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 22:38:55 GMT recorded_with: VCR 5.1.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index 463578e7..ced59dcd 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1,9 +1,9 @@ require_relative "test_helper" describe "channel" do - describe "get" do + describe "self.get" do before do VCR.use_cassette("uses_get(url)") do - @url = "https://slack.com/api/channels.list" + @url = "https://slack.com/api/conversations.list" @response = Channel.get(@url) end end @@ -14,7 +14,7 @@ it "Should raise an Exception if the API search fails" do url = "" - expect { response = Channel.get(url) }.must_raise Exception + expect { Channel.get(url) }.must_raise Exception end #this is dependent on Slacks api it "Should return a list of all channels within the workspace" do @@ -42,6 +42,7 @@ end it "Should return an array of Channel objects" do expect(@channel_list).must_be_kind_of Array + expect(@channel_list.length).must_be :>, 0 @channel_list.each do |channel| expect(channel).must_be_instance_of Channel end diff --git a/test/user_test.rb b/test/user_test.rb index a46e6816..fb8967bc 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1 +1,35 @@ -require_relative "test_helper" \ No newline at end of file +require_relative "test_helper" + +describe "User" do + describe "self.get" do + before do + VCR.use_cassette("user_uses_self.get") do + @url = "https://slack.com/api/users.list" + @response = User.get(@url) + end + end + it "Uses self.get from the Recipient to get User object containing information about user profile" do + expect(@response).must_be_instance_of HTTParty::Response + expect(@response.code).must_equal 200 + expect(@response["ok"]).must_equal true + end + it "Should raise an Exception when the API call fails" do + url = "" + expect { User.get(url) }.must_raise Exception + end + end + describe "list_all" do + before do + VCR.use_cassette("list_all_users") do + @user_list = User.list_all + end + end + it "Should return an array of User objects" do + expect(@user_list).must_be_kind_of Array + expect(@user_list.length).must_be :>, 0 + @user_list.each do |user| + expect(user).must_be_instance_of User + end + end + end +end From 0f24f90048c745a56e1d0cc05341132d6c8713e7 Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Fri, 13 Mar 2020 21:43:30 -0700 Subject: [PATCH 14/15] wrote tests for all methods in workspace except for text_me which functions as a message sender --- lib/channel.rb | 1 + lib/recipient.rb | 2 +- test/cassettes/list_all_users.yml | 168 +++++++++++++++++++++++++++++ test/cassettes/uses_get_url.yml | 171 ++++++++++++++++++++++++++++++ test/channel_test.rb | 3 +- test/user_test.rb | 1 + test/workspace_test.rb | 123 ++++++++++++++++++++- 7 files changed, 466 insertions(+), 3 deletions(-) create mode 100644 test/cassettes/uses_get_url.yml diff --git a/lib/channel.rb b/lib/channel.rb index b2314487..cab56c83 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -27,4 +27,5 @@ def self.list_all def details return "Channel name: #{name}\nSlack ID: #{slack_id}\nChannel topic: #{topic}\nMember count: #{member_count}" end + end diff --git a/lib/recipient.rb b/lib/recipient.rb index 7ebfeeff..2d5f20ae 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -20,7 +20,7 @@ def send_message(channel, message) text: message, } request = HTTParty.post(url, query: query) - raise(Exception, "Encountered an error: #{request["error"]}") if request["true"] == false || request.code != 200 + raise(Exception, "Encountered an error: #{request["error"]}") if request["okay"] == false || request.code != 200 return request end diff --git a/test/cassettes/list_all_users.yml b/test/cassettes/list_all_users.yml index 51376804..c8aa37f6 100644 --- a/test/cassettes/list_all_users.yml +++ b/test/cassettes/list_all_users.yml @@ -87,4 +87,172 @@ http_interactions: Bear","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g93f8924e6f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583872779,"has_2fa":false}],"cache_ts":1584139551,"response_metadata":{"next_cursor":""}}' http_version: null recorded_at: Fri, 13 Mar 2020 22:45:51 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '633' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 23:25:11 GMT + Server: + - Apache + X-Slack-Req-Id: + - 490291cce35a459a1bdd141d111d3541 + 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 3cd7af07832481c336aa1c93c9b4a6fe.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - tjU_1ALos4A3hRbYHP4BjRlOyJJrJ-5ZXGfHWQhalvWItfbsxN-xcA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CV5GLCW12","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5},{"id":"CV5GLDJ9J","name":"slack-bot","is_channel":true,"is_group":false,"is_im":false,"created":1583865623,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-bot","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A + place for us to test our slack API projects","creator":"UV5GLBZT6","last_set":1583865752},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":5},{"id":"CV86RT7AS","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"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":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 23:25:11 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1983' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 23:27:23 GMT + Server: + - Apache + X-Slack-Req-Id: + - 047c4097ec175e63c5de958871f204b8 + 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-ed8e + X-Cache: + - Miss from cloudfront + Via: + - 1.1 e66162aafd55b64ba1478ff7105150fb.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - ToWs7UydUUrM2PhrSzwsHmz4iWreLz9xpfXzIiAX-DcjXjCAXAc45g== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TUVTGCG8H","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":"TUVTGCG8H"},"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":"UUTB447GA","team_id":"TUVTGCG8H","name":"space_nikki_v_api_pro","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"space_nikki_v_api_pro","real_name_normalized":"space_nikki_v_api_pro","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g9f1f52862a3","api_app_id":"AV80E6U15","always_active":false,"bot_id":"BV80VFAF9","image_24":"https:\/\/secure.gravatar.com\/avatar\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039082},{"id":"UUTFEGX7U","team_id":"TUVTGCG8H","name":"time_vera_api_project","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_vera_api_project","real_name_normalized":"time_vera_api_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3c93b95bac9","api_app_id":"AUTF5G9R8","always_active":false,"bot_id":"BV8561FMM","image_24":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1583874337},{"id":"UUW8EPTR7","team_id":"TUVTGCG8H","name":"time_sharon_cheung_ap","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_sharon_cheung_ap","real_name_normalized":"time_sharon_cheung_ap","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g39da6f1a267","api_app_id":"AV6AZG6Q5","always_active":false,"bot_id":"BUTH5NWSW","image_24":"https:\/\/secure.gravatar.com\/avatar\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039172},{"id":"UUWNEB82F","team_id":"TUVTGCG8H","name":"time_emily_api_projec","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_emily_api_projec","real_name_normalized":"time_emily_api_projec","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ga34175d6590","api_app_id":"AVACSNPN2","always_active":false,"bot_id":"BV7NS2P1A","image_24":"https:\/\/secure.gravatar.com\/avatar\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039217},{"id":"UV5GLBZT6","team_id":"TUVTGCG8H","name":"e.anderson8977","deleted":false,"color":"9f69e7","real_name":"Emily + Cowan","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Emily + Cowan","real_name_normalized":"Emily Cowan","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g42c84c2e8ed","first_name":"Emily","last_name":"Cowan","image_24":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583865695},{"id":"UV60P4CMN","team_id":"TUVTGCG8H","name":"keikei1128","deleted":false,"color":"4bbe2e","real_name":"Sharon + Cheung","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sharon + Cheung","real_name_normalized":"Sharon Cheung","display_name":"Sharon Cheung","display_name_normalized":"Sharon + Cheung","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"247b75993584","image_original":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_original.jpg","is_custom_image":true,"image_24":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_1024.jpg","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583865896},{"id":"UV60Q76GG","team_id":"TUVTGCG8H","name":"lizeth.veraro","deleted":false,"color":"e7392d","real_name":"Vera","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Vera","real_name_normalized":"Vera","display_name":"Vera","display_name_normalized":"Vera","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"220b824fa494","image_original":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_original.png","is_custom_image":true,"image_24":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_24.png","image_32":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_32.png","image_48":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_48.png","image_72":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_72.png","image_192":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_192.png","image_512":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_512.png","image_1024":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_1024.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583872956},{"id":"UV64BM5QV","team_id":"TUVTGCG8H","name":"vnikki13","deleted":false,"color":"3c989f","real_name":"Nikki + Vaughan","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Nikki + Vaughan","real_name_normalized":"Nikki Vaughan","display_name":"Nikki Vaughan","display_name_normalized":"Nikki + Vaughan","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g9e7c278e8fd","image_24":"https:\/\/secure.gravatar.com\/avatar\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583868664},{"id":"UV68KR96Z","team_id":"TUVTGCG8H","name":"mairheshmati","deleted":false,"color":"e96699","real_name":"Mair + Bear","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mair + Bear","real_name_normalized":"Mair Bear","display_name":"Mair Bear","display_name_normalized":"Mair + Bear","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g93f8924e6f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583872779,"has_2fa":false}],"cache_ts":1584142043,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 23:27:23 GMT recorded_with: VCR 5.1.0 diff --git a/test/cassettes/uses_get_url.yml b/test/cassettes/uses_get_url.yml new file mode 100644 index 00000000..fce89177 --- /dev/null +++ b/test/cassettes/uses_get_url.yml @@ -0,0 +1,171 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1982' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 23:44:39 GMT + Server: + - Apache + X-Slack-Req-Id: + - 20fbd6f15d7311cf4f60c8de32bc2987 + 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-1pft + X-Cache: + - Miss from cloudfront + Via: + - 1.1 995664ee945c06fc706b5cb8e0e650dc.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - t5tFh7B-rxeaWl1OSzUXjWpkTNY83gV5uPI4ihe_3M1ivP036BNyug== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TUVTGCG8H","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":"TUVTGCG8H"},"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":"UUTB447GA","team_id":"TUVTGCG8H","name":"space_nikki_v_api_pro","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"space_nikki_v_api_pro","real_name_normalized":"space_nikki_v_api_pro","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g9f1f52862a3","api_app_id":"AV80E6U15","always_active":false,"bot_id":"BV80VFAF9","image_24":"https:\/\/secure.gravatar.com\/avatar\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039082},{"id":"UUTFEGX7U","team_id":"TUVTGCG8H","name":"time_vera_api_project","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_vera_api_project","real_name_normalized":"time_vera_api_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3c93b95bac9","api_app_id":"AUTF5G9R8","always_active":false,"bot_id":"BV8561FMM","image_24":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1583874337},{"id":"UUW8EPTR7","team_id":"TUVTGCG8H","name":"time_sharon_cheung_ap","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_sharon_cheung_ap","real_name_normalized":"time_sharon_cheung_ap","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g39da6f1a267","api_app_id":"AV6AZG6Q5","always_active":false,"bot_id":"BUTH5NWSW","image_24":"https:\/\/secure.gravatar.com\/avatar\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039172},{"id":"UUWNEB82F","team_id":"TUVTGCG8H","name":"time_emily_api_projec","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_emily_api_projec","real_name_normalized":"time_emily_api_projec","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ga34175d6590","api_app_id":"AVACSNPN2","always_active":false,"bot_id":"BV7NS2P1A","image_24":"https:\/\/secure.gravatar.com\/avatar\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039217},{"id":"UV5GLBZT6","team_id":"TUVTGCG8H","name":"e.anderson8977","deleted":false,"color":"9f69e7","real_name":"Emily + Cowan","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Emily + Cowan","real_name_normalized":"Emily Cowan","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g42c84c2e8ed","first_name":"Emily","last_name":"Cowan","image_24":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583865695},{"id":"UV60P4CMN","team_id":"TUVTGCG8H","name":"keikei1128","deleted":false,"color":"4bbe2e","real_name":"Sharon + Cheung","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sharon + Cheung","real_name_normalized":"Sharon Cheung","display_name":"Sharon Cheung","display_name_normalized":"Sharon + Cheung","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"247b75993584","image_original":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_original.jpg","is_custom_image":true,"image_24":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_1024.jpg","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583865896},{"id":"UV60Q76GG","team_id":"TUVTGCG8H","name":"lizeth.veraro","deleted":false,"color":"e7392d","real_name":"Vera","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Vera","real_name_normalized":"Vera","display_name":"Vera","display_name_normalized":"Vera","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"220b824fa494","image_original":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_original.png","is_custom_image":true,"image_24":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_24.png","image_32":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_32.png","image_48":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_48.png","image_72":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_72.png","image_192":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_192.png","image_512":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_512.png","image_1024":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_1024.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583872956},{"id":"UV64BM5QV","team_id":"TUVTGCG8H","name":"vnikki13","deleted":false,"color":"3c989f","real_name":"Nikki + Vaughan","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Nikki + Vaughan","real_name_normalized":"Nikki Vaughan","display_name":"Nikki Vaughan","display_name_normalized":"Nikki + Vaughan","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g9e7c278e8fd","image_24":"https:\/\/secure.gravatar.com\/avatar\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583868664},{"id":"UV68KR96Z","team_id":"TUVTGCG8H","name":"mairheshmati","deleted":false,"color":"e96699","real_name":"Mair + Bear","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mair + Bear","real_name_normalized":"Mair Bear","display_name":"Mair Bear","display_name_normalized":"Mair + Bear","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g93f8924e6f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583872779,"has_2fa":false}],"cache_ts":1584143079,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 23:44:39 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '633' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 23:44:39 GMT + Server: + - Apache + X-Slack-Req-Id: + - f710bb3c2862fdc6ec78e749a87c49a2 + 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-itvd + X-Cache: + - Miss from cloudfront + Via: + - 1.1 44cd593d82a2d200a94217033c614c6a.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - qYBD4gOicqD90xq8Pji2VxqZgXoddyCpOT3vR5_cvMrlHUyM7E-cVA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CV5GLCW12","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5},{"id":"CV5GLDJ9J","name":"slack-bot","is_channel":true,"is_group":false,"is_im":false,"created":1583865623,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-bot","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A + place for us to test our slack API projects","creator":"UV5GLBZT6","last_set":1583865752},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":5},{"id":"CV86RT7AS","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"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":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 23:44:40 GMT +recorded_with: VCR 5.1.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index ced59dcd..681aa3dc 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -2,7 +2,7 @@ describe "channel" do describe "self.get" do before do - VCR.use_cassette("uses_get(url)") do + VCR.use_cassette("get_user") do @url = "https://slack.com/api/conversations.list" @response = Channel.get(@url) end @@ -48,4 +48,5 @@ end end end + #TODO needs to test for the details method end diff --git a/test/user_test.rb b/test/user_test.rb index fb8967bc..0be347ab 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -32,4 +32,5 @@ end end end + #TODO need to test for the details method end diff --git a/test/workspace_test.rb b/test/workspace_test.rb index a46e6816..ab59899e 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1 +1,122 @@ -require_relative "test_helper" \ No newline at end of file +require_relative "test_helper" + +describe "Workspace" do + it "Workspace has a list of users and channels" do + VCR.use_cassette("list_all_users") do + workspace = Workspace.new + expect(workspace.users).must_be_kind_of Array + expect(workspace.users[0]).must_be_instance_of User + expect(workspace.channels).must_be_kind_of Array + expect(workspace.channels[0]).must_be_instance_of Channel + expect(workspace.selected).must_be_nil + end + end + + describe "select_user" do + it "Should return user when given the user name" do + VCR.use_cassette("list_all_users") do + workspace = Workspace.new + my_user = "mairheshmati" + selection = workspace.select_user(my_user) + expect(selection).must_be_instance_of User + expect(selection.name).must_equal "mairheshmati" + expect(selection.slack_id).must_equal "UV68KR96Z" + expect(selection.real_name).must_equal "Mair Bear" + end + end + it "Should return user when given the slack ID" do + VCR.use_cassette("list_all_users") do + workspace = Workspace.new + my_slack_id = "UV64BM5QV" + selection = workspace.select_user(my_slack_id) + expect(selection).must_be_instance_of User + expect(selection.name).must_equal "vnikki13" + expect(selection.slack_id).must_equal "UV64BM5QV" + expect(selection.real_name).must_equal "Nikki Vaughan" + end + end + it "Should return nil if no such User exists" do + VCR.use_cassette("list_all_users") do + workspace = Workspace.new + bogus_slack_name = "but why" + selection = workspace.select_user(bogus_slack_name) + expect(selection).must_be_nil + end + end + it "Should assign that user as selected" do + VCR.use_cassette("list_all_users") do + workspace = Workspace.new + my_user = "mairheshmati" + workspace.select_user(my_user) + expect(workspace.selected).must_be_instance_of User + end + end + end + describe "select_channel" do + it "Should return channel when given channel name" do + VCR.use_cassette("uses_get_url") do + workspace = Workspace.new + my_channel = "general" + selection = workspace.select_channel(my_channel) + expect(selection).must_be_instance_of Channel + expect(selection.name).must_equal "general" + expect(selection.slack_id).must_equal "CV5GLCW12" + expect(selection.topic).must_equal "Company-wide announcements and work-based matters" + expect(selection.member_count).must_equal 5 + end + end + it "Should return channel when given channel slack ID" do + VCR.use_cassette("uses_get_url") do + workspace = Workspace.new + my_channel_id = "CV5GLDJ9J" + selection = workspace.select_channel(my_channel_id) + expect(selection).must_be_instance_of Channel + expect(selection.name).must_equal "slack-bot" + expect(selection.slack_id).must_equal my_channel_id + expect(selection.topic).must_equal "A place for us to test our slack API projects" + expect(selection.member_count).must_equal 5 + end + end + it "Should return nil if no such channel exists" do + VCR.use_cassette("uses_get_url") do + workspace = Workspace.new + bogus_channel = "part people?" + selection = workspace.select_channel(bogus_channel) + expect(selection).must_be_nil + end + end + it "should assign that channel as selected" do + VCR.use_cassette("uses_get_url") do + workspace = Workspace.new + my_channel = "general" + workspace.select_channel(my_channel) + expect(workspace.selected).must_be_instance_of Channel + end + end + end + describe "details_of" do + it "Should return the selected item's details/attributes" do + VCR.use_cassette("uses_get_url") do + workspace = Workspace.new + workspace.select_user("mairheshmati") + my_details = workspace.details_of + expect(my_details).must_equal "Slack name: mairheshmati\nSlack ID: UV68KR96Z\nReal name: Mair Bear" + end + end + end + describe "text_me" + it "Should have an ID of where the message should be sent to and a message" do + + end + it "Should send a HTTParty post request to send a message" do ### This is testing the Recipient's method!!!!!!! + VCR.use_cassette("#TODO: generate your own casset for sending messages") do + expect(request.code).must_equal 200 + expect(request["okay"]).must_equal true + end + end + it "Should raise an Exception when no message and/or no channel is given" do + end + it "Should return False if the message doesn't go through" do + + end +end From 5d9f8ad53090cb817a88a8a96d9907cac5b1e43c Mon Sep 17 00:00:00 2001 From: Maryam Heshmati Date: Mon, 16 Mar 2020 12:32:34 -0700 Subject: [PATCH 15/15] finishes writing tests for Workspace --- lib/recipient.rb | 7 +- lib/workspace.rb | 6 +- test/cassettes/get_user.yml | 84 +++++++++ test/cassettes/send_message.yml | 322 ++++++++++++++++++++++++++++++++ test/channel_test.rb | 7 +- test/user_test.rb | 7 +- test/workspace_test.rb | 27 +-- 7 files changed, 437 insertions(+), 23 deletions(-) create mode 100644 test/cassettes/get_user.yml create mode 100644 test/cassettes/send_message.yml diff --git a/lib/recipient.rb b/lib/recipient.rb index 2d5f20ae..a6c3b962 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -11,7 +11,6 @@ def initialize(name, slack_id) @slack_id = slack_id end - def send_message(channel, message) url = "https://slack.com/api/chat.postMessage" query = { @@ -19,8 +18,9 @@ def send_message(channel, message) channel: channel, text: message, } + request = HTTParty.post(url, query: query) - raise(Exception, "Encountered an error: #{request["error"]}") if request["okay"] == false || request.code != 200 + raise(Exception, "Encountered an error: #{request["error"]}") if request["ok"] == false || request.code != 200 return request end @@ -29,12 +29,11 @@ def self.get(base_url) token: AUTH_TOKEN, } response = HTTParty.get(base_url, query: query) - raise(Exception, "Encountered an error: #{response["error"]}") if response["okay"] == false || response.code != 200 + raise(Exception, "Encountered an error: #{response["error"]}") if response["ok"] == false || response.code != 200 return response end def self.list_all raise(NotImplementedError, "Implement me in a child class!") end - end diff --git a/lib/workspace.rb b/lib/workspace.rb index 78b9cdf2..ef1e900b 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -16,7 +16,7 @@ def select_user(name_or_slack_id) user.name.downcase == name_or_slack_id.downcase || user.slack_id.downcase == name_or_slack_id.downcase end - @selected = user unless user == nil + @selected = user unless user == nil end def select_channel(name_or_slack_id) @@ -34,6 +34,6 @@ def details_of def text_me(message) channel = @selected.slack_id request = @selected.send_message(channel, message) - return false if request["okay"] == false + return false if request["ok"] == false end -end \ No newline at end of file +end diff --git a/test/cassettes/get_user.yml b/test/cassettes/get_user.yml new file mode 100644 index 00000000..c5dcdb5f --- /dev/null +++ b/test/cassettes/get_user.yml @@ -0,0 +1,84 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '633' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 23:22:33 GMT + Server: + - Apache + X-Slack-Req-Id: + - bb99d060d17861a27796afb9211bd777 + 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-lxhd + X-Cache: + - Miss from cloudfront + Via: + - 1.1 995664ee945c06fc706b5cb8e0e650dc.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - te2I7fjMKBSIwR0Uyqi90Z5EV022BVvb_fPoNRxT06Ml5P0jYD6-UA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CV5GLCW12","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5},{"id":"CV5GLDJ9J","name":"slack-bot","is_channel":true,"is_group":false,"is_im":false,"created":1583865623,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-bot","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A + place for us to test our slack API projects","creator":"UV5GLBZT6","last_set":1583865752},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":5},{"id":"CV86RT7AS","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"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":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 23:22:33 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/send_message.yml b/test/cassettes/send_message.yml new file mode 100644 index 00000000..5c69edd5 --- /dev/null +++ b/test/cassettes/send_message.yml @@ -0,0 +1,322 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '2015' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 17:31:32 GMT + Server: + - Apache + X-Slack-Req-Id: + - ffcf56e2679ee4c5a3aca645908ddbb2 + 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 824a5d9ed02451bcb68b15ae5991dce0.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - DEN50-C2 + X-Amz-Cf-Id: + - 9Mb_bu0fkUeWI4-Qh0jKG-uhqOYgoy3xXf_3l6MbrQtHaa1Ju1Trtw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TUVTGCG8H","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":"TUVTGCG8H"},"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":"UUTB447GA","team_id":"TUVTGCG8H","name":"space_nikki_v_api_pro","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"space_nikki_v_api_pro","real_name_normalized":"space_nikki_v_api_pro","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g9f1f52862a3","api_app_id":"AV80E6U15","always_active":false,"bot_id":"BV80VFAF9","image_24":"https:\/\/secure.gravatar.com\/avatar\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.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\/9f1f52862a3fe88cf7cf0e3c592450a6.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584039082},{"id":"UUTFEGX7U","team_id":"TUVTGCG8H","name":"time_vera_api_project","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_vera_api_project","real_name_normalized":"time_vera_api_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3c93b95bac9","api_app_id":"AUTF5G9R8","always_active":false,"bot_id":"BV8561FMM","image_24":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3c93b95bac98de9661f70da4afca7db0.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0004-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1583874337},{"id":"UUW8EPTR7","team_id":"TUVTGCG8H","name":"time_sharon_cheung_ap","deleted":false,"color":"684b6c","real_name":"time_sharon_cheung_ap","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_sharon_cheung_ap","real_name_normalized":"time_sharon_cheung_ap","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g39da6f1a267","api_app_id":"AV6AZG6Q5","always_active":false,"bot_id":"BUTH5NWSW","first_name":"time_sharon_cheung_ap","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.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\/39da6f1a267bd9468d389bfaf9aad25f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1584372982},{"id":"UUWNEB82F","team_id":"TUVTGCG8H","name":"time_emily_api_projec","deleted":true,"profile":{"title":"","phone":"","skype":"","real_name":"time_emily_api_projec","real_name_normalized":"time_emily_api_projec","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ga34175d6590","api_app_id":"AVACSNPN2","always_active":false,"bot_id":"BV7NS2P1A","first_name":"time_emily_api_projec","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.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\/a34175d6590715898809c47d3790c4fd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"is_bot":true,"is_app_user":false,"updated":1584314260},{"id":"UV5GLBZT6","team_id":"TUVTGCG8H","name":"e.anderson8977","deleted":false,"color":"9f69e7","real_name":"Emily + Cowan","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Emily + Cowan","real_name_normalized":"Emily Cowan","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g42c84c2e8ed","first_name":"Emily","last_name":"Cowan","image_24":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/42c84c2e8ed03134c2c75a116cb2a8db.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0008-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583865695},{"id":"UV60P4CMN","team_id":"TUVTGCG8H","name":"keikei1128","deleted":false,"color":"4bbe2e","real_name":"Sharon + Cheung","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sharon + Cheung","real_name_normalized":"Sharon Cheung","display_name":"Sharon Cheung","display_name_normalized":"Sharon + Cheung","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"247b75993584","image_original":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_original.jpg","is_custom_image":true,"image_24":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2020-03-10\/981944386785_247b7599358427ae6a7f_1024.jpg","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583865896},{"id":"UV60Q76GG","team_id":"TUVTGCG8H","name":"lizeth.veraro","deleted":false,"color":"e7392d","real_name":"Vera","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Vera","real_name_normalized":"Vera","display_name":"Vera","display_name_normalized":"Vera","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"220b824fa494","image_original":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_original.png","is_custom_image":true,"image_24":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_24.png","image_32":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_32.png","image_48":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_48.png","image_72":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_72.png","image_192":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_192.png","image_512":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_512.png","image_1024":"https:\/\/avatars.slack-edge.com\/2020-03-10\/994142975895_220b824fa49458c4473f_1024.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583872956},{"id":"UV64BM5QV","team_id":"TUVTGCG8H","name":"vnikki13","deleted":false,"color":"3c989f","real_name":"Nikki + Vaughan","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Nikki + Vaughan","real_name_normalized":"Nikki Vaughan","display_name":"Nikki Vaughan","display_name_normalized":"Nikki + Vaughan","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g9e7c278e8fd","image_24":"https:\/\/secure.gravatar.com\/avatar\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.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\/9e7c278e8fd688e7bbc3e08211fe9b4a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583868664},{"id":"UV68KR96Z","team_id":"TUVTGCG8H","name":"mairheshmati","deleted":false,"color":"e96699","real_name":"Mair + Bear","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Mair + Bear","real_name_normalized":"Mair Bear","display_name":"Mair Bear","display_name_normalized":"Mair + Bear","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g93f8924e6f7","image_24":"https:\/\/secure.gravatar.com\/avatar\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.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\/93f8924e6f7526df1e523f881c3c13df.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TUVTGCG8H"},"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":1583872779,"has_2fa":false}],"cache_ts":1584379892,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Mon, 16 Mar 2020 17:31:31 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '633' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 17:31:33 GMT + Server: + - Apache + X-Slack-Req-Id: + - 67806e130c5ca687a9fe0fc90de05fb5 + 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-24dt + X-Cache: + - Miss from cloudfront + Via: + - 1.1 1e5c934b70471a41d2b61ae8c4abeb79.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - DEN50-C2 + X-Amz-Cf-Id: + - 6RU9K4cvbYKrEb0Qp7MkzauM-fSgLY8xqUyV9YWqMU_oNKC2I3-ipw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CV5GLCW12","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5},{"id":"CV5GLDJ9J","name":"slack-bot","is_channel":true,"is_group":false,"is_im":false,"created":1583865623,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-bot","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A + place for us to test our slack API projects","creator":"UV5GLBZT6","last_set":1583865752},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":5},{"id":"CV86RT7AS","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865622,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV5GLBZT6","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUVTGCG8H"],"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":"UV5GLBZT6","last_set":1583865622},"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":"UV5GLBZT6","last_set":1583865622},"previous_names":[],"num_members":5}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Mon, 16 Mar 2020 17:31:31 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage?channel=UV68KR96Z&text=Hello%20world&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: + - '328' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 17:31:33 GMT + Server: + - Apache + X-Slack-Req-Id: + - 341a5abc4bdbf60e8e865bc1d138e5cb + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - chat:write + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-hynk + X-Cache: + - Miss from cloudfront + Via: + - 1.1 6c02603f677dd5669f8ab3b41062340f.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - DEN50-C2 + X-Amz-Cf-Id: + - fjuvmpnJ-5RljgmIvGyr1APBnuiXnGXyTIFudVC0cEXZVwI-x8GZlg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channel":"DV6815HCY","ts":"1584379893.000100","message":{"bot_id":"BUTFQ92TU","type":"message","text":"Hello + world","user":"UV68KR96Z","ts":"1584379893.000100","team":"TUVTGCG8H","bot_profile":{"id":"BUTFQ92TU","deleted":false,"name":"Time- + Mair- Slack CLI","updated":1583874192,"app_id":"AV68PR5G8","icons":{"image_36":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/bot_36.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/bot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/service_72.png"},"team_id":"TUVTGCG8H"}}}' + http_version: null + recorded_at: Mon, 16 Mar 2020 17:31:31 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage?channel=UV68KR96Z&text=&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: + - '50' + Connection: + - keep-alive + Date: + - Mon, 16 Mar 2020 17:53:18 GMT + Server: + - Apache + X-Slack-Req-Id: + - ec49502034cf164d2b6aca34c4885698 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - chat:write + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-7z9c + X-Cache: + - Miss from cloudfront + Via: + - 1.1 1e5c934b70471a41d2b61ae8c4abeb79.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - DEN50-C2 + X-Amz-Cf-Id: + - sSBNvfoCoo6aGGVFj4qOoLINBDVAaMtT39SfnbZ7xqoFvenJ5BzzFg== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"no_text"}' + http_version: null + recorded_at: Mon, 16 Mar 2020 17:53:18 GMT +recorded_with: VCR 5.1.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index 681aa3dc..d0fca6d4 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -34,10 +34,11 @@ expect(@response["channels"][-1]["num_members"]).must_equal 5 end end - describe "list_all" do + describe "list_all and details" do before do VCR.use_cassette("list_all_channels") do @channel_list = Channel.list_all + @channel_details = @channel_list[0].details end end it "Should return an array of Channel objects" do @@ -47,6 +48,8 @@ expect(channel).must_be_instance_of Channel end end + it "Details should return a string containing details for Channel" do + expect(@channel_details).must_be_instance_of String + end end - #TODO needs to test for the details method end diff --git a/test/user_test.rb b/test/user_test.rb index 0be347ab..ec3f8c50 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -18,10 +18,11 @@ expect { User.get(url) }.must_raise Exception end end - describe "list_all" do + describe "list_all and details" do before do VCR.use_cassette("list_all_users") do @user_list = User.list_all + @user_details = @user_list[0].details end end it "Should return an array of User objects" do @@ -31,6 +32,8 @@ expect(user).must_be_instance_of User end end + it "Details should return a string containing details of User" do + expect(@user_details).must_be_kind_of String + end end - #TODO need to test for the details method end diff --git a/test/workspace_test.rb b/test/workspace_test.rb index ab59899e..5ae035ca 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -104,19 +104,22 @@ end end end - describe "text_me" - it "Should have an ID of where the message should be sent to and a message" do + describe "text_me" do + it "Should send a HTTParty post request to send a message" do + VCR.use_cassette("send_message") do + workspace = Workspace.new + selected = workspace.select_user("mairheshmati") + request = workspace.text_me("Hello world") - end - it "Should send a HTTParty post request to send a message" do ### This is testing the Recipient's method!!!!!!! - VCR.use_cassette("#TODO: generate your own casset for sending messages") do - expect(request.code).must_equal 200 - expect(request["okay"]).must_equal true + expect(request).wont_equal false + end + end + it "Should raise an Exception when no message and/or no channel is given" do + VCR.use_cassette("send_message") do + workspace = Workspace.new + selected = nil + expect { selected.send_message(nil, "hello world") }.must_raise Exception + end end - end - it "Should raise an Exception when no message and/or no channel is given" do - end - it "Should return False if the message doesn't go through" do - end end