diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..7bf2dab8 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 8d6a243f..34118bfe 100644 --- a/.gitignore +++ b/.gitignore @@ -11,11 +11,12 @@ /tmp/ # Used by dotenv library to load environment variables. -# .env +.env ## Specific to RubyMotion: .dat* .repl_history +.history/ build/ *.bridgesupport build-iPhoneOS/ diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..b0f1f7cf --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,31 @@ +require_relative 'recipient' + + +class Channel < Recipient + attr_reader :topic, :member_count, :detail + + def initialize(slack_id:, name:, topic:, member_count:, detail:) + super(slack_id: slack_id, name: name) + @topic = topic + @member_count = member_count + @detail = detail + end + + + + # Source Citation: lines 20-23 & 27 with Paige and Angele + def self.list + channels = self.get("https://slack.com/api/conversations.list")["channels"] + + channels.map do |channel| + name = channel["name"] + topic = channel["topic"]["value"] + member_count = channel["num_members"] + slack_id = channel["id"] + detail = channel["purpose"]["value"] + + Channel.new(slack_id: slack_id, name: name, topic: topic, member_count: member_count, detail: detail) + end + end +end + diff --git a/lib/error.rb b/lib/error.rb new file mode 100644 index 00000000..075e06a3 --- /dev/null +++ b/lib/error.rb @@ -0,0 +1,11 @@ + + class SlackApiError < Exception + # attr_reader + + def initialize + + end + + + + end diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..799d3736 --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,29 @@ +require 'httparty' +require 'dotenv' + +Dotenv.load + + +class Recipient + attr_reader :slack_id, :name + + KEY = ENV['SLACK_TOKEN'] + + def initialize(slack_id:, name:) + @slack_id = slack_id + @name = name + end + + + + def self.get(url) + HTTParty.get(url, query: {token: KEY}) + end + + + + def self.list + raise NotImplementedError 'Children implement this' + end + +end diff --git a/lib/slack.rb b/lib/slack.rb index 960cf2f7..1360d89d 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,11 +1,78 @@ -#!/usr/bin/env ruby +require_relative 'workspace' def main + workspace = Workspace.new + puts "Welcome to the Ada Slack CLI!" - - # TODO project - + puts "Select one of the following options: \'list users\', \'list channels\', \'select user\', \'select channel\', \'details\', \'send message'\ or \'quit\': " + user_input = gets.chomp.downcase + until user_input == "quit" + case user_input + when "list users", "list user", "user", "users" + workspace.users.each do |user| + puts """ + Slack ID: #{user.slack_id} + Real name: #{user.real_name} + Username: #{user.user_name} + """ + end + + when "list channels", "list channel", "channels", "channel" + workspace.channels.each do |channel| + puts """ + Slack ID: #{channel.slack_id} + Name: #{channel.name} + Topic: #{channel.topic} + Member count: #{channel.member_count} + """ + end + + when "select user", "user" + puts "Enter username or ID" + selection = gets.chomp.downcase + if workspace.select_user(selection) == nil + puts "Invalid input - username or ID does not exist" + end + + when "select channel", "channel" + puts "Enter channel name or ID" + selection = gets.chomp.downcase + if workspace.select_channel(selection) == nil + puts "Invalid input. Channel name or ID does not exist" + end + + when "send message", "message" + if workspace.selected == nil + puts "A recipient has not been selected." + else + puts "Enter the message you would like to send:" + message = gets.chomp + workspace.send_message(message, workspace.selected.slack_id) + puts "You sent the following message:" + puts message + end + + when "details", "detail" + if workspace.show_details == nil + puts "No recipient (user/channel) has been selected" + end + puts """ + #{workspace.show_details.slack_id} + #{workspace.show_details.detail} + """ + + end + + puts "Select one of the following options: \'list users\', \'list channels\', \'select user\', \'select channel\', \'send message'\ \'details\' or \'quit\': " + user_input = gets.chomp.downcase + end + + puts "Thank you for using the Ada Slack CLI" + end + + + main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..b00a0200 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,33 @@ +require_relative 'recipient' +require 'pry' + + +class User < Recipient + + attr_reader :slack_id, :user_name, :real_name, :detail + + def initialize(slack_id:, user_name:, real_name:, detail:) + @user_name = user_name + @real_name = real_name + @slack_id = slack_id + @detail = detail + end + + + + + def self.list + + response = self.get("https://slack.com/api/users.list")["members"] + + users = [] + response.each do |member| + user = self.new(slack_id: member["id"], real_name: member["real_name"], user_name: member["name"], detail: member["profile"]["status_text"]) + users << user + end + return users + end + +end + + diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..19b6bd7b --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,59 @@ +require_relative 'channel' +require_relative 'user' +require 'dotenv' + +Dotenv.load + +class Workspace + attr_reader :users, :channels, :selected + KEY = ENV['SLACK_TOKEN'] + + def initialize + @users = User.list + @channels = Channel.list + @selected = nil + end + + + def select_channel(selection) + @selected = @channels.find do |channel| + channel.name == selection || channel.slack_id == selection.upcase + end + + end + + + def select_user(selection) + @selected = @users.find do |user| + user.user_name == selection || user.slack_id == selection.upcase + end + end + + + + def show_details + if @selected != nil + if @selected.class == Channel + return @selected + elsif @selected.class == User + return @selected + end + else + return nil + end + + end + + + def send_message(message, channel) + response = HTTParty.post("https://slack.com/api/chat.postMessage", + body: { + token: ENV["SLACK_TOKEN"], + channel: channel, + text: message + }, + headers: { 'Content-type' => 'application/x-www-form-urlencoded' } + ) + end + +end diff --git a/test/cassettes/WSP_select_channel.yml b/test/cassettes/WSP_select_channel.yml new file mode 100644 index 00000000..e28c0a1b --- /dev/null +++ b/test/cassettes/WSP_select_channel.yml @@ -0,0 +1,157 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '942' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:44 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 3a813a70-f4cf-4d4e-81ca-64a5a16b408b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-f6kp + X-Cache: + - Miss from cloudfront + Via: + - 1.1 f9e23556a4b773d5dfcb88e1126ca21c.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - nIlZvwSYwEl1S6eDjRziY4hjt0EXJpfFcrYXkfE_oF-zMBASNjsg5w== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN5RART8U","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":"TN5RART8U"},"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":"UN69KK2F2","team_id":"TN5RART8U","name":"erika.maust","deleted":false,"color":"e7392d","real_name":"Erika","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Erika","real_name_normalized":"Erika","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g2539b84ab53","image_24":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568072826,"has_2fa":false},{"id":"UN85LFUVD","team_id":"TN5RART8U","name":"li.dora05","deleted":false,"color":"9f69e7","real_name":"Dora + Li","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dora + Li","real_name_normalized":"Dora Li","display_name":"","display_name_normalized":"","status_text":"#AdaLife","status_emoji":":speech_balloon:","status_expiration":0,"avatar_hash":"g358a2f5e308","first_name":"Dora","last_name":"Li","image_24":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568589675,"has_2fa":false}],"cache_ts":1568604764,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:44 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '619' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:44 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 487a6190-1cab-4fc0-8a42-b56303b57c0d + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-bott + X-Cache: + - Miss from cloudfront + Via: + - 1.1 591683988172c7980c4ebb318cbf18a9.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - f_SOTvdUXOFZby09nV10FyRhLEi01nDQW9avP3eVQWKyzH37zkXfBQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN69K7ERE","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69K7FK2","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"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":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69S86TX","name":"slack-api","is_channel":true,"is_group":false,"is_im":false,"created":1568071914,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171578},"purpose":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171529},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:44 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/WSP_user_info.yml b/test/cassettes/WSP_user_info.yml new file mode 100644 index 00000000..eae83de2 --- /dev/null +++ b/test/cassettes/WSP_user_info.yml @@ -0,0 +1,157 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '942' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:44 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 69061dc7-1752-47d7-aa17-ccb135338683 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-p70f + X-Cache: + - Miss from cloudfront + Via: + - 1.1 e36ab1b8726f47aa5adc8e19e66d1bbe.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - wbPoJI3RK_6nt0AYCmqMSb6n-oefJ5fn8VR1LKtQRGa5gIHJs-vjDw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN5RART8U","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":"TN5RART8U"},"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":"UN69KK2F2","team_id":"TN5RART8U","name":"erika.maust","deleted":false,"color":"e7392d","real_name":"Erika","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Erika","real_name_normalized":"Erika","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g2539b84ab53","image_24":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568072826,"has_2fa":false},{"id":"UN85LFUVD","team_id":"TN5RART8U","name":"li.dora05","deleted":false,"color":"9f69e7","real_name":"Dora + Li","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dora + Li","real_name_normalized":"Dora Li","display_name":"","display_name_normalized":"","status_text":"#AdaLife","status_emoji":":speech_balloon:","status_expiration":0,"avatar_hash":"g358a2f5e308","first_name":"Dora","last_name":"Li","image_24":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568589675,"has_2fa":false}],"cache_ts":1568604764,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:44 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '619' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:44 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 2a3559d3-4d3e-4b3e-a3d3-f0e20a94e0e5 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-kxc4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 e4d3d5aafc7d7d582423c073065ab563.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - 6QiUikz8RiE6-WqKvG_cJw6Tsr3sB6d4QD6npbiBEcUAsRb8tYrGuQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN69K7ERE","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69K7FK2","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"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":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69S86TX","name":"slack-api","is_channel":true,"is_group":false,"is_im":false,"created":1568071914,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171578},"purpose":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171529},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:45 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/Workspace_initialized.yml b/test/cassettes/Workspace_initialized.yml new file mode 100644 index 00000000..191c8d5b --- /dev/null +++ b/test/cassettes/Workspace_initialized.yml @@ -0,0 +1,157 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '942' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:45 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - b5c92e2c-b002-47c8-9b3e-4779f325f945 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-5f34 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 7022a5bbf9872d4a09d63e6cdb457dfe.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - JvqHeZFu72uUOS-Iz2nhoSoOfdnZJWjY8coTP5mK8JIidar2ac7rFg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN5RART8U","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":"TN5RART8U"},"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":"UN69KK2F2","team_id":"TN5RART8U","name":"erika.maust","deleted":false,"color":"e7392d","real_name":"Erika","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Erika","real_name_normalized":"Erika","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g2539b84ab53","image_24":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568072826,"has_2fa":false},{"id":"UN85LFUVD","team_id":"TN5RART8U","name":"li.dora05","deleted":false,"color":"9f69e7","real_name":"Dora + Li","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dora + Li","real_name_normalized":"Dora Li","display_name":"","display_name_normalized":"","status_text":"#AdaLife","status_emoji":":speech_balloon:","status_expiration":0,"avatar_hash":"g358a2f5e308","first_name":"Dora","last_name":"Li","image_24":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568589675,"has_2fa":false}],"cache_ts":1568604765,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:45 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '619' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:45 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - f6413daf-f49e-464e-9a58-63250f9829fe + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-pl73 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 fda3b2797d2719576f6b916583a28e52.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - 1xAaHE2_od5OSnkgf3k5O2TIrrdJfyZBGiQQ7GUyd7FhYtkeitjCjQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN69K7ERE","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69K7FK2","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"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":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69S86TX","name":"slack-api","is_channel":true,"is_group":false,"is_im":false,"created":1568071914,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171578},"purpose":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171529},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:46 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/channel.yml b/test/cassettes/channel.yml new file mode 100644 index 00000000..c3d1d971 --- /dev/null +++ b/test/cassettes/channel.yml @@ -0,0 +1,161 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '619' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:43 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 5e7af0ea-5d0c-485e-9737-217cd6df2e2e + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-20wj + X-Cache: + - Miss from cloudfront + Via: + - 1.1 98aedae6661e3904540676966998ed89.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - "-CIwjTngj3ru2Zwe98oGwRXVREG-NIzqeK-ZY9MvUyTaavy1E9y0Bg==" + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN69K7ERE","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69K7FK2","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"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":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69S86TX","name":"slack-api","is_channel":true,"is_group":false,"is_im":false,"created":1568071914,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171578},"purpose":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171529},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:43 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '619' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:43 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - ffed7435-cd02-4dca-b3c7-dbac46a4616e + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-abbx + X-Cache: + - Miss from cloudfront + Via: + - 1.1 0732be5515ffeda639cfe5f22fb04df6.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - Yuy2h0wQxq0pOQdtBHxCWA2w9hmHK4hLdQbEA8mkq45BEFKmJI-ZUw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN69K7ERE","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69K7FK2","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"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":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69S86TX","name":"slack-api","is_channel":true,"is_group":false,"is_im":false,"created":1568071914,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171578},"purpose":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171529},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:43 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/return_Channel.yml b/test/cassettes/return_Channel.yml new file mode 100644 index 00000000..59716093 --- /dev/null +++ b/test/cassettes/return_Channel.yml @@ -0,0 +1,157 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '942' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:45 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - d4b12d62-e67b-47b4-96b2-4821e7eed46d + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-4oho + X-Cache: + - Miss from cloudfront + Via: + - 1.1 591683988172c7980c4ebb318cbf18a9.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - odJWoGlOGOl58L5oTJTNB2pEOpobLUr3FbZ4P6fXj--9KRQLqIYh3w== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN5RART8U","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":"TN5RART8U"},"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":"UN69KK2F2","team_id":"TN5RART8U","name":"erika.maust","deleted":false,"color":"e7392d","real_name":"Erika","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Erika","real_name_normalized":"Erika","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g2539b84ab53","image_24":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568072826,"has_2fa":false},{"id":"UN85LFUVD","team_id":"TN5RART8U","name":"li.dora05","deleted":false,"color":"9f69e7","real_name":"Dora + Li","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dora + Li","real_name_normalized":"Dora Li","display_name":"","display_name_normalized":"","status_text":"#AdaLife","status_emoji":":speech_balloon:","status_expiration":0,"avatar_hash":"g358a2f5e308","first_name":"Dora","last_name":"Li","image_24":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568589675,"has_2fa":false}],"cache_ts":1568604765,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:45 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '619' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:45 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - b4f9f7e4-fed8-4ff2-a868-881fa4837693 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-p70f + X-Cache: + - Miss from cloudfront + Via: + - 1.1 476c2ba6d9f6cd69dbcedbd65688cbc0.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - uoQNqVx1Y7WFT6T9ImAMCZkOTQOMss69934xuMEiEZLqUrLtq5cpNQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN69K7ERE","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69K7FK2","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"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":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69S86TX","name":"slack-api","is_channel":true,"is_group":false,"is_im":false,"created":1568071914,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171578},"purpose":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171529},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:45 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/return_User.yml b/test/cassettes/return_User.yml new file mode 100644 index 00000000..9c084d58 --- /dev/null +++ b/test/cassettes/return_User.yml @@ -0,0 +1,157 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '942' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:46 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - '09ecd180-f8a1-473f-a0ff-b6350ca6e20f' + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-lzki + X-Cache: + - Miss from cloudfront + Via: + - 1.1 591683988172c7980c4ebb318cbf18a9.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - qEsM6WIpNqC5f4JPX-oSmmAqFFwgpQZ_B9kUi1zejSC08TOL6VLWtg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN5RART8U","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":"TN5RART8U"},"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":"UN69KK2F2","team_id":"TN5RART8U","name":"erika.maust","deleted":false,"color":"e7392d","real_name":"Erika","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Erika","real_name_normalized":"Erika","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g2539b84ab53","image_24":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568072826,"has_2fa":false},{"id":"UN85LFUVD","team_id":"TN5RART8U","name":"li.dora05","deleted":false,"color":"9f69e7","real_name":"Dora + Li","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dora + Li","real_name_normalized":"Dora Li","display_name":"","display_name_normalized":"","status_text":"#AdaLife","status_emoji":":speech_balloon:","status_expiration":0,"avatar_hash":"g358a2f5e308","first_name":"Dora","last_name":"Li","image_24":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568589675,"has_2fa":false}],"cache_ts":1568604766,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:46 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '619' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:46 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 9618a827-6a23-410f-85f8-96893fadfc6c + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-nvih + X-Cache: + - Miss from cloudfront + Via: + - 1.1 f9d716a351f14a0ac1fac2449734849b.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - 429A7SpOVZzfrQUUjKzlO-iGKlY6KI6xEKBx9YyM_YMN3ec5Mw48KA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN69K7ERE","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69K7FK2","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"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":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69S86TX","name":"slack-api","is_channel":true,"is_group":false,"is_im":false,"created":1568071914,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171578},"purpose":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171529},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:46 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/user.yml b/test/cassettes/user.yml new file mode 100644 index 00000000..73088e24 --- /dev/null +++ b/test/cassettes/user.yml @@ -0,0 +1,153 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '942' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:43 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 3caaaaf5-d252-4d86-bdb2-d0e345590aa5 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-vui8 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 4c7c693b007dfce603c83f138e31bccb.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - OneyboTmW-RGyGh7-8o3b04jKnBYHxIQKNg9xBBzHfxbup39N42knA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN5RART8U","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":"TN5RART8U"},"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":"UN69KK2F2","team_id":"TN5RART8U","name":"erika.maust","deleted":false,"color":"e7392d","real_name":"Erika","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Erika","real_name_normalized":"Erika","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g2539b84ab53","image_24":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568072826,"has_2fa":false},{"id":"UN85LFUVD","team_id":"TN5RART8U","name":"li.dora05","deleted":false,"color":"9f69e7","real_name":"Dora + Li","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dora + Li","real_name_normalized":"Dora Li","display_name":"","display_name_normalized":"","status_text":"#AdaLife","status_emoji":":speech_balloon:","status_expiration":0,"avatar_hash":"g358a2f5e308","first_name":"Dora","last_name":"Li","image_24":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568589675,"has_2fa":false}],"cache_ts":1568604763,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:43 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '942' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:43 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 9d325ce2-85db-4c80-876c-c557bfcb9ade + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-qpjz + X-Cache: + - Miss from cloudfront + Via: + - 1.1 760139201585481b26f947c5f776103a.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - ZLrTyoE7IrrsAIerANhLA9gqGGbRzpIhfdUFJ41go4K1AXlcHumbRw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN5RART8U","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":"TN5RART8U"},"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":"UN69KK2F2","team_id":"TN5RART8U","name":"erika.maust","deleted":false,"color":"e7392d","real_name":"Erika","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Erika","real_name_normalized":"Erika","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g2539b84ab53","image_24":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568072826,"has_2fa":false},{"id":"UN85LFUVD","team_id":"TN5RART8U","name":"li.dora05","deleted":false,"color":"9f69e7","real_name":"Dora + Li","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dora + Li","real_name_normalized":"Dora Li","display_name":"","display_name_normalized":"","status_text":"#AdaLife","status_emoji":":speech_balloon:","status_expiration":0,"avatar_hash":"g358a2f5e308","first_name":"Dora","last_name":"Li","image_24":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568589675,"has_2fa":false}],"cache_ts":1568604763,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:44 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/workspace_show_details_channel.yml b/test/cassettes/workspace_show_details_channel.yml new file mode 100644 index 00000000..16be0c31 --- /dev/null +++ b/test/cassettes/workspace_show_details_channel.yml @@ -0,0 +1,225 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '942' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:46 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 6730ee0c-788a-4474-83de-2e048d5f104a + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-20wj + X-Cache: + - Miss from cloudfront + Via: + - 1.1 ddaf46a95abcfc80e8eae76235e2127c.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - T5wLP12vJf6MkbJq3GnFXMrjXch89l2YDBuMHNsn9sFY59tkgItKIA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN5RART8U","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":"TN5RART8U"},"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":"UN69KK2F2","team_id":"TN5RART8U","name":"erika.maust","deleted":false,"color":"e7392d","real_name":"Erika","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Erika","real_name_normalized":"Erika","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g2539b84ab53","image_24":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568072826,"has_2fa":false},{"id":"UN85LFUVD","team_id":"TN5RART8U","name":"li.dora05","deleted":false,"color":"9f69e7","real_name":"Dora + Li","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dora + Li","real_name_normalized":"Dora Li","display_name":"","display_name_normalized":"","status_text":"#AdaLife","status_emoji":":speech_balloon:","status_expiration":0,"avatar_hash":"g358a2f5e308","first_name":"Dora","last_name":"Li","image_24":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568589675,"has_2fa":false}],"cache_ts":1568604766,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:46 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '619' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:46 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 0dca2d0a-aa20-432a-8289-8912a99dfaff + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-udcv + X-Cache: + - Miss from cloudfront + Via: + - 1.1 324a68a6c25ee50d774953f3e15a611d.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - bIeqsqiuMjgT8GMfTOpLAErfIpLtXEKbPAsfvaKfpDFD_Zemal09kA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN69K7ERE","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69K7FK2","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"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":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69S86TX","name":"slack-api","is_channel":true,"is_group":false,"is_im":false,"created":1568071914,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171578},"purpose":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171529},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:46 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage + body: + encoding: UTF-8 + string: token=SLACK_TOKEN>&channel=general&text=Message%20for%20you%2C%20sir + headers: + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:46 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - fb30122b-b6fb-41ff-b5ab-e2e1d35ac65c + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - chat:write:bot + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-g8yt + X-Cache: + - Miss from cloudfront + Via: + - 1.1 324a68a6c25ee50d774953f3e15a611d.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - INiaN-gv6hUlicWlqOWFdxvDcTm48KTYGPprqqCVr2F0vaTKicAq4g== + body: + encoding: UTF-8 + string: '{"ok":true,"channel":"CN69K7ERE","ts":"1568604766.000100","message":{"type":"message","subtype":"bot_message","text":"Message + for you, sir","ts":"1568604766.000100","username":"API","bot_id":"BMZBC764S"}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:46 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/workspace_show_details_user.yml b/test/cassettes/workspace_show_details_user.yml new file mode 100644 index 00000000..7919fe96 --- /dev/null +++ b/test/cassettes/workspace_show_details_user.yml @@ -0,0 +1,157 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '942' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:44 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 10f219d2-84d6-473a-ad05-c3e5419a24a3 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-6vyi + X-Cache: + - Miss from cloudfront + Via: + - 1.1 dfde9ff6b757ebf630087f6a37336a47.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - obt2iPE69ZbrgPNU8OyQ46pWfzpmEWBbKuMqkp4gurEWK-YGhL5Ufg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN5RART8U","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":"TN5RART8U"},"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":"UN69KK2F2","team_id":"TN5RART8U","name":"erika.maust","deleted":false,"color":"e7392d","real_name":"Erika","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Erika","real_name_normalized":"Erika","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g2539b84ab53","image_24":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/2539b84ab53590f6b93b9310311fa161.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568072826,"has_2fa":false},{"id":"UN85LFUVD","team_id":"TN5RART8U","name":"li.dora05","deleted":false,"color":"9f69e7","real_name":"Dora + Li","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Dora + Li","real_name_normalized":"Dora Li","display_name":"","display_name_normalized":"","status_text":"#AdaLife","status_emoji":":speech_balloon:","status_expiration":0,"avatar_hash":"g358a2f5e308","first_name":"Dora","last_name":"Li","image_24":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/358a2f5e3088174b0d14d8236f4da5d1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0025-512.png","status_text_canonical":"","team":"TN5RART8U"},"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":1568589675,"has_2fa":false}],"cache_ts":1568604764,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:44 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN> + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '619' + Connection: + - keep-alive + Date: + - Mon, 16 Sep 2019 03:32:44 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - c6c30f00-6bbb-4bd8-bb09-56a4e6d5bc6c + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-v0x2 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 a847181d425b7fc57e81eb3c800bfdf2.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - nwJTYD7TL8CWZWnZr7Ay4xpRIJhBThZLFZblmENexSfd1jtnPjP8AQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN69K7ERE","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69K7FK2","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1568071913,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"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":"UN85LFUVD","last_set":1568071913},"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":"UN85LFUVD","last_set":1568071913},"previous_names":[],"num_members":2},{"id":"CN69S86TX","name":"slack-api","is_channel":true,"is_group":false,"is_im":false,"created":1568071914,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slack-api","is_shared":false,"parent_conversation":null,"creator":"UN85LFUVD","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TN5RART8U"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171578},"purpose":{"value":"Ada + API project","creator":"UN85LFUVD","last_set":1568171529},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Mon, 16 Sep 2019 03:32:44 GMT +recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb new file mode 100644 index 00000000..87362b9a --- /dev/null +++ b/test/channel_test.rb @@ -0,0 +1,33 @@ +require_relative 'test_helper' +require_relative '../lib/channel' +require_relative '../lib/recipient' +require 'pry' +require 'httparty' +require 'dotenv' + +Dotenv.load + + + +describe "Channel class" do + + it "instantiate the Channel class" do + expect(Channel.new(slack_id: 123, name: "John", topic: "Smiths", member_count: 4, detail: "Whovians")).must_be_instance_of Channel + end + + it "assigns correct value to instance variables" do + channels = Channel.new(slack_id: 123, name: "John", topic: "Smiths", member_count: 4, detail: "Whovians") + expect(channels.slack_id).must_equal 123 + expect(channels.name).must_equal "John" + expect(channels.topic).must_equal "Smiths" + expect(channels.member_count).must_equal 4 + end + + it "creates an array of instances of Channel" do + VCR.use_cassette("channel") do + expect(Channel.list).must_be_kind_of Array + expect(Channel.list).wont_be_empty + end + end + +end \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..4b8fc8ac --- /dev/null +++ b/test/recipient_test.rb @@ -0,0 +1,2 @@ +require_relative 'test_helper' +require 'pry' \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index 90aeb408..ce9d1d67 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -9,9 +9,23 @@ require 'minitest/skip_dsl' require 'vcr' + +require_relative '../lib/channel.rb' +require_relative '../lib/user.rb' +require_relative '../lib/workspace.rb' +require_relative '../lib/recipient.rb' + Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new VCR.configure do |config| config.cassette_library_dir = "test/cassettes" config.hook_into :webmock + config.default_cassette_options = { + record: :new_episodes, # record new data when we don't have it + match_requests_on: [:method, :uri, :body] # match all of these + } + + config.filter_sensitive_data("SLACK_TOKEN>") do + ENV["SLACK_TOKEN"] + end end diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..f8008d06 --- /dev/null +++ b/test/user_test.rb @@ -0,0 +1,33 @@ +require_relative 'test_helper' +require_relative '../lib/user' +require_relative '../lib/recipient' +require 'pry' +require 'httparty' +require 'dotenv' + +Dotenv.load + + + +describe "User class" do + + it "initializes User" do + expect(User.new(slack_id: 234, user_name: "thewho", real_name:"The What", detail: "Well, well, well")).must_be_instance_of User + end + + it "assigns correct value to instance variables" do + users = User.new(slack_id: 234, user_name: "thewho", real_name:"The What", detail: "Well, well, well") + + expect(users.slack_id).must_equal 234 + expect(users.user_name).must_equal "thewho" + expect(users.real_name).must_equal "The What" + end + + it "creates an array of instances of users" do + VCR.use_cassette("user") do + expect(User.list).must_be_kind_of Array + expect(User.list).wont_be_empty + end + end + +end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..0ebfe5be --- /dev/null +++ b/test/workspace_test.rb @@ -0,0 +1,69 @@ +require_relative 'test_helper' +require_relative '../lib/workspace' +require 'pry' + +describe "Workspace" do + it "creates an instance of Workspace" do + VCR.use_cassette("Workspace initialized") do + expect(Workspace.new).must_be_instance_of Workspace + end + end + + it "returns an instance of User" do + VCR.use_cassette("return User") do + selection = Workspace.new.select_user("erika.maust") + expect(selection).must_be_instance_of User + end + end + + it "returns correct information for selected user" do + VCR.use_cassette("WSP_user_info") do + selection = Workspace.new.select_user("erika.maust") + expect(selection.user_name).must_equal "erika.maust" + expect(selection.real_name).must_equal "Erika" + end + end + + it "returns an instance of Channel" do + VCR.use_cassette("return Channel") do + selection = Workspace.new.select_channel("random") + expect(selection).must_be_instance_of Channel + end + end + + it "returns correct information for selected channel" do + VCR.use_cassette("WSP_select_channel") do + selection = Workspace.new.select_channel("random") + expect(selection.name).must_equal "random" + expect(selection.member_count).must_equal 2 + end + end + + it "returns correct ID when user id is selected" do + VCR.use_cassette("workspace_show_details_user") do + workspace = Workspace.new + selection = "slackbot" + workspace.select_user(selection) + selection_detail = workspace.show_details + expect(selection_detail.slack_id).must_equal "USLACKBOT" + end + end + + it "shows details for channel" do + VCR.use_cassette("workspace_show_details_channel") do + workspace = Workspace.new + selection = "general" + workspace.select_channel(selection) + selection_detail = workspace.show_details + expect(selection_detail.slack_id).must_equal "CN69K7ERE" + end + end + + it "successfully sends a message" do + VCR.use_cassette("workspace_show_details_channel") do + response = Workspace.new.send_message("Message for you, sir", "general") + expect(response).wont_be_nil + expect(response["ok"]).must_equal true + end + end +end