From 9b0a9cc7159d03ff4fb1018d157d2a68c599ed3c Mon Sep 17 00:00:00 2001 From: quinqu Date: Tue, 10 Mar 2020 15:49:50 -0700 Subject: [PATCH 01/14] first --- lib/slack.rb | 39 ++++++++++++++++++++++++++++++++++++--- lib/workspace.rb | 45 +++++++++++++++++++++++++++++++++++++++++++++ test/test_helper.rb | 4 ++++ 3 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 lib/workspace.rb diff --git a/lib/slack.rb b/lib/slack.rb index 8a0b659b..5d6f5112 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,12 +1,45 @@ #!/usr/bin/env ruby +require_relative 'workspace' +require 'dotenv' +require 'httparty' + +def ask_again + puts "Choose from the following: + 1. list users + 2. list channels + 3. quit + " + input = gets.chomp.to_i + + return input +end + def main + workspace = Workspace.new() puts "Welcome to the Ada Slack CLI!" - workspace = Workspace.new + puts "Choose from the following: + 1. list users + 2. list channels + 3. quit + " + input = gets.chomp.to_i + while input != 3 + if input == 1 + puts workspace.list_users + input = ask_again + elsif input == 2 + puts workspace.list_channels + input = ask_again + else + puts "idk" + input = ask_again + end + end + puts "Thank you for using the Ada Slack CLI" - # TODO project + - puts "Thank you for using the Ada Slack CLI" end main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..43eb9501 --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,45 @@ +require 'httparty' +require 'dotenv' + +BASE_URL = "https://slack.com/api/" + +Dotenv.load + +class Workspace + + attr_reader :users, :channenls + + def initialize + @users = [] + @channels = list_channels + + end + def list_users + + query = { + token: ENV["SLACK_TOKEN"] + } + response = HTTParty.get(BASE_URL + "users.list", query: query) + + end + def list_channels + query = { + token: ENV["SLACK_TOKEN"] + } + response = HTTParty.get(BASE_URL + "conversations.list", query: query) + return response + end + + + + +end + +# def main + +# workspace = Workspace.new() +# puts workspace.list_channels() + +# end + +# main \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index 1fcf2bab..f2548311 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -26,4 +26,8 @@ # Don't leave our token lying around in a cassette file. + config.filter_sensitive_data("xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc") do + ENV["SLACK_TOKEN"] + end + end From a61a8a58132daf7e16434d9534cbcaae302f47e9 Mon Sep 17 00:00:00 2001 From: quinqu Date: Wed, 11 Mar 2020 13:26:42 -0700 Subject: [PATCH 02/14] second commit --- lib/channel.rb | 52 ++++++++++++++++++++++++++++++++++++++++++ lib/recipient.rb | 36 +++++++++++++++++++++++++++++ lib/slack.rb | 39 ++++++++++++++++++++----------- lib/user.rb | 49 +++++++++++++++++++++++++++++++++++++++ lib/workspace.rb | 39 +++++++++++++------------------ test/channel_test.rb | 0 test/recipient_test.rb | 0 test/slack_test.rb | 0 test/user_test.rb | 0 test/workspace_test.rb | 0 10 files changed, 179 insertions(+), 36 deletions(-) create mode 100644 lib/channel.rb create mode 100644 lib/recipient.rb create mode 100644 lib/user.rb create mode 100644 test/channel_test.rb create mode 100644 test/recipient_test.rb create mode 100644 test/slack_test.rb create mode 100644 test/user_test.rb create mode 100644 test/workspace_test.rb diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..06aedd39 --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,52 @@ + +require_relative 'recipient' +require 'httparty' +require 'dotenv' + + +class ChannelRecipient < Recipient + attr_reader :topic, :member_count + + def initialize(slack_id, name, topic, member_count) + super(slack_id, name) + @topic = topic + @member_count = member_count + end + + + + + + + def details + + + end + + def self.list_all + query = { + token: ENV["SLACK_TOKEN"] + } + + response = HTTParty.get(BASE_URL + "conversations.list", query: query) + + channels = response["channels"] + channels_array = [] + channels.each do |channel| + channels_array << ChannelRecipient.new(channel["id"], channel["name"], channel["topic"], channel["num_members"]) + end + + return channels_array + end + + def self.find(id) + channels = self.list_all + channels.each do |channel| + if id = channel["id"] + return channel + end + end + return ArgumentError.new("Channel not found") + end + +end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..b2266692 --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,36 @@ +#both user and channel can inherit +require 'httparty' +require 'dotenv' + +BASE_URL = "https://slack.com/api/" + +Dotenv.load + +class Recipient + attr_reader :slack_id, :name + + def initialize(slack_id, name) + @slack_id = slack_id + @name = name + + end + + def self.get(url, params) + + + end + + + def send_message(message) + + end + + def details + + end + + def self.list_all + + end + +end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index 5d6f5112..98d00398 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -7,29 +7,44 @@ def ask_again puts "Choose from the following: 1. list users 2. list channels - 3. quit - " - input = gets.chomp.to_i + 3. select user + 4. select channel + 5. details - return input + -1. quit + " + return gets.chomp.to_i end def main workspace = Workspace.new() puts "Welcome to the Ada Slack CLI!" - puts "Choose from the following: - 1. list users - 2. list channels - 3. quit - " - input = gets.chomp.to_i - while input != 3 + input = ask_again + recipient = nil + while input != -1 if input == 1 puts workspace.list_users input = ask_again elsif input == 2 puts workspace.list_channels + input = ask_again + elsif input == 3 + puts "What is the user's ID?" + recipient = UserRecipient.find(gets.chomp) + input = ask_again + elsif input == 4 + puts "What is the channels's ID?" + recipient = ChannelRecipient.find(gets.chomp) + puts recipient + input = ask_again + elsif input == 5 + # if recipient.instance_of? Recipient + + # else + # raise ArgumentError("You have not chosen a user or channel") + # end + input = ask_again else puts "idk" @@ -38,8 +53,6 @@ def main end puts "Thank you for using the Ada Slack CLI" - - end main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..72dcff54 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,49 @@ +require_relative 'recipient' +require 'httparty' +require 'dotenv' + +class UserRecipient < Recipient + attr_reader :real_name, :status_text, :status_emoji + + def initialize(slack_id, name, real_name, status_text, status_emoji) + super(slack_id, name) + @real_name = real_name #user["profile"]["real_name"] + @status_text = status_text #user["profile"]["status_text"] + @status_emoji = status_emoji #user["profile"]["status_emoji"] + + end + + def details + + + + end + + def self.list_all + query = { + token: ENV["SLACK_TOKEN"] + } + response = HTTParty.get(BASE_URL + "users.list", query: query) + + users = response["members"] + name_array = [] + users.each do |user| + name_array << UserRecipient.new(user["id"], user["name"],user["profile"]["real_name"], user["profile"]["status_text"], user["profile"]["status_emoji"]) + end + return name_array + end + + def self.find(id) + users = self.list_all + users.each do |user| + if id = user["id"] + return user + end + end + return ArgumentError.new("Channel not found") + end + + + + +end \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index 43eb9501..3cd80ea1 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -1,45 +1,38 @@ require 'httparty' require 'dotenv' +require_relative 'user' +require_relative 'channel' -BASE_URL = "https://slack.com/api/" Dotenv.load class Workspace - attr_reader :users, :channenls + attr_reader :users, :channels, :selected def initialize - @users = [] - @channels = list_channels + @users = UserRecipient.list_all + @channels = ChannelRecipient.list_all + @selected = selected end def list_users - - query = { - token: ENV["SLACK_TOKEN"] - } - response = HTTParty.get(BASE_URL + "users.list", query: query) - + #TODO a prettier way to print + return @users end + def list_channels - query = { - token: ENV["SLACK_TOKEN"] - } - response = HTTParty.get(BASE_URL + "conversations.list", query: query) - return response + #TODO a prettier way to print + return @channels end - - + def select_user -end + end -# def main + def select_channel -# workspace = Workspace.new() -# puts workspace.list_channels() + end -# end +end -# main \ No newline at end of file diff --git a/test/channel_test.rb b/test/channel_test.rb new file mode 100644 index 00000000..e69de29b diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..e69de29b diff --git a/test/slack_test.rb b/test/slack_test.rb new file mode 100644 index 00000000..e69de29b diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..e69de29b diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..e69de29b From fafabfb22a12f05aa2b5970fc1b6e3023a64ea98 Mon Sep 17 00:00:00 2001 From: quinqu Date: Wed, 11 Mar 2020 16:59:36 -0700 Subject: [PATCH 03/14] finished wave 3 --- Untitled 3.rtf | 22 +++++++++ lib/channel.rb | 16 ++++--- lib/recipient.rb | 3 +- lib/slack.rb | 23 ++++----- lib/user.rb | 31 +++++++----- lib/workspace.rb | 22 +++++++-- test/cassettes/channel_data.yml | 84 +++++++++++++++++++++++++++++++++ test/channel_test.rb | 34 +++++++++++++ test/test_helper.rb | 10 +++- 9 files changed, 208 insertions(+), 37 deletions(-) create mode 100644 Untitled 3.rtf create mode 100644 test/cassettes/channel_data.yml diff --git a/Untitled 3.rtf b/Untitled 3.rtf new file mode 100644 index 00000000..a1cf93c2 --- /dev/null +++ b/Untitled 3.rtf @@ -0,0 +1,22 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2511 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 Menlo-Regular;} +{\colortbl;\red255\green255\blue255;\red242\green242\blue242;\red0\green0\blue0;} +{\*\expandedcolortbl;;\csgray\c95825;\csgray\c0\c85000;} +\margl1440\margr1440\vieww10800\viewh8400\viewkind0 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 + +\f0\fs22 \cf2 \cb3 \CocoaLigature0 1\ +[#, #, #]\ +Choose from the following: \ + 1. list users\ + 2. list channels\ + 3. select user\ + 4. select channel\ + 5. details\ +\ + -1. quit\ + \ +2\ +[#"Company-wide announcements and work-based matters", "creator"=>"UUVTJ2NPK", "last_set"=>1583865667\}, @member_count=1>, #"", "creator"=>"", "last_set"=>0\}, @member_count=1>, #"", "creator"=>"", "last_set"=>0\}, @member_count=1>, #"", "creator"=>"", "last_set"=>0\}, @member_count=1>, #"Non-work banter and water cooler conversation", "creator"=>"UUVTJ2NPK", "last_set"=>1583865667\}, @member_count=1>]\ +Choose from the following: \ +} \ No newline at end of file diff --git a/lib/channel.rb b/lib/channel.rb index 06aedd39..14145f2a 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -19,8 +19,13 @@ def initialize(slack_id, name, topic, member_count) def details - - + pretty_string = "DETAILS: + Slack ID: #{@slack_id} + Name: #{@name} + Topic: #{@topic} + Member Count: #{@member_count} + " + return pretty_string end def self.list_all @@ -40,13 +45,12 @@ def self.list_all end def self.find(id) - channels = self.list_all - channels.each do |channel| - if id = channel["id"] + self.list_all.each do |channel| + if id == channel.slack_id return channel end end - return ArgumentError.new("Channel not found") + return "CHANNEL NOT FOUND" end end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb index b2266692..37a6c208 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -33,4 +33,5 @@ def self.list_all end -end \ No newline at end of file +end + diff --git a/lib/slack.rb b/lib/slack.rb index 98d00398..a2ceb673 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -3,6 +3,7 @@ require 'dotenv' require 'httparty' + def ask_again puts "Choose from the following: 1. list users @@ -10,6 +11,7 @@ def ask_again 3. select user 4. select channel 5. details + 6. send message -1. quit " @@ -23,29 +25,28 @@ def main input = ask_again recipient = nil while input != -1 + if input == 1 - puts workspace.list_users + puts workspace.list_users.to_s input = ask_again elsif input == 2 - puts workspace.list_channels + puts workspace.list_channels.to_s input = ask_again elsif input == 3 puts "What is the user's ID?" - recipient = UserRecipient.find(gets.chomp) + recipient = workspace.select_user(gets.chomp) + puts "User: #{recipient}" input = ask_again elsif input == 4 puts "What is the channels's ID?" - recipient = ChannelRecipient.find(gets.chomp) - puts recipient + recipient = workspace.select_channel(gets.chomp) + puts "Channel: #{recipient}" input = ask_again elsif input == 5 - # if recipient.instance_of? Recipient - - # else - # raise ArgumentError("You have not chosen a user or channel") - # end - + puts workspace.get_details(recipient) input = ask_again + elsif input == 6 + #TODO else puts "idk" input = ask_again diff --git a/lib/user.rb b/lib/user.rb index 72dcff54..793dae95 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -2,21 +2,29 @@ require 'httparty' require 'dotenv' + + class UserRecipient < Recipient attr_reader :real_name, :status_text, :status_emoji def initialize(slack_id, name, real_name, status_text, status_emoji) super(slack_id, name) - @real_name = real_name #user["profile"]["real_name"] - @status_text = status_text #user["profile"]["status_text"] - @status_emoji = status_emoji #user["profile"]["status_emoji"] + @real_name = real_name + @status_text = status_text + @status_emoji = status_emoji end def details - + pretty_string = "DETAILS: + Slack ID: #{@slack_id} + Name: #{@name} + Real Name: #{@real_name} + Status Text: #{@status_text} + Status Emoji: #{@status_emoji} + " + return pretty_string - end def self.list_all @@ -24,7 +32,6 @@ def self.list_all token: ENV["SLACK_TOKEN"] } response = HTTParty.get(BASE_URL + "users.list", query: query) - users = response["members"] name_array = [] users.each do |user| @@ -34,16 +41,14 @@ def self.list_all end def self.find(id) - users = self.list_all - users.each do |user| - if id = user["id"] + + self.list_all.each do |user| + if id == user.slack_id return user end end - return ArgumentError.new("Channel not found") + return "USER NOT FOUND" end +end - - -end \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index 3cd80ea1..b804e0a2 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -2,6 +2,7 @@ require 'dotenv' require_relative 'user' require_relative 'channel' +require_relative 'recipient' Dotenv.load @@ -17,20 +18,31 @@ def initialize end def list_users - #TODO a prettier way to print return @users end - def list_channels - #TODO a prettier way to print + def list_channels return @channels end - def select_user + def select_user(id) + return UserRecipient.find(id) end - def select_channel + def select_channel(id) + return ChannelRecipient.find(id) + end + + def get_details(recipient) + if recipient.instance_of?(UserRecipient) || recipient.instance_of?(ChannelRecipient) + return recipient.details + else + return "You have not chosen a user or channel, can't grab details for ya" + end + end + + def send_message end diff --git a/test/cassettes/channel_data.yml b/test/cassettes/channel_data.yml new file mode 100644 index 00000000..264677b7 --- /dev/null +++ b/test/cassettes/channel_data.yml @@ -0,0 +1,84 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/conversations.list?token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + 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: + - '710' + Connection: + - keep-alive + Date: + - Wed, 11 Mar 2020 20:57:25 GMT + Server: + - Apache + X-Slack-Req-Id: + - ca63e23304cec771068fa0450acd7680 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-hitr + X-Cache: + - Miss from cloudfront + Via: + - 1.1 17d327aff2e081d9a192b3e9f19a7905.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD53-C1 + X-Amz-Cf-Id: + - OiejXjZcYjcenMcGONfzAjp9zHCTkqz8iKsf1P507VY3U6T_tDYNkg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUUG9HF6X","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UUVTJ2NPK","last_set":1583865667},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1},{"id":"CUVKG668J","name":"creating-another-channel","is_channel":true,"is_group":false,"is_im":false,"created":1583954031,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"creating-another-channel","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CUYATKU49","name":"one-more","is_channel":true,"is_group":false,"is_im":false,"created":1583954049,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"one-more","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"i + dont know why","creator":"UUVTJ2NPK","last_set":1583954050},"previous_names":[],"num_members":1},{"id":"CV60LSW0Y","name":"quin-api-test","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"quin-api-test","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CV86THB7G","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UUVTJ2NPK","last_set":1583865667},"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":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Wed, 11 Mar 2020 20:57:25 GMT +recorded_with: VCR 5.1.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index e69de29b..b1e4ed54 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -0,0 +1,34 @@ +require_relative 'test_helper' +require_relative '../lib/channel' + +describe "initialize" do + it "will create a Channel object" do + + channel = ChannelRecipient.new("YYUW", "random", "random stuff is put here", 4) + channel.must_be_instance_of ChannelRecipient + + end +end + +describe "class methods" do + it "can find data" do + VCR.use_cassette("channel_data") do + response = ChannelRecipient.list_all() + expect(response).wont_be_nil + end + end + + + + + # it "all" do + # VCR.use_cassette("location_find") do + # location = "" + # expect { + # response = get_location(location) + # }.must_raise SearchError + # end + # end + #expect(response["Seattle"][:lon]).must_equal "-122.3300624" + #expect(response["Seattle"][:lat]).must_equal "47.6038321" +end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index f2548311..a7f08171 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -8,8 +8,17 @@ require 'minitest/reporters' require 'minitest/skip_dsl' require 'vcr' +require 'dotenv' + + + +Dotenv.load Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new +require_relative '../lib/channel' +require_relative '../lib/user' +require_relative '../lib/slack' + VCR.configure do |config| config.cassette_library_dir = "test/cassettes" @@ -25,7 +34,6 @@ } # Don't leave our token lying around in a cassette file. - config.filter_sensitive_data("xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc") do ENV["SLACK_TOKEN"] end From a3873978c49bdf7a270d9c77aeea83250584a5d6 Mon Sep 17 00:00:00 2001 From: quinqu Date: Wed, 11 Mar 2020 18:00:45 -0700 Subject: [PATCH 04/14] wave 3 --- lib/channel.rb | 18 ++++++++++-------- lib/recipient.rb | 19 ++++++------------- lib/slack.rb | 7 ++++--- lib/user.rb | 9 +++++++++ lib/workspace.rb | 21 +++++++++++++-------- 5 files changed, 42 insertions(+), 32 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 14145f2a..99ee8dcb 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -13,11 +13,6 @@ def initialize(slack_id, name, topic, member_count) @member_count = member_count end - - - - - def details pretty_string = "DETAILS: Slack ID: #{@slack_id} @@ -32,15 +27,13 @@ def self.list_all query = { token: ENV["SLACK_TOKEN"] } - response = HTTParty.get(BASE_URL + "conversations.list", query: query) - + channels = response["channels"] channels_array = [] channels.each do |channel| channels_array << ChannelRecipient.new(channel["id"], channel["name"], channel["topic"], channel["num_members"]) end - return channels_array end @@ -53,4 +46,13 @@ def self.find(id) return "CHANNEL NOT FOUND" end + def send_message(message) + query = { + token: ENV["SLACK_TOKEN"], + text: message, + channel: @slack_id + } + response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) + end + end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb index 37a6c208..6c7c2bb9 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -13,25 +13,18 @@ def initialize(slack_id, name) @slack_id = slack_id @name = name - end - - def self.get(url, params) - - - end - - - def send_message(message) - - end + end def details - + #override end def self.list_all - + #override end + def send_message + #override + end end diff --git a/lib/slack.rb b/lib/slack.rb index a2ceb673..e8bd81cc 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -43,17 +43,18 @@ def main puts "Channel: #{recipient}" input = ask_again elsif input == 5 - puts workspace.get_details(recipient) + puts workspace.get_details input = ask_again elsif input == 6 - #TODO + puts "Input the message you would like to send:" + workspace.send_message(gets.chomp) + input = ask_again else puts "idk" input = ask_again end end puts "Thank you for using the Ada Slack CLI" - end main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb index 793dae95..b16ffd95 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -50,5 +50,14 @@ def self.find(id) return "USER NOT FOUND" end + def send_message(message) + query = { + token: ENV["SLACK_TOKEN"], + text: message, + channel: @slack_id + } + response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) + + end end diff --git a/lib/workspace.rb b/lib/workspace.rb index b804e0a2..77146091 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -26,24 +26,29 @@ def list_channels end def select_user(id) - return UserRecipient.find(id) - + @selected = UserRecipient.find(id) + return @selected end def select_channel(id) - return ChannelRecipient.find(id) + @selected = ChannelRecipient.find(id) + return @selected end - def get_details(recipient) - if recipient.instance_of?(UserRecipient) || recipient.instance_of?(ChannelRecipient) - return recipient.details + def get_details + if @selected.instance_of?(UserRecipient) || @selected.instance_of?(ChannelRecipient) + return @selected.details else return "You have not chosen a user or channel, can't grab details for ya" end end - def send_message - + def send_message(message) + if selected.instance_of? UserRecipient + @selected.send_message(message) + elsif selected.instance_of? ChannelRecipient + @selected.send_message(message) + end end end From 21ebeb505515aa46e8febe6a3d1d6bcb8af69f8a Mon Sep 17 00:00:00 2001 From: quinqu Date: Wed, 11 Mar 2020 18:10:50 -0700 Subject: [PATCH 05/14] used more inheritence --- lib/channel.rb | 16 ++++++++-------- lib/recipient.rb | 9 +++++++-- lib/user.rb | 18 +++++++++--------- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 99ee8dcb..ca77c7b1 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -46,13 +46,13 @@ def self.find(id) return "CHANNEL NOT FOUND" end - def send_message(message) - query = { - token: ENV["SLACK_TOKEN"], - text: message, - channel: @slack_id - } - response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) - end + # def send_message(message) + # query = { + # token: ENV["SLACK_TOKEN"], + # text: message, + # channel: @slack_id + # } + # response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) + # end end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb index 6c7c2bb9..ed4f40b8 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -23,8 +23,13 @@ def self.list_all #override end - def send_message - #override + def send_message(message) + query = { + token: ENV["SLACK_TOKEN"], + text: message, + channel: @slack_id + } + response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) end end diff --git a/lib/user.rb b/lib/user.rb index b16ffd95..38ed945f 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -50,14 +50,14 @@ def self.find(id) return "USER NOT FOUND" end - def send_message(message) - query = { - token: ENV["SLACK_TOKEN"], - text: message, - channel: @slack_id - } - response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) - - end + # def send_message(message) + # query = { + # token: ENV["SLACK_TOKEN"], + # text: message, + # channel: @slack_id + # } + # response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) + + # end end From eeab1db7d4d20a7f1761e6239f432d7f624f5729 Mon Sep 17 00:00:00 2001 From: quinqu Date: Wed, 11 Mar 2020 18:13:10 -0700 Subject: [PATCH 06/14] deleted useless code --- lib/channel.rb | 9 --------- lib/user.rb | 9 --------- 2 files changed, 18 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index ca77c7b1..a8e2a3e8 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -46,13 +46,4 @@ def self.find(id) return "CHANNEL NOT FOUND" end - # def send_message(message) - # query = { - # token: ENV["SLACK_TOKEN"], - # text: message, - # channel: @slack_id - # } - # response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) - # end - end \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb index 38ed945f..793dae95 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -50,14 +50,5 @@ def self.find(id) return "USER NOT FOUND" end - # def send_message(message) - # query = { - # token: ENV["SLACK_TOKEN"], - # text: message, - # channel: @slack_id - # } - # response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) - - # end end From 69b4201793f04b237a6b5c137dbb387340dae134 Mon Sep 17 00:00:00 2001 From: quinqu Date: Thu, 12 Mar 2020 14:56:57 -0700 Subject: [PATCH 07/14] added some tests --- lib/recipient.rb | 16 ++-- test/cassettes/user_data.yml | 161 +++++++++++++++++++++++++++++++++++ test/channel_test.rb | 25 +++--- test/user_test.rb | 34 ++++++++ test/workspace_test.rb | 2 + 5 files changed, 218 insertions(+), 20 deletions(-) create mode 100644 test/cassettes/user_data.yml diff --git a/lib/recipient.rb b/lib/recipient.rb index ed4f40b8..a8b77bd6 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -23,13 +23,13 @@ def self.list_all #override end - def send_message(message) - query = { - token: ENV["SLACK_TOKEN"], - text: message, - channel: @slack_id - } - response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) - end + # def send_message(message) + # query = { + # token: ENV["SLACK_TOKEN"], + # text: message, + # channel: @slack_id + # } + # response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) + # end end diff --git a/test/cassettes/user_data.yml b/test/cassettes/user_data.yml new file mode 100644 index 00000000..cbceca24 --- /dev/null +++ b/test/cassettes/user_data.yml @@ -0,0 +1,161 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + 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: + - '969' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 21:28:43 GMT + Server: + - Apache + X-Slack-Req-Id: + - b0540eede1b7efc97247fff172eb8b6b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-0hw9 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 1b74ccf4cb51eacf97a0e6d60ae46a3f.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - MdxG5ZMXESau2jB0hohQdyDuODBoOP8QztMsztOC6fK5K46Jy0h-Uw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TUUG9GLUB","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":"TUUG9GLUB"},"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":"UUVTJ2NPK","team_id":"TUUG9GLUB","name":"quinruby0","deleted":false,"color":"9f69e7","real_name":"quin","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"quin","real_name_normalized":"quin","display_name":"qq","display_name_normalized":"qq","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge32b4d91cd0","first_name":"quin","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"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":1583865709,"has_2fa":false},{"id":"UV5RDS2GL","team_id":"TUUG9GLUB","name":"timequinapi_project","deleted":false,"color":"4bbe2e","real_name":"timequinapi_project","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"timequinapi_project","real_name_normalized":"timequinapi_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g0f0c3111148","api_app_id":"AUUQZERPV","always_active":false,"bot_id":"BV85CLQH5","first_name":"timequinapi_project","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876226}],"cache_ts":1584048523,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 21:28:43 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + 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: + - '710' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 21:33:55 GMT + Server: + - Apache + X-Slack-Req-Id: + - fac5ca7be78b129300ff597d3c26d215 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-2nvs + X-Cache: + - Miss from cloudfront + Via: + - 1.1 deaaf0548506de20925615eb51a7ea7f.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - ew3fWNYK8HsvTgzrqq3Lx8JXM4X092ZRAEFOoHcNOoZoASBLZNtoGQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUUG9HF6X","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UUVTJ2NPK","last_set":1583865667},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1},{"id":"CUVKG668J","name":"creating-another-channel","is_channel":true,"is_group":false,"is_im":false,"created":1583954031,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"creating-another-channel","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CUYATKU49","name":"one-more","is_channel":true,"is_group":false,"is_im":false,"created":1583954049,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"one-more","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"i + dont know why","creator":"UUVTJ2NPK","last_set":1583954050},"previous_names":[],"num_members":1},{"id":"CV60LSW0Y","name":"quin-api-test","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"quin-api-test","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CV86THB7G","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UUVTJ2NPK","last_set":1583865667},"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":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 21:33:55 GMT +recorded_with: VCR 5.1.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index b1e4ed54..b344bb5d 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -18,17 +18,18 @@ end end + it "can find the right channel" do + VCR.use_cassette("channel_data") do + channel = ChannelRecipient.find("CUUG9HF6X") + channel.name.must_equal "general" + end + end - - - # it "all" do - # VCR.use_cassette("location_find") do - # location = "" - # expect { - # response = get_location(location) - # }.must_raise SearchError - # end - # end - #expect(response["Seattle"][:lon]).must_equal "-122.3300624" - #expect(response["Seattle"][:lat]).must_equal "47.6038321" + it "can print out the details" do + VCR.use_cassette("channel_data") do + channel = ChannelRecipient.find("CUUG9HF6X") + string = channel.details + string.must_be_instance_of String + end + end end \ No newline at end of file diff --git a/test/user_test.rb b/test/user_test.rb index e69de29b..8fd74b31 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -0,0 +1,34 @@ +require_relative 'test_helper' +require_relative '../lib/user' + +describe "initialize" do + it "will create a User object" do + user = UserRecipient.new("YYUW", "random", "random stuff is put here", 4, "another string") + user.must_be_instance_of UserRecipient + + end +end + +describe "class methods" do + it "can find data" do + VCR.use_cassette("user_data") do + response = UserRecipient.list_all() + expect(response).wont_be_nil + end + end + + it "can find the right user" do + VCR.use_cassette("user_data") do + user = UserRecipient.find("USLACKBOT") + user.status_text.must_equal "" + end + end + + it "can print out the details of USER" do + VCR.use_cassette("user_data") do + user= UserRecipient.find("USLACKBOT") + string = user.details + string.must_be_instance_of String + end + end +end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb index e69de29b..19abddd2 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -0,0 +1,2 @@ +require_relative 'test_helper' +require_relative '../lib/workspace' \ No newline at end of file From 1481aece38d7c9c947ced3b765936b179aab40ef Mon Sep 17 00:00:00 2001 From: quinqu Date: Thu, 12 Mar 2020 15:34:22 -0700 Subject: [PATCH 08/14] added more test --- lib/recipient.rb | 17 ++-- test/cassettes/recipient_user.yml | 80 +++++++++++++++ test/cassettes/slack_posts.yml | 156 ++++++++++++++++++++++++++++++ test/recipient_test.rb | 12 +++ test/user_test.rb | 10 ++ test/workspace_test.rb | 3 +- 6 files changed, 269 insertions(+), 9 deletions(-) create mode 100644 test/cassettes/recipient_user.yml create mode 100644 test/cassettes/slack_posts.yml diff --git a/lib/recipient.rb b/lib/recipient.rb index a8b77bd6..b9b069fb 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -23,13 +23,14 @@ def self.list_all #override end - # def send_message(message) - # query = { - # token: ENV["SLACK_TOKEN"], - # text: message, - # channel: @slack_id - # } - # response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) - # end + def send_message(message) + query = { + token: ENV["SLACK_TOKEN"], + text: message, + channel: @slack_id + } + response = HTTParty.post(BASE_URL + "chat.postMessage", query: query) + return response + end end diff --git a/test/cassettes/recipient_user.yml b/test/cassettes/recipient_user.yml new file mode 100644 index 00000000..e1dcebc0 --- /dev/null +++ b/test/cassettes/recipient_user.yml @@ -0,0 +1,80 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + 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: + - '969' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 22:24:32 GMT + Server: + - Apache + X-Slack-Req-Id: + - 9645de9ae16b4ee73803369deede62a0 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-wl4e + X-Cache: + - Miss from cloudfront + Via: + - 1.1 12a392bc3a7281f8d5d4591bfadc41fc.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - 3HiSv16kZvYwSvWl097BSRa0IIL7f4GxRtHv3EkfbqUI6gaOGAW8WQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TUUG9GLUB","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":"TUUG9GLUB"},"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":"UUVTJ2NPK","team_id":"TUUG9GLUB","name":"quinruby0","deleted":false,"color":"9f69e7","real_name":"quin","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"quin","real_name_normalized":"quin","display_name":"qq","display_name_normalized":"qq","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge32b4d91cd0","first_name":"quin","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"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":1583865709,"has_2fa":false},{"id":"UV5RDS2GL","team_id":"TUUG9GLUB","name":"timequinapi_project","deleted":false,"color":"4bbe2e","real_name":"timequinapi_project","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"timequinapi_project","real_name_normalized":"timequinapi_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g0f0c3111148","api_app_id":"AUUQZERPV","always_active":false,"bot_id":"BV85CLQH5","first_name":"timequinapi_project","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876226}],"cache_ts":1584051872,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 22:24:32 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/slack_posts.yml b/test/cassettes/slack_posts.yml new file mode 100644 index 00000000..b1377b66 --- /dev/null +++ b/test/cassettes/slack_posts.yml @@ -0,0 +1,156 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + 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: + - '968' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 22:28:56 GMT + Server: + - Apache + X-Slack-Req-Id: + - 1564ee55c4d25d28770abae92ef10aec + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-vefa + X-Cache: + - Miss from cloudfront + Via: + - 1.1 476c2ba6d9f6cd69dbcedbd65688cbc0.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - 2Eu7RPSVUmazJMmaoVWG8vVVdzpEuMVN_yJwbMFsG-1nzEjSGEwE9A== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TUUG9GLUB","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":"TUUG9GLUB"},"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":"UUVTJ2NPK","team_id":"TUUG9GLUB","name":"quinruby0","deleted":false,"color":"9f69e7","real_name":"quin","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"quin","real_name_normalized":"quin","display_name":"qq","display_name_normalized":"qq","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge32b4d91cd0","first_name":"quin","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"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":1583865709,"has_2fa":false},{"id":"UV5RDS2GL","team_id":"TUUG9GLUB","name":"timequinapi_project","deleted":false,"color":"4bbe2e","real_name":"timequinapi_project","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"timequinapi_project","real_name_normalized":"timequinapi_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g0f0c3111148","api_app_id":"AUUQZERPV","always_active":false,"bot_id":"BV85CLQH5","first_name":"timequinapi_project","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876226}],"cache_ts":1584052136,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 22:28:56 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage?channel=UUVTJ2NPK&text=Hey%20I%20can%20post%20messages!&token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + body: + encoding: UTF-8 + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '340' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 22:29:17 GMT + Server: + - Apache + X-Slack-Req-Id: + - f8f0d505b7f422c43330d7628fdd4d7b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - chat:write + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-qel1 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 2bedbeaa49b4a77447d30097858cb81a.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - _wQSPk16YDn9P8Q_sRVY_3A1lnNPbM3rKmIz-hLlpC_KPE0Kw5cXig== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channel":"DV5GN34AY","ts":"1584052157.000300","message":{"bot_id":"BVAG7LYMU","type":"message","text":"Hey + I can post messages!","user":"UUVTJ2NPK","ts":"1584052157.000300","team":"TUUG9GLUB","bot_profile":{"id":"BVAG7LYMU","deleted":false,"name":"Time-Quin-API + Project","updated":1583951302,"app_id":"AUUQZERPV","icons":{"image_36":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/bot_36.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/bot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/service_72.png"},"team_id":"TUUG9GLUB"}}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 22:29:17 GMT +recorded_with: VCR 5.1.0 diff --git a/test/recipient_test.rb b/test/recipient_test.rb index e69de29b..e54a5ffd 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -0,0 +1,12 @@ +require_relative 'test_helper' +require_relative '../lib/recipient' + +describe "initialize" do + it "will create a recipient object" do + + channel = Recipient.new("YYUW", "random") + channel.must_be_instance_of Recipient + + end +end + diff --git a/test/user_test.rb b/test/user_test.rb index 8fd74b31..0a39bf0b 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -31,4 +31,14 @@ string.must_be_instance_of String end end +end + +describe "send message" do + it "can send a valid message" do + VCR.use_cassette("slack_posts") do + recipient = user = UserRecipient.find("UUVTJ2NPK") + response = recipient.send_message("Hey I can post messages!") + expect(response["ok"]).must_equal true + end + end end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 19abddd2..cb8ee52e 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1,2 +1,3 @@ require_relative 'test_helper' -require_relative '../lib/workspace' \ No newline at end of file +require_relative '../lib/workspace' + From 802147bdf25d93d35735e8631a1235a83d1cecbe Mon Sep 17 00:00:00 2001 From: quinqu Date: Thu, 12 Mar 2020 15:49:31 -0700 Subject: [PATCH 09/14] more tests... --- lib/workspace.rb | 4 +--- test/workspace_test.rb | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/workspace.rb b/lib/workspace.rb index 77146091..782a704e 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -1,11 +1,9 @@ -require 'httparty' -require 'dotenv' require_relative 'user' require_relative 'channel' require_relative 'recipient' -Dotenv.load + class Workspace diff --git a/test/workspace_test.rb b/test/workspace_test.rb index cb8ee52e..8089a96e 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1,3 +1,22 @@ require_relative 'test_helper' require_relative '../lib/workspace' +describe "initialize" do + + it "will create a workspace object" do + workspace = Workspace.new + workspace.must_be_instance_of Workspace + end + + # it "can return all users" do + # VCR.use_cassette("user_data") do + # workspace = Workspace.new + # users = workspace.list_users + # users.wont_be_nil + # end + # end + + + + +end From 9851c3d3318e67badd2b618952e43ae61fe4797b Mon Sep 17 00:00:00 2001 From: quinqu Date: Fri, 13 Mar 2020 16:28:58 -0700 Subject: [PATCH 10/14] implemented some tests in workspace_test.rb --- test/workspace_test.rb | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 8089a96e..fad6ebb2 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1,20 +1,19 @@ require_relative 'test_helper' require_relative '../lib/workspace' +require_relative '../lib/channel' +require_relative '../lib/user' + describe "initialize" do it "will create a workspace object" do workspace = Workspace.new workspace.must_be_instance_of Workspace - end - # it "can return all users" do - # VCR.use_cassette("user_data") do - # workspace = Workspace.new - # users = workspace.list_users - # users.wont_be_nil - # end - # end + + + + end From 6e6c3aa54d6542081270ba04951ec467dab74169 Mon Sep 17 00:00:00 2001 From: quinqu Date: Sat, 14 Mar 2020 12:16:05 -0700 Subject: [PATCH 11/14] added more tests --- test/cassettes/channel_data.yml | 235 +++++++++++++++++++++++++ test/cassettes/slack_posts_channel.yml | 160 +++++++++++++++++ test/cassettes/user_data.yml | 234 ++++++++++++++++++++++++ test/channel_test.rb | 11 +- test/recipient_test.rb | 1 - test/slack_test.rb | 0 test/workspace_test.rb | 74 +++++++- 7 files changed, 710 insertions(+), 5 deletions(-) create mode 100644 test/cassettes/slack_posts_channel.yml delete mode 100644 test/slack_test.rb diff --git a/test/cassettes/channel_data.yml b/test/cassettes/channel_data.yml index 264677b7..47c3e3ed 100644 --- a/test/cassettes/channel_data.yml +++ b/test/cassettes/channel_data.yml @@ -81,4 +81,239 @@ http_interactions: you''d prefer to keep out of more focused work-related channels.","creator":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' http_version: null recorded_at: Wed, 11 Mar 2020 20:57:25 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + 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: + - '969' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 17:16:19 GMT + Server: + - Apache + X-Slack-Req-Id: + - d9d0d35394a73fdf7b3231debd40e25f + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-h1l4 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 ea5ba8d82566173a46fd51b794d38917.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD51-C2 + X-Amz-Cf-Id: + - 5Vpn0WACj55WluEtP5OyTQo4DCSI0eHl52a5nOmfyrz8eQAGMn0o4g== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TUUG9GLUB","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":"TUUG9GLUB"},"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":"UUVTJ2NPK","team_id":"TUUG9GLUB","name":"quinruby0","deleted":false,"color":"9f69e7","real_name":"quin","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"quin","real_name_normalized":"quin","display_name":"qq","display_name_normalized":"qq","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge32b4d91cd0","first_name":"quin","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"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":1583865709,"has_2fa":false},{"id":"UV5RDS2GL","team_id":"TUUG9GLUB","name":"timequinapi_project","deleted":false,"color":"4bbe2e","real_name":"timequinapi_project","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"timequinapi_project","real_name_normalized":"timequinapi_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g0f0c3111148","api_app_id":"AUUQZERPV","always_active":false,"bot_id":"BV85CLQH5","first_name":"timequinapi_project","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876226}],"cache_ts":1584206180,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Sat, 14 Mar 2020 17:16:20 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + 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: + - '710' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 17:16:20 GMT + Server: + - Apache + X-Slack-Req-Id: + - cdf6cd97a2689bae89a38681362a384f + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-eidd + X-Cache: + - Miss from cloudfront + Via: + - 1.1 6aec8f1aa09edf6116ef0f638212a7c6.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD51-C2 + X-Amz-Cf-Id: + - Jt8RdTyt3mccW0g803MP42Zm4hQLGd9Whca4BXa_W3uo3F2gXplWqA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUUG9HF6X","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UUVTJ2NPK","last_set":1583865667},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1},{"id":"CUVKG668J","name":"creating-another-channel","is_channel":true,"is_group":false,"is_im":false,"created":1583954031,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"creating-another-channel","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CUYATKU49","name":"one-more","is_channel":true,"is_group":false,"is_im":false,"created":1583954049,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"one-more","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"i + dont know why","creator":"UUVTJ2NPK","last_set":1583954050},"previous_names":[],"num_members":1},{"id":"CV60LSW0Y","name":"quin-api-test","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"quin-api-test","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CV86THB7G","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UUVTJ2NPK","last_set":1583865667},"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":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Sat, 14 Mar 2020 17:16:20 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + 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: + - '969' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 18:52:30 GMT + Server: + - Apache + X-Slack-Req-Id: + - 1c59c9c184373c41760c4c15a98d3c69 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-4usq + X-Cache: + - Miss from cloudfront + Via: + - 1.1 58e86c1faaee1b15c90e95d794e240dd.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD51-C3 + X-Amz-Cf-Id: + - eaoS0iOgGVOhWjJqX6MW7eOE2RhaWGWVumPPAwnOnArOHiszxbe2ww== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TUUG9GLUB","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":"TUUG9GLUB"},"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":"UUVTJ2NPK","team_id":"TUUG9GLUB","name":"quinruby0","deleted":false,"color":"9f69e7","real_name":"quin","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"quin","real_name_normalized":"quin","display_name":"qq","display_name_normalized":"qq","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge32b4d91cd0","first_name":"quin","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"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":1583865709,"has_2fa":false},{"id":"UV5RDS2GL","team_id":"TUUG9GLUB","name":"timequinapi_project","deleted":false,"color":"4bbe2e","real_name":"timequinapi_project","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"timequinapi_project","real_name_normalized":"timequinapi_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g0f0c3111148","api_app_id":"AUUQZERPV","always_active":false,"bot_id":"BV85CLQH5","first_name":"timequinapi_project","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876226}],"cache_ts":1584211950,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Sat, 14 Mar 2020 18:52:30 GMT recorded_with: VCR 5.1.0 diff --git a/test/cassettes/slack_posts_channel.yml b/test/cassettes/slack_posts_channel.yml new file mode 100644 index 00000000..7696a061 --- /dev/null +++ b/test/cassettes/slack_posts_channel.yml @@ -0,0 +1,160 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/conversations.list?token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + 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: + - '710' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 17:33:56 GMT + Server: + - Apache + X-Slack-Req-Id: + - b456fbb23291a4e7ec42dd1d0889b35d + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-lxmb + X-Cache: + - Miss from cloudfront + Via: + - 1.1 9c8cea76bc4ad668228c67b8ca429f82.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD50-C1 + X-Amz-Cf-Id: + - SkGnu1TvWIhNklIBiXKyU_HiN-eaq-hUPGnrXzF8Ee5hNFOuHRrXHw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUUG9HF6X","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UUVTJ2NPK","last_set":1583865667},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1},{"id":"CUVKG668J","name":"creating-another-channel","is_channel":true,"is_group":false,"is_im":false,"created":1583954031,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"creating-another-channel","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CUYATKU49","name":"one-more","is_channel":true,"is_group":false,"is_im":false,"created":1583954049,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"one-more","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"i + dont know why","creator":"UUVTJ2NPK","last_set":1583954050},"previous_names":[],"num_members":1},{"id":"CV60LSW0Y","name":"quin-api-test","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"quin-api-test","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CV86THB7G","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UUVTJ2NPK","last_set":1583865667},"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":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Sat, 14 Mar 2020 17:33:56 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage?channel=CUUG9HF6X&text=Hey%20I%20can%20post%20messages%20to%20some%20channel!&token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + body: + encoding: UTF-8 + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '348' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 17:33:56 GMT + Server: + - Apache + X-Slack-Req-Id: + - beca380d725bf885143486f2fca44625 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - chat:write + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - r + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-5fln + X-Cache: + - Miss from cloudfront + Via: + - 1.1 d0c5747a41ab1b19c48bdc3c7feed516.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD50-C1 + X-Amz-Cf-Id: + - e1wqZohzJVByVfnA9cx_5hXB7cBLyKXguRZJgd7qV5Q-g22Vo1dbJg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channel":"CUUG9HF6X","ts":"1584207236.000100","message":{"bot_id":"BVAG7LYMU","type":"message","text":"Hey + I can post messages to some channel!","user":"UUVTJ2NPK","ts":"1584207236.000100","team":"TUUG9GLUB","bot_profile":{"id":"BVAG7LYMU","deleted":false,"name":"Time-Quin-API + Project","updated":1583951302,"app_id":"AUUQZERPV","icons":{"image_36":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/bot_36.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/bot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/service_72.png"},"team_id":"TUUG9GLUB"}}}' + http_version: null + recorded_at: Sat, 14 Mar 2020 17:33:56 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/user_data.yml b/test/cassettes/user_data.yml index cbceca24..5e70f6b8 100644 --- a/test/cassettes/user_data.yml +++ b/test/cassettes/user_data.yml @@ -158,4 +158,238 @@ http_interactions: you''d prefer to keep out of more focused work-related channels.","creator":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' http_version: null recorded_at: Thu, 12 Mar 2020 21:33:55 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + 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: + - '710' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 17:16:20 GMT + Server: + - Apache + X-Slack-Req-Id: + - 6dd78ad897844f5e8ed6810082d0b243 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-32oc + X-Cache: + - Miss from cloudfront + Via: + - 1.1 7da0231bd1c514f0dd4d36905f23fd73.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD51-C2 + X-Amz-Cf-Id: + - lBLzeNGW17ytY4dbMulkYW-MA37Xn4YuSRvICnjGzFFDvprom9AvFQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUUG9HF6X","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UUVTJ2NPK","last_set":1583865667},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1},{"id":"CUVKG668J","name":"creating-another-channel","is_channel":true,"is_group":false,"is_im":false,"created":1583954031,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"creating-another-channel","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CUYATKU49","name":"one-more","is_channel":true,"is_group":false,"is_im":false,"created":1583954049,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"one-more","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"i + dont know why","creator":"UUVTJ2NPK","last_set":1583954050},"previous_names":[],"num_members":1},{"id":"CV60LSW0Y","name":"quin-api-test","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"quin-api-test","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":1},{"id":"CV86THB7G","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583865667,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UUVTJ2NPK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TUUG9GLUB"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UUVTJ2NPK","last_set":1583865667},"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":"UUVTJ2NPK","last_set":1583865667},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Sat, 14 Mar 2020 17:16:20 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + 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: + - '969' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 17:16:56 GMT + Server: + - Apache + X-Slack-Req-Id: + - 35c769e9ae5c1feb90ce99de69d17140 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - r + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-9vsr + X-Cache: + - Miss from cloudfront + Via: + - 1.1 e01091b7c39d5f291f684f22eebc396f.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD51-C2 + X-Amz-Cf-Id: + - ksOIPZqsXLYoaJNk7XUwhWGHiht28LVLHlbR0-7LmAz2IzAgnxQB-g== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TUUG9GLUB","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":"TUUG9GLUB"},"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":"UUVTJ2NPK","team_id":"TUUG9GLUB","name":"quinruby0","deleted":false,"color":"9f69e7","real_name":"quin","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"quin","real_name_normalized":"quin","display_name":"qq","display_name_normalized":"qq","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge32b4d91cd0","first_name":"quin","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e32b4d91cd01f34e37eb053a21f7bbd5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"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":1583865709,"has_2fa":false},{"id":"UV5RDS2GL","team_id":"TUUG9GLUB","name":"timequinapi_project","deleted":false,"color":"4bbe2e","real_name":"timequinapi_project","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"timequinapi_project","real_name_normalized":"timequinapi_project","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g0f0c3111148","api_app_id":"AUUQZERPV","always_active":false,"bot_id":"BV85CLQH5","first_name":"timequinapi_project","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/0f0c311114800083ca0dcd48f278c54f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TUUG9GLUB"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876226}],"cache_ts":1584206216,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Sat, 14 Mar 2020 17:16:56 GMT +- request: + method: post + uri: https://slack.com/api/chat.postMessage?channel=UUVTJ2NPK&text=Hey%20I%20can%20post%20messages%20from%20test!&token=xoxb-991668681700-992246719632-sZsRkPHzHzV1rdUQMVXYKdlc + body: + encoding: UTF-8 + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '347' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 18:31:08 GMT + Server: + - Apache + X-Slack-Req-Id: + - 53dc915c11ae0fb907ad47bf919d479c + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - chat:write + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-rtkx + X-Cache: + - Miss from cloudfront + Via: + - 1.1 e9a9022a4b078c3e041bab2045f5beef.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD51-C1 + X-Amz-Cf-Id: + - 19kUBfPgRIuDxyOPxOmdmPPcc7mUgry19FgarC6KZ3W0mIjKRInwnQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channel":"DV5GN34AY","ts":"1584210668.000100","message":{"bot_id":"BVAG7LYMU","type":"message","text":"Hey + I can post messages from test!","user":"UUVTJ2NPK","ts":"1584210668.000100","team":"TUUG9GLUB","bot_profile":{"id":"BVAG7LYMU","deleted":false,"name":"Time-Quin-API + Project","updated":1583951302,"app_id":"AUUQZERPV","icons":{"image_36":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/bot_36.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/bot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/plugins\/app\/service_72.png"},"team_id":"TUUG9GLUB"}}}' + http_version: null + recorded_at: Sat, 14 Mar 2020 18:31:08 GMT recorded_with: VCR 5.1.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index b344bb5d..f735592e 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -32,4 +32,13 @@ string.must_be_instance_of String end end -end \ No newline at end of file + + it "can send a valid post to channel" do + VCR.use_cassette("slack_posts_channel") do + recipient = ChannelRecipient.find("CUUG9HF6X") + response = recipient.send_message("Hey I can post messages to some channel!") + expect(response["ok"]).must_equal true + end + end +end + diff --git a/test/recipient_test.rb b/test/recipient_test.rb index e54a5ffd..38135a13 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -3,7 +3,6 @@ describe "initialize" do it "will create a recipient object" do - channel = Recipient.new("YYUW", "random") channel.must_be_instance_of Recipient diff --git a/test/slack_test.rb b/test/slack_test.rb deleted file mode 100644 index e69de29b..00000000 diff --git a/test/workspace_test.rb b/test/workspace_test.rb index fad6ebb2..0949541c 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -7,15 +7,83 @@ describe "initialize" do it "will create a workspace object" do - workspace = Workspace.new - workspace.must_be_instance_of Workspace - + VCR.use_cassette("channel_data") do + workspace = Workspace.new + workspace.must_be_instance_of Workspace + end + VCR.use_cassette("user_data") do + workspace = Workspace.new + workspace.must_be_instance_of Workspace + end + end +end + + +describe "class methods" do + it "will return users" do + VCR.use_cassette("user_data") do + workspace = Workspace.new + workspace.list_users.must_be_instance_of Array + end end + it "will return channels" do + + VCR.use_cassette("channel_data") do + workspace = Workspace.new + workspace.list_channels.must_be_instance_of Array + end + end + + it "will select a user" do + + VCR.use_cassette("user_data") do + workspace = Workspace.new + slack_bot_id = workspace.select_user("USLACKBOT") + slack_bot_id.must_be_instance_of UserRecipient + end + + end + it "will select a channel" do + VCR.use_cassette("channel_data") do + workspace = Workspace.new + slack_channel = workspace.select_channel("CUVKG668J") + slack_channel.must_be_instance_of ChannelRecipient + end + end + + it "will get the details of the object" do + VCR.use_cassette("channel_data") do + workspace = Workspace.new + workspace.select_channel("CUVKG668J") + details = workspace.get_details + details.must_be_instance_of String + end + + end + + it "return a string that tells user id is invalid" do + VCR.use_cassette("user_data") do + workspace = Workspace.new + workspace.select_channel("YEET") + details = workspace.get_details + details.must_equal "You have not chosen a user or channel, can't grab details for ya" + + end + + end + it "can send a valid message" do + VCR.use_cassette("user_data") do + workspace = Workspace.new + quin = workspace.select_user("UUVTJ2NPK") + response = quin.send_message("Hey I can post messages from test!") + expect(response["ok"]).must_equal true + end + end end From 92c4156462f4dc1f4dba580a65e5fc52062c7de1 Mon Sep 17 00:00:00 2001 From: quinqu Date: Sun, 29 Mar 2020 12:21:52 -0700 Subject: [PATCH 12/14] implemeneted table print --- lib/slack.rb | 12 +++++++++--- lib/workspace.rb | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index e8bd81cc..94d17bf0 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -2,6 +2,7 @@ require_relative 'workspace' require 'dotenv' require 'httparty' +require 'table_print' def ask_again @@ -27,10 +28,11 @@ def main while input != -1 if input == 1 - puts workspace.list_users.to_s + tp workspace.list_users, :slack_id, :name, :real_name, :status_text, :status_emoji + input = ask_again elsif input == 2 - puts workspace.list_channels.to_s + tp workspace.list_channels, :slack_id, :name, :topic, :member_count input = ask_again elsif input == 3 puts "What is the user's ID?" @@ -57,4 +59,8 @@ def main puts "Thank you for using the Ada Slack CLI" end -main if __FILE__ == $PROGRAM_NAME \ No newline at end of file +main if __FILE__ == $PROGRAM_NAME + + +tp workspace.list_users, :slack_id, :name, :real_name, :status_text, :status_emoji +#{user: lambda{ |u| my_proc.call }}, :id, :user_name, :real_name => {:display_method => :name} \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index 782a704e..fe0aad9d 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -1,6 +1,7 @@ require_relative 'user' require_relative 'channel' require_relative 'recipient' +require 'table_print' From d78efd8b4610282d4693af757389a6ad38a3bb13 Mon Sep 17 00:00:00 2001 From: quinqu Date: Sun, 29 Mar 2020 12:23:20 -0700 Subject: [PATCH 13/14] changed input validation wording --- lib/slack.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/slack.rb b/lib/slack.rb index 94d17bf0..66eb7cf6 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -52,7 +52,7 @@ def main workspace.send_message(gets.chomp) input = ask_again else - puts "idk" + puts "You did not enter a valid number" input = ask_again end end From 8fb6efe812438853ff05162069204d040aa067b2 Mon Sep 17 00:00:00 2001 From: quinqu Date: Sun, 29 Mar 2020 12:33:31 -0700 Subject: [PATCH 14/14] fixing error messages --- lib/channel.rb | 11 +++++------ lib/slack.rb | 2 -- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index a8e2a3e8..35862f4d 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -38,12 +38,11 @@ def self.list_all end def self.find(id) - self.list_all.each do |channel| - if id == channel.slack_id - return channel - end - end + self.list_all.each do |channel| + if id == channel.slack_id + return channel + end + end return "CHANNEL NOT FOUND" end - end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index 66eb7cf6..5769240b 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -62,5 +62,3 @@ def main main if __FILE__ == $PROGRAM_NAME -tp workspace.list_users, :slack_id, :name, :real_name, :status_text, :status_emoji -#{user: lambda{ |u| my_proc.call }}, :id, :user_name, :real_name => {:display_method => :name} \ No newline at end of file