diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..1ad899db Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 8d6a243f..325b8b92 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ *.gem *.rbc +.env /.config /coverage/ /InstalledFiles @@ -11,7 +12,6 @@ /tmp/ # Used by dotenv library to load environment variables. -# .env ## Specific to RubyMotion: .dat* diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..bb9e56b4 --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,31 @@ +require_relative 'recipient' + +module Slack + class Channel < Recipient + attr_reader :topic, :member_count + + def initialize(slack_id:, name:, topic:, member_count:) + super(slack_id: slack_id, name: name) + + @topic = topic + @member_count = member_count + end + + def details + return "Slack id: #{slack_id}, Name: #{name}, Topic: #{topic}, Member_count: #{member_count}" + end + + def self.parse_response(response) + channels = response.parsed_response["channels"].map do |channel| + channel_slack_id = channel["id"] + channel_name = channel["name"] + channel_topic = channel["topic"]["value"] + channel_member_count = channel["members"].length + + Channel.new(slack_id: channel_slack_id, name:channel_name, topic: channel_topic, member_count: channel_member_count) + end + + return channels + end + end +end diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..186d87d3 --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,30 @@ +class SlackApiError < StandardError ; end + +module Slack + class Recipient + attr_reader :slack_id, :name + + def initialize(slack_id:, name:) + @slack_id = slack_id + @name = name + end + + def self.get(url, parameters) + response = HTTParty.get(url, parameters) + + unless response.code == 200 && response["ok"] + raise SlackApiError, "Invalid API request with code #{response.code} and message #{response["error"]}." + end + + return self.parse_response(response) + end + + def details + raise NotImplementedError, "Can't implement from recipient class." + end + + def self.parse_response(response) + raise NotImplementedError, "Can't implement recipient class." + end + end +end diff --git a/lib/slack.rb b/lib/slack.rb old mode 100755 new mode 100644 index 960cf2f7..a35b693a --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,11 +1,73 @@ -#!/usr/bin/env ruby +require_relative 'user' +require_relative 'workspace' +require_relative 'channel' def main - puts "Welcome to the Ada Slack CLI!" - - # TODO project - - puts "Thank you for using the Ada Slack CLI" + workspace = Slack::Workspace.new + should_continue = true + + while should_continue + puts "Welcome to Slack! Please choose one of the following:\n1. list users\n2. list channels\n3. select user\n4. select channel\n5. details\n6. send message\n7. set name\n8. set emoji\n9. quit" + input = gets.chomp.downcase + + case input + when "1", "list users" + workspace.list_users + when "2", "list channels" + workspace.list_channels + when "3", "select user" + puts "Please enter the name or slack ID of the user you want to select:" + requested_user = gets.chomp + + found_user = workspace.select_user(requested_user) + if found_user.class != Slack::User + puts "User was not found." + else + puts "User was selected." + end + when "4", "select channel" + puts "Please enter the name or slack ID of the channel you want to select:" + requested_channel = gets.chomp + + found_channel = workspace.select_channel(requested_channel) + if found_channel.class != Slack::Channel + puts "Channel was not found." + else + puts "Channel was selected." + end + when "5", "details" + if workspace.selected == nil + puts "No user or channel selected." + else + puts workspace.selected.details + end + when "6", "send message" + if workspace.selected == nil + puts "No user or channel selected." + else + puts "Please enter your message: " + message = gets.chomp + + workspace.send_message(message) + puts "Your message was sent!" + end + when "7", "set name" + puts "Please enter the name you would like to use: " + new_name = gets.chomp + + workspace.set_profile_name(new_name) + when "8", "set emoji" + puts "Please enter the emoji you would like to use: " + new_emoji = gets.chomp + + workspace.set_profile_emoji(new_emoji) + when "9", "quit" + puts "Goodbye!" + should_continue = false + else + puts "Please enter a valid menu option" + end + end end -main if __FILE__ == $PROGRAM_NAME \ No newline at end of file +main if __FILE__ == $PROGRAM_NAME diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..ea11b205 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,33 @@ +require_relative 'recipient' + +module Slack + class User < Recipient + attr_reader :status_text, :real_name, :status_emoji + + def initialize(slack_id:, name:, real_name:, status_text:, status_emoji:) + super(slack_id: slack_id, name: name) + + @real_name = real_name + @status_text = status_text + @status_emoji = status_emoji + end + + def details + return "Slack id: #{slack_id}, Name: #{name}, Real name: #{real_name}, Status Text: #{status_text}, Status Emoji: #{status_emoji}" + end + + def self.parse_response(response) + users = response.parsed_response["members"].map do |member| + member_slack_id = member["id"] + member_name = member["name"] + member_real_name = member["real_name"] + member_status_text = member["profile"]["status_text"] + member_status_emoji = member["profile"]["status_emoji"] + + User.new(slack_id: member_slack_id, name: member_name, real_name: member_real_name, status_text: member_status_text, status_emoji: member_status_emoji) + end + + return users + end + end +end diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100755 index 00000000..30411cf9 --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,102 @@ +require_relative 'user' +require_relative 'channel' +require 'dotenv' +require 'httparty' +require 'table_print' + +Dotenv.load + +module Slack + class Workspace + attr_reader :users, :channels, :selected + + BASE_URL = "https://slack.com/api/" + TOKEN = ENV['SLACK_TOKEN'] + + def initialize + @users = Slack::User.get("#{BASE_URL}/users.list", query: {token: TOKEN}) + @channels = Slack::Channel.get("#{BASE_URL}/channels.list", query: {token: TOKEN}) + @selected = nil + end + + #should this be in workspace or main? + def list_users + tp @users, :real_name, :slack_id, :user_name => {:display_method => :name} + end + + def list_channels + tp @channels, :name, :member_count, :slack_id, :topic => {:width => 50} + end + + def select_user(requested_user) + found_user = @users.find do |user| + user.name == requested_user || user.slack_id == requested_user + end + + @selected = found_user unless found_user == nil + + return found_user + end + + def select_channel(requested_channel) + found_channel = @channels.find do |channel| + channel.name == requested_channel || channel.slack_id == requested_channel + end + + @selected = found_channel unless found_channel == nil + + return found_channel + end + + def send_message(message) + response = HTTParty.post( "#{BASE_URL}/chat.postMessage", body: { token: TOKEN, channel: selected.slack_id, text: message } ) + + unless response.code == 200 && response["ok"] + raise SlackApiError, "Error when sending message to #{selected.name}. Invalid API request with code #{response.code} and message #{response["error"]}." + end + + return true + end + + def set_profile_name(user_name) + temp_name = @selected.name unless @selected == nil + + profile_settings = { token: TOKEN, profile: {"real_name": user_name} } + response = HTTParty.post( "#{BASE_URL}/users.profile.set", headers: { "Content-Type" => "application/json", authorization: "Bearer #{TOKEN}" }, body: profile_settings.to_json ) + + unless response.code == 200 && response["ok"] + raise SlackApiError, "Error: invalid API request with code #{response.code} and message #{response["error"]}." + end + + # reassign users and selected after changing profile information + @users = Slack::User.get( "#{BASE_URL}/users.list", query: { token: TOKEN } ) + @selected = select_user(temp_name) + + puts "Profile name was changed to #{user_name}." + return true + end + + def set_profile_emoji(status_emoji) + temp_name = @selected.name unless @selected == nil + + profile_settings = { token: TOKEN, profile: { "status_emoji": status_emoji } } + + response = HTTParty.post( "#{BASE_URL}/users.profile.set", headers: { "Content-Type" => "application/json", authorization: "Bearer #{TOKEN}" }, body: profile_settings.to_json ) + + if response.code == 200 && response["error"] == "profile_status_set_failed_not_emoji_syntax" || response["error"] == "profile_status_set_failed_not_valid_emoji" + puts "Invalid slack emoji." + elsif response.code == 200 && response["ok"] == false + raise SlackApiError, "Error: invalid API request with code #{response.code} and message #{response["error"]}." + else + puts "Status emoji was changed." + + # reassign users and selected after changing profile information + @users = Slack::User.get("#{BASE_URL}/users.list", query: {token: TOKEN}) + @selected = select_user(temp_name) + end + + return true + end + end +end + diff --git a/test/cassettes/profile_emoji_test.yml b/test/cassettes/profile_emoji_test.yml new file mode 100644 index 00000000..0a8b98d5 --- /dev/null +++ b/test/cassettes/profile_emoji_test.yml @@ -0,0 +1,463 @@ +--- +http_interactions: +- request: + method: post + uri: https://slack.com/api//users.profile.set + body: + encoding: UTF-8 + string: '{"token":"","profile":{"status_emoji":":rainbow:"}}' + headers: + Content-Type: + - application/json + Authorization: + - Bearer + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:02 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - '01198c5b-7fa8-4140-b013-b0aca611c4bc' + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + 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.profile:write + 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-2ywg + X-Cache: + - Miss from cloudfront + Via: + - 1.1 6faf668782fbb3c2aa466f6fccc76047.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - tyO8Nm_d5vf7AbkE80S3t3euH_rguPgY-oA7DpOQvyFkkaRiIGahKg== + body: + encoding: UTF-8 + string: '{"profile":{"title":"","phone":"","skype":"","real_name":"random_name","real_name_normalized":"random_name","display_name":"Raisah","display_name_normalized":"Raisah","fields":null,"status_text":"","status_emoji":":rainbow:","status_expiration":0,"avatar_hash":"g1166bfab69b","email":"rvesteinsdottir@gmail.com","first_name":"random_name","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":""},"ok":true,"username":"rvesteinsdottir","warning":"missing_charset","response_metadata":{"warnings":["missing_charset"]}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:02 GMT +- request: + method: get + uri: https://slack.com/api//users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1502' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:02 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - c74329a3-46eb-4b85-9acc-741489e09bc9 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-kftm + X-Cache: + - Miss from cloudfront + Via: + - 1.1 3ad3a559061a9d8753e12c8b13e4e4e8.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 71cj1BJOg8wvqrknEk6G2SGFXHByI8QTftJwMs5uVlnPw23rYOJ9mQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN843TM63","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":"TN843TM63"},"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":"UMTERDBPU","team_id":"TN843TM63","name":"kristina.tanya","deleted":false,"color":"9f69e7","real_name":"Kristina + M","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kristina + M","real_name_normalized":"Kristina M","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3e9b0330d1c","first_name":"Kristina","last_name":"M","image_24":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568159573},{"id":"UMURAK10T","team_id":"TN843TM63","name":"rvesteinsdottir","deleted":false,"color":"3c989f","real_name":"random_name","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"random_name","real_name_normalized":"random_name","display_name":"Raisah","display_name_normalized":"Raisah","status_text":"","status_emoji":":rainbow:","status_expiration":0,"avatar_hash":"g1166bfab69b","first_name":"random_name","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568411462,"has_2fa":false},{"id":"UMURAL35H","team_id":"TN843TM63","name":"dnsanche","deleted":false,"color":"e96699","real_name":"Daniela + Sanchez","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Daniela + Sanchez","real_name_normalized":"Daniela Sanchez","display_name":"Daniela + Sanchez","display_name_normalized":"Daniela Sanchez","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb0d197e7328","image_24":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568072127},{"id":"UN69JKYQ0","team_id":"TN843TM63","name":"cloudylopez","deleted":false,"color":"674b1b","real_name":"Cloudy + Lopez","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Cloudy + Lopez","real_name_normalized":"Cloudy Lopez","display_name":"Cloudy Lopez","display_name_normalized":"Cloudy + Lopez","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g877656756b0","image_24":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568272045},{"id":"UN69RK75K","team_id":"TN843TM63","name":"gyjinn","deleted":false,"color":"4bbe2e","real_name":"Ga-Young","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Ga-Young","real_name_normalized":"Ga-Young","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g816359af264","image_24":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568130004},{"id":"UN85KTCHM","team_id":"TN843TM63","name":"alicesunhi","deleted":false,"color":"e7392d","real_name":"jack","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"jack","real_name_normalized":"jack","display_name":"taro","display_name_normalized":"taro","status_text":"","status_emoji":":dog:","status_expiration":0,"avatar_hash":"gb68b3fce35e","first_name":"jack","image_24":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568242931}],"cache_ts":1568411462,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:02 GMT +- request: + method: post + uri: https://slack.com/api//users.profile.set + body: + encoding: UTF-8 + string: '{"token":"","profile":{"status_emoji":"cloud"}}' + headers: + Content-Type: + - application/json + Authorization: + - Bearer + response: + status: + code: 429 + message: Too Many Requests + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:03 GMT + Server: + - Apache + X-Slack-Req-Id: + - 5a4c26f4-827b-4a91-a6fd-118b939cb238 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + X-Accepted-Oauth-Scopes: + - users.profile:write + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + Retry-After: + - '6' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-2gtq + X-Cache: + - Error from cloudfront + Via: + - 1.1 48b1d9f5c5a47a0b424a9637eb513cee.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - nV8kbqo9tCnSKgfLYp_80_I7QylKNBGHJgd_hHDxCZnMKpjFSUR_Rw== + body: + encoding: UTF-8 + string: '{"ok":false,"error":"ratelimited","warning":"missing_charset","response_metadata":{"warnings":["missing_charset"]}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:03 GMT +- request: + method: get + uri: https://slack.com/api//users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1504' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:03 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 37cc6415-73bb-41d8-9819-4fe6df34c023 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + 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-f2n6 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 79f18dd6382f7347397cfbd42c438a75.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - tM71tc2PxAX6zHcszJT1Iguvi5qkoL3leuqwgWWzLIWU4D5vr3N1Cg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN843TM63","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":"TN843TM63"},"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":"UMTERDBPU","team_id":"TN843TM63","name":"kristina.tanya","deleted":false,"color":"9f69e7","real_name":"Kristina + M","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kristina + M","real_name_normalized":"Kristina M","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3e9b0330d1c","first_name":"Kristina","last_name":"M","image_24":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568159573},{"id":"UMURAK10T","team_id":"TN843TM63","name":"rvesteinsdottir","deleted":false,"color":"3c989f","real_name":"random_name","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"random_name","real_name_normalized":"random_name","display_name":"Raisah","display_name_normalized":"Raisah","status_text":"","status_emoji":":rainbow:","status_expiration":0,"avatar_hash":"g1166bfab69b","first_name":"random_name","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568411462,"has_2fa":false},{"id":"UMURAL35H","team_id":"TN843TM63","name":"dnsanche","deleted":false,"color":"e96699","real_name":"Daniela + Sanchez","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Daniela + Sanchez","real_name_normalized":"Daniela Sanchez","display_name":"Daniela + Sanchez","display_name_normalized":"Daniela Sanchez","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb0d197e7328","image_24":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568072127},{"id":"UN69JKYQ0","team_id":"TN843TM63","name":"cloudylopez","deleted":false,"color":"674b1b","real_name":"Cloudy + Lopez","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Cloudy + Lopez","real_name_normalized":"Cloudy Lopez","display_name":"Cloudy Lopez","display_name_normalized":"Cloudy + Lopez","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g877656756b0","image_24":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568272045},{"id":"UN69RK75K","team_id":"TN843TM63","name":"gyjinn","deleted":false,"color":"4bbe2e","real_name":"Ga-Young","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Ga-Young","real_name_normalized":"Ga-Young","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g816359af264","image_24":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568130004},{"id":"UN85KTCHM","team_id":"TN843TM63","name":"alicesunhi","deleted":false,"color":"e7392d","real_name":"jack","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"jack","real_name_normalized":"jack","display_name":"taro","display_name_normalized":"taro","status_text":"","status_emoji":":dog:","status_expiration":0,"avatar_hash":"gb68b3fce35e","first_name":"jack","image_24":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568242931}],"cache_ts":1568411463,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:03 GMT +- request: + method: post + uri: https://slack.com/api//users.profile.set + body: + encoding: UTF-8 + string: '{"token":"","profile":{"status_emoji":":731897:"}}' + headers: + Content-Type: + - application/json + Authorization: + - Bearer + response: + status: + code: 429 + message: Too Many Requests + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:03 GMT + Server: + - Apache + X-Slack-Req-Id: + - 06dece86-8e24-4b00-bf39-562961e1ac76 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + X-Accepted-Oauth-Scopes: + - users.profile:write + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + Retry-After: + - '6' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-139j + X-Cache: + - Error from cloudfront + Via: + - 1.1 ddc77da3ee14d939006f8adaf09d8aa5.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - tbvOSUBojPaExBIXVv8KhCFfhdnvpmQdpChw5CCRK9rk3XHnCgW7Tg== + body: + encoding: UTF-8 + string: '{"ok":false,"error":"ratelimited","warning":"missing_charset","response_metadata":{"warnings":["missing_charset"]}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:03 GMT +- request: + method: get + uri: https://slack.com/api//users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1504' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:03 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - fbecd054-f6ba-4958-ab15-7f17a65496d6 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + 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-nkso + X-Cache: + - Miss from cloudfront + Via: + - 1.1 a65ed239b1dc93560d93932663ec96bd.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - a7jfg8mkz14JcGNAWzE48chI4ai7WXHjjLUcdP5gbqAeqJy7CeNmSg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN843TM63","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":"TN843TM63"},"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":"UMTERDBPU","team_id":"TN843TM63","name":"kristina.tanya","deleted":false,"color":"9f69e7","real_name":"Kristina + M","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kristina + M","real_name_normalized":"Kristina M","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3e9b0330d1c","first_name":"Kristina","last_name":"M","image_24":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568159573},{"id":"UMURAK10T","team_id":"TN843TM63","name":"rvesteinsdottir","deleted":false,"color":"3c989f","real_name":"random_name","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"random_name","real_name_normalized":"random_name","display_name":"Raisah","display_name_normalized":"Raisah","status_text":"","status_emoji":":rainbow:","status_expiration":0,"avatar_hash":"g1166bfab69b","first_name":"random_name","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568411462,"has_2fa":false},{"id":"UMURAL35H","team_id":"TN843TM63","name":"dnsanche","deleted":false,"color":"e96699","real_name":"Daniela + Sanchez","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Daniela + Sanchez","real_name_normalized":"Daniela Sanchez","display_name":"Daniela + Sanchez","display_name_normalized":"Daniela Sanchez","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb0d197e7328","image_24":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568072127},{"id":"UN69JKYQ0","team_id":"TN843TM63","name":"cloudylopez","deleted":false,"color":"674b1b","real_name":"Cloudy + Lopez","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Cloudy + Lopez","real_name_normalized":"Cloudy Lopez","display_name":"Cloudy Lopez","display_name_normalized":"Cloudy + Lopez","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g877656756b0","image_24":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568272045},{"id":"UN69RK75K","team_id":"TN843TM63","name":"gyjinn","deleted":false,"color":"4bbe2e","real_name":"Ga-Young","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Ga-Young","real_name_normalized":"Ga-Young","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g816359af264","image_24":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568130004},{"id":"UN85KTCHM","team_id":"TN843TM63","name":"alicesunhi","deleted":false,"color":"e7392d","real_name":"jack","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"jack","real_name_normalized":"jack","display_name":"taro","display_name_normalized":"taro","status_text":"","status_emoji":":dog:","status_expiration":0,"avatar_hash":"gb68b3fce35e","first_name":"jack","image_24":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568242931}],"cache_ts":1568411463,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:03 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/profile_name_test.yml b/test/cassettes/profile_name_test.yml new file mode 100644 index 00000000..91629046 --- /dev/null +++ b/test/cassettes/profile_name_test.yml @@ -0,0 +1,225 @@ +--- +http_interactions: +- request: + method: post + uri: https://slack.com/api//users.profile.set + body: + encoding: UTF-8 + string: '{"token":"","profile":{"real_name":"random_name"}}' + headers: + Content-Type: + - application/json + Authorization: + - Bearer + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:02 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - '0905a61f-2d30-4fb8-a612-91c6e868c1ae' + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + 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.profile:write + 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-nxmy + X-Cache: + - Miss from cloudfront + Via: + - 1.1 b4ab85de5143ccb0abcfc5383f80ebbd.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - ydp6Ai2zXafl1ah8VUZ81SB3mvU8zCFjvLMmQkebDnUkOmqOCTbNFg== + body: + encoding: UTF-8 + string: '{"profile":{"title":"","phone":"","skype":"","real_name":"random_name","real_name_normalized":"random_name","display_name":"Raisah","display_name_normalized":"Raisah","fields":null,"status_text":"","status_emoji":":rainbow:","status_expiration":0,"avatar_hash":"g1166bfab69b","email":"rvesteinsdottir@gmail.com","first_name":"random_name","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":""},"ok":true,"username":"rvesteinsdottir","warning":"missing_charset","response_metadata":{"warnings":["missing_charset"]}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:02 GMT +- request: + method: get + uri: https://slack.com/api//users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1502' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:02 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 72e482fb-1b5c-40e7-895e-40f2ea8015f1 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + 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-1ir4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 d2bb0dc1233d3ab1747a4a160c14c25b.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 25qpNDwp_-nFqssKRCM1l_4ehoKiRJt5xAqkds12td8AoH2N_MUyOg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN843TM63","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":"TN843TM63"},"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":"UMTERDBPU","team_id":"TN843TM63","name":"kristina.tanya","deleted":false,"color":"9f69e7","real_name":"Kristina + M","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kristina + M","real_name_normalized":"Kristina M","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3e9b0330d1c","first_name":"Kristina","last_name":"M","image_24":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568159573},{"id":"UMURAK10T","team_id":"TN843TM63","name":"rvesteinsdottir","deleted":false,"color":"3c989f","real_name":"random_name","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"random_name","real_name_normalized":"random_name","display_name":"Raisah","display_name_normalized":"Raisah","status_text":"","status_emoji":":rainbow:","status_expiration":0,"avatar_hash":"g1166bfab69b","first_name":"random_name","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568411462,"has_2fa":false},{"id":"UMURAL35H","team_id":"TN843TM63","name":"dnsanche","deleted":false,"color":"e96699","real_name":"Daniela + Sanchez","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Daniela + Sanchez","real_name_normalized":"Daniela Sanchez","display_name":"Daniela + Sanchez","display_name_normalized":"Daniela Sanchez","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb0d197e7328","image_24":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568072127},{"id":"UN69JKYQ0","team_id":"TN843TM63","name":"cloudylopez","deleted":false,"color":"674b1b","real_name":"Cloudy + Lopez","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Cloudy + Lopez","real_name_normalized":"Cloudy Lopez","display_name":"Cloudy Lopez","display_name_normalized":"Cloudy + Lopez","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g877656756b0","image_24":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568272045},{"id":"UN69RK75K","team_id":"TN843TM63","name":"gyjinn","deleted":false,"color":"4bbe2e","real_name":"Ga-Young","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Ga-Young","real_name_normalized":"Ga-Young","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g816359af264","image_24":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568130004},{"id":"UN85KTCHM","team_id":"TN843TM63","name":"alicesunhi","deleted":false,"color":"e7392d","real_name":"jack","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"jack","real_name_normalized":"jack","display_name":"taro","display_name_normalized":"taro","status_text":"","status_emoji":":dog:","status_expiration":0,"avatar_hash":"gb68b3fce35e","first_name":"jack","image_24":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568242931}],"cache_ts":1568411462,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:02 GMT +- request: + method: post + uri: https://slack.com/api//users.profile.set + body: + encoding: UTF-8 + string: '{"token":"","profile":{"real_name":""}}' + headers: + Content-Type: + - application/json + Authorization: + - Bearer + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:02 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 5f1f9c20-0fe3-4fbc-ae73-c45c620332d8 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + 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.profile:write + 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-4tyc + X-Cache: + - Miss from cloudfront + Via: + - 1.1 490c6b39f412c738a30c226f07db749c.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 5gajpGJnCMoRDvtLAx-OLgEcvzMn5H--ikAQEkugPAJA7Pfx0jpUPw== + body: + encoding: UTF-8 + string: '{"ok":false,"error":"invalid_name_required","detail":"Value passed + for `name` was empty.","field":"real_name","warning":"missing_charset","response_metadata":{"warnings":["missing_charset"]}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:02 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/recipient_test.yml b/test/cassettes/recipient_test.yml new file mode 100644 index 00000000..0c5bdaba --- /dev/null +++ b/test/cassettes/recipient_test.yml @@ -0,0 +1,125 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=bad%20token + 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: + - '55' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:03 GMT + Server: + - Apache + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 48db3711-b2d1-496f-8001-677fa5ce128a + X-Xss-Protection: + - '0' + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-abpg + X-Cache: + - Miss from cloudfront + Via: + - 1.1 686ace1321107362da87839adf526fc6.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 8YWgkie_53RDv4jTdGlADsKhJ2MSdtWjIyk5d2bG0jwI4id66Ze_lQ== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"invalid_auth"}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:04 GMT +- request: + method: get + uri: https://slack.com/api/users.invalid?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: + - '78' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:04 GMT + Server: + - Apache + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 15d057e5-459c-44e3-a4ac-7438d14fb1a2 + X-Xss-Protection: + - '0' + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-1ir4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 92c8c11d2a0d1554296f15adc76d2e64.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - QshPeBYwckduTamew1z1vWWHE1hdOI-WmgKrD9UEm9r_3Ua32zoWeA== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"unknown_method","req_method":"users.invalid"}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:04 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/workspace_test.yml b/test/cassettes/workspace_test.yml new file mode 100644 index 00000000..2c38304a --- /dev/null +++ b/test/cassettes/workspace_test.yml @@ -0,0 +1,311 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api//users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1505' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:01 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - f0fbbae1-1599-491e-aed5-a73b7b47fe3a + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + 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-mar4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 9490d2a8f83e1d354892993e3f44be7c.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - cOm-GBG8x5P6Gxh3O80DNqCVvR1_3go0YZA7vGSCTUo28Zp4DL_XNw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TN843TM63","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":"TN843TM63"},"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":"UMTERDBPU","team_id":"TN843TM63","name":"kristina.tanya","deleted":false,"color":"9f69e7","real_name":"Kristina + M","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Kristina + M","real_name_normalized":"Kristina M","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g3e9b0330d1c","first_name":"Kristina","last_name":"M","image_24":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3e9b0330d1c2e104f1d9dbe0c6d81104.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0021-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568159573},{"id":"UMURAK10T","team_id":"TN843TM63","name":"rvesteinsdottir","deleted":false,"color":"3c989f","real_name":"random_name","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"random_name","real_name_normalized":"random_name","display_name":"Raisah","display_name_normalized":"Raisah","status_text":"","status_emoji":":rainbow:","status_expiration":0,"avatar_hash":"g1166bfab69b","first_name":"random_name","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.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\/1166bfab69bc4d1c79dcb245ee03288a.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0026-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568411426,"has_2fa":false},{"id":"UMURAL35H","team_id":"TN843TM63","name":"dnsanche","deleted":false,"color":"e96699","real_name":"Daniela + Sanchez","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Daniela + Sanchez","real_name_normalized":"Daniela Sanchez","display_name":"Daniela + Sanchez","display_name_normalized":"Daniela Sanchez","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb0d197e7328","image_24":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b0d197e73289b9054faa0517726ff139.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0006-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568072127},{"id":"UN69JKYQ0","team_id":"TN843TM63","name":"cloudylopez","deleted":false,"color":"674b1b","real_name":"Cloudy + Lopez","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Cloudy + Lopez","real_name_normalized":"Cloudy Lopez","display_name":"Cloudy Lopez","display_name_normalized":"Cloudy + Lopez","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g877656756b0","image_24":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/877656756b0aed370014507bf3552664.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0009-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568272045},{"id":"UN69RK75K","team_id":"TN843TM63","name":"gyjinn","deleted":false,"color":"4bbe2e","real_name":"Ga-Young","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Ga-Young","real_name_normalized":"Ga-Young","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g816359af264","image_24":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/816359af2646dc0038a37f6704efd389.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0005-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568130004},{"id":"UN85KTCHM","team_id":"TN843TM63","name":"alicesunhi","deleted":false,"color":"e7392d","real_name":"jack","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"jack","real_name_normalized":"jack","display_name":"taro","display_name_normalized":"taro","status_text":"","status_emoji":":dog:","status_expiration":0,"avatar_hash":"gb68b3fce35e","first_name":"jack","image_24":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b68b3fce35eedec31832996b6e7a6bd3.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0017-512.png","status_text_canonical":"","team":"TN843TM63"},"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":1568242931}],"cache_ts":1568411461,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:01 GMT +- request: + method: get + uri: https://slack.com/api//channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '696' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:01 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - c2b5e7db-448d-4cdf-9ea4-bfe02ec4b542 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + 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 + 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-n83k + X-Cache: + - Miss from cloudfront + Via: + - 1.1 15e808532464d90b13614947e41d0d22.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - A-iEq1tvx8PyUQrN63OMz_x3UshDWx_LkRcPvOpmUUaGIRPnHLpyYA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CMUPUL1R9","name":"pupper-pics","is_channel":true,"created":1568067981,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTERDBPU","name_normalized":"pupper-pics","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTERDBPU","UMURAK10T","UMURAL35H","UN69JKYQ0","UN69RK75K","UN85KTCHM"],"topic":{"value":"doggy + photoshoot","creator":"UN69RK75K","last_set":1568239058},"purpose":{"value":"To + share darn cute pupper pics!","creator":"UMTERDBPU","last_set":1568081755},"previous_names":[],"num_members":6},{"id":"CMWARHPNF","name":"sploots","is_channel":true,"created":1568159409,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UN69RK75K","name_normalized":"sploots","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTERDBPU","UMURAK10T","UMURAL35H","UN69JKYQ0","UN69RK75K","UN85KTCHM"],"topic":{"value":"doggy + butts and toes","creator":"UN69RK75K","last_set":1568239045},"purpose":{"value":"look + at cute doggy butts and toes","creator":"UN69RK75K","last_set":1568159410},"previous_names":[],"num_members":6},{"id":"CN5PU7BBN","name":"general","is_channel":true,"created":1568067980,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UMTERDBPU","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTERDBPU","UMURAK10T","UMURAL35H","UN69JKYQ0","UN69RK75K","UN85KTCHM"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMTERDBPU","last_set":1568067980},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMTERDBPU","last_set":1568067980},"previous_names":[],"num_members":6},{"id":"CN689KKBP","name":"random","is_channel":true,"created":1568067980,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTERDBPU","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTERDBPU","UMURAK10T","UMURAL35H","UN69JKYQ0","UN69RK75K","UN85KTCHM"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMTERDBPU","last_set":1568067980},"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":"UMTERDBPU","last_set":1568067980},"previous_names":[],"num_members":6}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:02 GMT +- request: + method: post + uri: https://slack.com/api//chat.postMessage + body: + encoding: UTF-8 + string: token=&channel=UN85KTCHM&text=This%20is%20my%20message%20text + 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: + - '179' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:04 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - ad5a19c5-3d55-4952-9ff1-f19d198f02ab + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + 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-nxmy + X-Cache: + - Miss from cloudfront + Via: + - 1.1 562f677992f98b6e62cd9704c95d2164.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - HbApHwGzRhzfzjoGlP4vlc4Fg4MXGyBGrT0WHZpREqc_AVNV6ailAg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channel":"DN85KTH0F","ts":"1568411464.000800","message":{"type":"message","subtype":"bot_message","text":"This + is my message text","ts":"1568411464.000800","username":"Leaves - Raisah - + API Project","bot_id":"BN69VE12R"}}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:04 GMT +- request: + method: post + uri: https://slack.com/api//chat.postMessage + body: + encoding: UTF-8 + string: token=&channel=UN85KTCHM&text= + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '50' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 21:51:04 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 48dcbc89-4086-4b5f-8ad5-bc9d0cc4303d + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot,users.profile:write + 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-90c1 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 f90d3247f95b3d929916918b14de82bc.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - J81ZsY9MP7YZFAnILFxnHFQvfN1jYIxPuQpGXCC8_G53Lwv-15lWNQ== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"no_text"}' + http_version: + recorded_at: Fri, 13 Sep 2019 21:51:04 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..a6a84803 --- /dev/null +++ b/test/channel_test.rb @@ -0,0 +1,24 @@ +require_relative 'test_helper' + +describe "Channel" do + before do + @channel = Slack::Channel.new( + slack_id: 1, + name: "taro", + topic: " ", + member_count: 1 + ) + end + + describe 'constructor' do + it "will initialize an instance of Channel" do + expect(@channel).must_be_kind_of Slack::Channel + end + end + + describe "details" do + it "will return details for a channel" do + expect(@channel.details).must_equal "Slack id: 1, Name: taro, Topic: , Member_count: 1" + end + end +end diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..37a239a7 --- /dev/null +++ b/test/recipient_test.rb @@ -0,0 +1,54 @@ +require_relative 'test_helper' + +describe Slack::Recipient do + describe 'constructor' do + it 'takes and saves a slack id and name' do + slack_name = "taro" + slack_id = 1 + + recipient = Slack::Recipient.new(slack_id: slack_id, name: slack_name) + + expect(recipient).must_be_kind_of Slack::Recipient + expect(recipient.slack_id).must_equal slack_id + expect(recipient.name).must_equal slack_name + end + end + + describe "self.get" do + it "will raise an error when invalid token" do + VCR.use_cassette("recipient_test") do + exception = expect{ + Slack::Recipient.get("https://slack.com/api/users.list", query: {token: "bad token"}) + }.must_raise SlackApiError + + expect(exception.message).must_equal "Invalid API request with code 200 and message invalid_auth." + end + end + + it "will raise an error when invalid url" do + VCR.use_cassette("recipient_test") do + exception = expect{ + Slack::Recipient.get("https://slack.com/api/users.invalid", query: {token: ENV['SLACK_TOKEN']}) + }.must_raise SlackApiError + + expect(exception.message).must_equal "Invalid API request with code 200 and message unknown_method." + end + end + end + + describe "abstract methods" do + before do + @slack_name = "taro" + @slack_id = 1 + @recipient = Slack::Recipient.new(slack_id: @slack_id, name: @slack_name) + end + + it "details method raises a NotImplementedError if invoked directly" do + expect{@recipient.details}.must_raise NotImplementedError + end + + it "parse_response method raises a NotImplementedError if invoked directly" do + expect{Slack::Recipient.parse_response(nil)}.must_raise NotImplementedError + end + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 90aeb408..65bfce70 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -7,11 +7,29 @@ require 'minitest/autorun' require 'minitest/reporters' require 'minitest/skip_dsl' +require 'webmock/minitest' +require 'dotenv' require 'vcr' +require 'httparty' + +Dotenv.load 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, + :match_requests_on => [:method, :uri, :body], + } + + config.filter_sensitive_data("") do + ENV["SLACK_TOKEN"] + end end + +require_relative '../lib/recipient.rb' +require_relative '../lib/user.rb' +require_relative '../lib/workspace.rb' +require_relative '../lib/channel.rb' \ No newline at end of file diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..5fc01fad --- /dev/null +++ b/test/user_test.rb @@ -0,0 +1,25 @@ +require_relative 'test_helper' + +describe "User" do + before do + @user = Slack::User.new( + slack_id: 1, + name: "taro", + real_name: "taro the corgi", + status_text: "borking", + status_emoji: ":boop:" + ) + end + + describe 'constructor' do + it "will initialize an instance of User" do + expect(@user).must_be_kind_of Slack::User + end + end + + describe "details" do + it "will return details for a user" do + expect(@user.details).must_equal "Slack id: 1, Name: taro, Real name: taro the corgi, Status Text: borking, Status Emoji: :boop:" + end + end +end diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..184244e4 --- /dev/null +++ b/test/workspace_test.rb @@ -0,0 +1,138 @@ +require_relative 'test_helper' + +describe "Workspace" do + before do + VCR.use_cassette("workspace_test") do + @workspace = Slack::Workspace.new + end + end + + describe "constructor" do + it "is an instance of Workspace" do + expect(@workspace).must_be_kind_of Slack::Workspace + end + + it "creates a workspace with a list of users, a list of channels" do + expect(@workspace.users).must_be_kind_of Array + expect(@workspace.users.length).must_equal 7 + expect(@workspace.channels).must_be_kind_of Array + expect(@workspace.channels.length).must_equal 4 + expect(@workspace.selected).must_be_nil + end + end + + describe "select user" do + before do + @requested_user = "alicesunhi" + @found_user = @workspace.select_user(@requested_user) + end + + it "will return a found user that matches" do + expect(@found_user).must_be_kind_of Slack::User + expect(@found_user.name).must_equal @requested_user + end + + it "will return empty array if no matching user" do + invalid_user = "random" + expect(@workspace.select_user(invalid_user)).must_be_nil + end + + it "will assign found user to 'selected' instance variable" do + expect(@workspace.selected).must_equal @found_user + end + end + + describe "select channel" do + before do + @requested_channel = "general" + @found_channel = @workspace.select_channel(@requested_channel) + end + + it "will return a found user that matches" do + expect(@found_channel).must_be_kind_of Slack::Channel + expect(@found_channel.name).must_equal @requested_channel + end + + it "will return empty array if no matching user" do + invalid_channel = "nothing" + expect(@workspace.select_channel(invalid_channel)).must_be_nil + end + + it "will assign found user to 'selected' instance variable" do + expect(@workspace.selected).must_equal @found_channel + end + end + + describe "send_message" do + it "can send valid message" do + @workspace.select_user("alicesunhi") + + VCR.use_cassette("workspace_test") do + response = @workspace.send_message("This is my message text") + expect(response).must_equal true + end + end + + it "will raise an error when invalid message text" do + @workspace.select_user("alicesunhi") + + VCR.use_cassette("workspace_test") do + rename = expect{ + @workspace.send_message(nil) + }.must_raise SlackApiError + + expect(rename.message).must_equal"Error when sending message to alicesunhi. Invalid API request with code 200 and message no_text." + end + end + end + + describe "set_profile_name" do + it "can change profile name" do + @workspace.select_user("rvesteinsdottir") + + VCR.use_cassette("profile_name_test") do + response = @workspace.set_profile_name("random_name") + expect(response).must_equal true + end + + expect(@workspace.selected.real_name).must_equal "random_name" + end + + it "raises error if api returns invalid response" do + VCR.use_cassette("profile_name_test") do + expect{ + @workspace.set_profile_name("") + }.must_raise SlackApiError + end + end + end + + describe "set_profile_emoji" do + before do + @workspace.select_user("rvesteinsdottir") + end + + it "can change profile emoji" do + VCR.use_cassette("profile_emoji_test") do + response = @workspace.set_profile_emoji(":rainbow:") + expect(response).must_equal true + end + + expect(@workspace.selected.status_emoji).must_equal ":rainbow:" + end + + it "raises error if not emoji syntax" do + VCR.use_cassette("profile_emoji_test") do + @workspace.set_profile_emoji(":rainbow:") + test_emoji = @workspace.selected.status_emoji + + # emoji will not change if given invalid emoji syntax + @workspace.set_profile_emoji("cloud") + expect(@workspace.selected.status_emoji).must_equal test_emoji + + @workspace.set_profile_emoji(":731897:") + expect(@workspace.selected.status_emoji).must_equal test_emoji + end + end + end +end