From 03a849aea61139f537f71e6885ac1fca8165cef6 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Mon, 9 Sep 2019 16:28:08 -0700 Subject: [PATCH 01/19] Added a .gitignore and .env to that file. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8d6a243f..f09e0f60 100644 --- a/.gitignore +++ b/.gitignore @@ -10,8 +10,9 @@ /test/version_tmp/ /tmp/ + # Used by dotenv library to load environment variables. -# .env + .env ## Specific to RubyMotion: .dat* From cc0fefd087318fc25cbad36a7b1fc581cf0296b1 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Tue, 10 Sep 2019 14:28:41 -0700 Subject: [PATCH 02/19] Added files for Recipient class and Recipient Test. Also verified our Slack Token works. --- lib/recipient.rb | 0 lib/slack.rb | 34 +++++++++++++++++++++++++++++++--- test/recipient_test.rb | 0 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 lib/recipient.rb create mode 100644 test/recipient_test.rb diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..e69de29b diff --git a/lib/slack.rb b/lib/slack.rb index 960cf2f7..22fbef5c 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,11 +1,39 @@ #!/usr/bin/env ruby +require 'dotenv' +require 'httparty' +require 'awesome_print' +Dotenv.load def main puts "Welcome to the Ada Slack CLI!" - + + url = 'https://slack.com/api/channels.list' + query_params = # TODO project + query_params = { + token: ENV['SLACK_TOKEN'] +} +array_of_channels = [] +response = HTTParty.get(url, query: query_params) +response["channels"].each do |response| + hash_of_ids = {} + id = response["id"] + members = response["members"].length + topic = response["topic"]["value"] + name = response["name"] + hash_of_ids["id"] = id + hash_of_ids["members"] = members + hash_of_ids["topic"] = topic + hash_of_ids["name"] = name + array_of_channels << hash_of_ids +end - puts "Thank you for using the Ada Slack CLI" +ap array_of_channels +# 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 + + +# {"id"=>"CN5S0B30U", "name"=>"random", "is_channel"=>true, "created"=>1568073948, "is_archived"=>false, "is_general"=>false, "unlinked"=>0, "creator"=>"UMTGXDXD0", "name_normalized"=>"random", "is_shared"=>false, "is_org_shared"=>false, "is_member"=>true, "is_private"=>false, "is_mpim"=>false, "members"=>["UMTGXDXD0", "UMUS3K402", "UMW5P9DHR", "UN8GKRXK8"], +# "topic"=>{"value"=>"Non-work banter and water cooler conversation", "creator"=>"UMTGXDXD0", "last_set"=>1568073948}, "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"=>"UMTGXDXD0", "last_set"=>1568073948}, "previous_names"=>[], "num_members"=>4} \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..e69de29b From 4fc6986bbd3e5493314d5aeb8d62fe7abb1e4948 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Tue, 10 Sep 2019 14:59:20 -0700 Subject: [PATCH 03/19] Added tests for initializing SlackCLI::Recipient --- lib/recipient.rb | 49 ++++++++++++++++++++++++++++++++++++++++++ lib/slack.rb | 28 ++---------------------- test/recipient_test.rb | 22 +++++++++++++++++++ test/test_helper.rb | 1 + 4 files changed, 74 insertions(+), 26 deletions(-) diff --git a/lib/recipient.rb b/lib/recipient.rb index e69de29b..82cda61d 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -0,0 +1,49 @@ +module SlackCLI + + class Recipient + + attr_reader :slack_id, :name + + def initialize(slack_id:, name:) + slack_id = is_valid?(slack_id) + name = is_valid?(name) + + @slack_id = slack_id + @name = name + end + + def is_valid?(value) + if value.nil? + raise ArgumentError + end + return value + end + # url = 'https://slack.com/api/channels.list' + # query_params = + # # TODO project + # query_params = { + # token: ENV['SLACK_TOKEN'] + # } + # array_of_channels = [] + # response = HTTParty.get(url, query: query_params) + # response["channels"].each do |response| + # hash_of_ids = {} + # id = response["id"] + # members = response["members"].length + # topic = response["topic"]["value"] + # name = response["name"] + # hash_of_ids["id"] = id + # hash_of_ids["members"] = members + # hash_of_ids["topic"] = topic + # hash_of_ids["name"] = name + # array_of_channels << hash_of_ids + # end + + # ap array_of_channels + + + # {"id"=>"CN5S0B30U", "name"=>"random", "is_channel"=>true, "created"=>1568073948, "is_archived"=>false, "is_general"=>false, "unlinked"=>0, "creator"=>"UMTGXDXD0", "name_normalized"=>"random", "is_shared"=>false, "is_org_shared"=>false, "is_member"=>true, "is_private"=>false, "is_mpim"=>false, "members"=>["UMTGXDXD0", "UMUS3K402", "UMW5P9DHR", "UN8GKRXK8"], + # "topic"=>{"value"=>"Non-work banter and water cooler conversation", "creator"=>"UMTGXDXD0", "last_set"=>1568073948}, "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"=>"UMTGXDXD0", "last_set"=>1568073948}, "previous_names"=>[], "num_members"=>4} + end + +end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index 22fbef5c..bb0048f5 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -7,33 +7,9 @@ def main puts "Welcome to the Ada Slack CLI!" - url = 'https://slack.com/api/channels.list' - query_params = - # TODO project - query_params = { - token: ENV['SLACK_TOKEN'] -} -array_of_channels = [] -response = HTTParty.get(url, query: query_params) -response["channels"].each do |response| - hash_of_ids = {} - id = response["id"] - members = response["members"].length - topic = response["topic"]["value"] - name = response["name"] - hash_of_ids["id"] = id - hash_of_ids["members"] = members - hash_of_ids["topic"] = topic - hash_of_ids["name"] = name - array_of_channels << hash_of_ids -end - -ap array_of_channels -# puts "Thank you for using the Ada Slack CLI" + +puts "Thank you for using the Ada Slack CLI" end main if __FILE__ == $PROGRAM_NAME - -# {"id"=>"CN5S0B30U", "name"=>"random", "is_channel"=>true, "created"=>1568073948, "is_archived"=>false, "is_general"=>false, "unlinked"=>0, "creator"=>"UMTGXDXD0", "name_normalized"=>"random", "is_shared"=>false, "is_org_shared"=>false, "is_member"=>true, "is_private"=>false, "is_mpim"=>false, "members"=>["UMTGXDXD0", "UMUS3K402", "UMW5P9DHR", "UN8GKRXK8"], -# "topic"=>{"value"=>"Non-work banter and water cooler conversation", "creator"=>"UMTGXDXD0", "last_set"=>1568073948}, "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"=>"UMTGXDXD0", "last_set"=>1568073948}, "previous_names"=>[], "num_members"=>4} \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb index e69de29b..0398bd95 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -0,0 +1,22 @@ +require_relative '../lib/recipient' +require_relative 'test_helper' + +describe "Recipient" do + + describe "Initialize" do + let(:recipient) {SlackCLI::Recipient.new(slack_id: "string", name: "hi")} + it "should have a slack id and name" do + expect(recipient.slack_id).must_be_instance_of String + expect(recipient.name).must_be_instance_of String + end + + it "should raise error if slack_id: is nil" do + expect{ SlackCLI::Recipient.new(slack_id: nil, name: "hi") }.must_raise ArgumentError + end + + it "should raise error if name: is nil " do + expect{ SlackCLI::Recipient.new(slack_id: "hey", name: nil) }.must_raise ArgumentError + end + end + +end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index 90aeb408..1895972d 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -8,6 +8,7 @@ require 'minitest/reporters' require 'minitest/skip_dsl' require 'vcr' +# require_relative 'recipient_test' Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new From 9565f899453402c11ad2da8627bd1d4ff6a032bc Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Tue, 10 Sep 2019 16:21:28 -0700 Subject: [PATCH 04/19] We have troubleshooted VCR. We have written one test that makes one call to the slack channels api. Test is passing. --- lib/recipient.rb | 64 ++++++++++++++++++++-------------- test/cassettes/recipient.yml | 66 ++++++++++++++++++++++++++++++++++++ test/recipient_test.rb | 34 ++++++++++++++++++- test/test_helper.rb | 17 +++++++++- 4 files changed, 153 insertions(+), 28 deletions(-) create mode 100644 test/cassettes/recipient.yml diff --git a/lib/recipient.rb b/lib/recipient.rb index 82cda61d..caf708c8 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,3 +1,5 @@ +require 'HTTParty' + module SlackCLI class Recipient @@ -18,32 +20,42 @@ def is_valid?(value) end return value end - # url = 'https://slack.com/api/channels.list' - # query_params = - # # TODO project - # query_params = { - # token: ENV['SLACK_TOKEN'] - # } - # array_of_channels = [] - # response = HTTParty.get(url, query: query_params) - # response["channels"].each do |response| - # hash_of_ids = {} - # id = response["id"] - # members = response["members"].length - # topic = response["topic"]["value"] - # name = response["name"] - # hash_of_ids["id"] = id - # hash_of_ids["members"] = members - # hash_of_ids["topic"] = topic - # hash_of_ids["name"] = name - # array_of_channels << hash_of_ids - # end - - # ap array_of_channels + def self.get + url = 'https://slack.com/api/channels.list' + query_params = { + token: ENV['SLACK_TOKEN']} + response = HTTParty.get(url, params: query_params) + unless response.code == 200 + raise SearchError.new("Cannot find channels") + end + return response + end - # {"id"=>"CN5S0B30U", "name"=>"random", "is_channel"=>true, "created"=>1568073948, "is_archived"=>false, "is_general"=>false, "unlinked"=>0, "creator"=>"UMTGXDXD0", "name_normalized"=>"random", "is_shared"=>false, "is_org_shared"=>false, "is_member"=>true, "is_private"=>false, "is_mpim"=>false, "members"=>["UMTGXDXD0", "UMUS3K402", "UMW5P9DHR", "UN8GKRXK8"], - # "topic"=>{"value"=>"Non-work banter and water cooler conversation", "creator"=>"UMTGXDXD0", "last_set"=>1568073948}, "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"=>"UMTGXDXD0", "last_set"=>1568073948}, "previous_names"=>[], "num_members"=>4} end - -end \ No newline at end of file +end + + + +# # goal - list users in a workspace +# # generally - list channels in a workspace +# url = 'https://slack.com/api/channels.list' +# query_params = +# # TODO project +# query_params = { +# token: ENV['SLACK_TOKEN'] +# } +# array_of_channels = [] +# response = HTTParty.get(url, params: query_params) +# response["channels"].each do |response| +# hash_of_ids = {} +# id = response["id"] +# members = response["members"].length +# topic = response["topic"]["value"] +# name = response["name"] +# hash_of_ids["id"] = id +# hash_of_ids["members"] = members +# hash_of_ids["topic"] = topic +# hash_of_ids["name"] = name +# array_of_channels << hash_of_ids +# end diff --git a/test/cassettes/recipient.yml b/test/cassettes/recipient.yml new file mode 100644 index 00000000..24d7b85a --- /dev/null +++ b/test/cassettes/recipient.yml @@ -0,0 +1,66 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/channels.list + 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: + - '53' + Connection: + - keep-alive + Date: + - Tue, 10 Sep 2019 23:16:06 GMT + Server: + - Apache + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + X-Slack-Req-Id: + - 298a3514-788d-4876-8f05-240272571c92 + X-Xss-Protection: + - '0' + X-Content-Type-Options: + - nosniff + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-lwkq + X-Cache: + - Miss from cloudfront + Via: + - 1.1 0a2ce08fa1ec3c33302a7547d3305978.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - PmMDDQiHApK3eKD2htzIWiyv-L5AKp3okrIY2uUPtTWhNiloK_7SbQ== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"not_authed"}' + http_version: + recorded_at: Tue, 10 Sep 2019 23:17:45 GMT +recorded_with: VCR 5.0.0 diff --git a/test/recipient_test.rb b/test/recipient_test.rb index 0398bd95..e10341e8 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -19,4 +19,36 @@ end end -end \ No newline at end of file + describe "get" do + it "should be an instance of HTTParty" do + # response = SlackCLI::Recipient.new(slack_id: "1", name: "Katie") + # p response.get + # p SlackCLI::Recipient.get + VCR.use_cassette("recipient") do + expect(SlackCLI::Recipient.get).must_be_instance_of HTTParty::Response + end + end + end + + + # describe "get" do + # it "can find channels" do + # VCR.use_cassette("list_channels") do + # location = "Seattle" + # response = get_location(location) + + # expect(response["Seattle"]).wont_be_nil + # expect(response["Seattle"][:lon]).must_equal "-122.3300624" + # expect(response["Seattle"][:lat]).must_equal "47.6038321" + # end + # end + + # it "will raise an exception if the search fails" do + # VCR.use_cassette("location_find") do + # location = "" + # expect { + # response = get_location(location) + # }.must_raise SearchError + # end + # end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 1895972d..94b4750f 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -7,12 +7,27 @@ require 'minitest/autorun' require 'minitest/reporters' require 'minitest/skip_dsl' +require 'webmock/minitest' +require 'dotenv' + +Dotenv.load + + require 'vcr' -# require_relative 'recipient_test' +require_relative 'recipient_test' Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new VCR.configure do |config| config.cassette_library_dir = "test/cassettes" config.hook_into :webmock + + config.default_cassette_options = { + :record => :new_episodes, + :match_requests_on => [:method, :uri, :body], +} +config.filter_sensitive_data("") do + ENV["SLACK_TOKEN"] end +end + From b54a8b1cc59b89ea0181447f4344d0f3dd627ff2 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Wed, 11 Sep 2019 14:14:03 -0700 Subject: [PATCH 05/19] We have a method within Module User to access a list of users in a Slack Workspace. --- lib/channel.rb | 14 +++++++++++ lib/recipient.rb | 32 ++++++++++-------------- lib/slack.rb | 19 +++++++++++++- lib/user.rb | 56 ++++++++++++++++++++++++++++++++++++++++++ test/channel_test.rb | 22 +++++++++++++++++ test/recipient_test.rb | 37 +++++++++------------------- test/user_test.rb | 2 ++ 7 files changed, 137 insertions(+), 45 deletions(-) create mode 100644 lib/channel.rb create mode 100644 lib/user.rb create mode 100644 test/channel_test.rb create mode 100644 test/user_test.rb diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..7a303863 --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,14 @@ +require 'HTTParty' +require_relative 'recipient.rb' +module SlackCLI + class Channel < Recipient + + attr_reader :topic, :member_count, :slack_id, :name + def initialize(slack_id:, name:, topic:, member_count:) + super(slack_id, name) + @topic = topic + @member_count = member_count + end + + end +end diff --git a/lib/recipient.rb b/lib/recipient.rb index caf708c8..a9422ed8 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -3,16 +3,7 @@ module SlackCLI class Recipient - - attr_reader :slack_id, :name - - def initialize(slack_id:, name:) - slack_id = is_valid?(slack_id) - name = is_valid?(name) - - @slack_id = slack_id - @name = name - end + def is_valid?(value) if value.nil? @@ -21,15 +12,15 @@ def is_valid?(value) return value end - def self.get - url = 'https://slack.com/api/channels.list' - query_params = { - token: ENV['SLACK_TOKEN']} - response = HTTParty.get(url, params: query_params) - unless response.code == 200 - raise SearchError.new("Cannot find channels") - end - return response + def self.get(url) + # # url = 'https://slack.com/api/channels.list' + # query_params = { + # token: ENV['SLACK_TOKEN']} + # response = HTTParty.get(url, params: query_params) + # unless response.code == 200 + # raise SearchError.new("Cannot find channels") + # end + # return response end end @@ -59,3 +50,6 @@ def self.get # hash_of_ids["name"] = name # array_of_channels << hash_of_ids # end + + + \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index bb0048f5..ccf7d010 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -2,13 +2,30 @@ require 'dotenv' require 'httparty' require 'awesome_print' +require_relative 'recipient' +require_relative 'user' +require_relative 'channel' Dotenv.load def main puts "Welcome to the Ada Slack CLI!" + options = "1. List Users in the Workspace \n2. List Channels in the Workspace\n3. Quit program" + puts options + selection = gets.chomp -puts "Thank you for using the Ada Slack CLI" + until selection == "3" + if selection == "1" + # method to list users in workspace + # SlackCLI.list_users + puts "You selected 1" + elsif selection == "2" + puts "you selected 2" + end + puts options + selection = gets.chomp + end + puts "Thank you for using the Ada Slack CLI" end main if __FILE__ == $PROGRAM_NAME diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..1131c670 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,56 @@ +require 'dotenv' +require 'httparty' +require 'awesome_print' +require_relative 'recipient' +require_relative 'channel' +require 'table_print' + +Dotenv.load + +module SlackCLI + class User < Recipient + + + def self.list_users + + response = HTTParty.get("https://slack.com/api/users.list?token=#{ENV['SLACK_TOKEN']}") + # array called members + # need "id" "name" and "real_name" + array_of_users = [] + response["members"].each do |member| + info_hash = {} + info_hash["id"] = member["id"] + info_hash["user_name"] = member["name"] + info_hash["real_name"] = member ["profile"]["real_name"] + array_of_users << info_hash + end + return array_of_users + end + end +end + +tp SlackCLI::User.list_users + +# # goal - list users in a workspace +# # generally - list channels in a workspace +# url = 'https://slack.com/api/channels.list' +# query_params = +# # TODO project +# query_params = { +# token: ENV['SLACK_TOKEN'] +# } +# array_of_channels = [] +# response = HTTParty.get(url, params: query_params) +# response["channels"].each do |response| +# hash_of_ids = {} +# id = response["id"] +# members = response["members"].length +# topic = response["topic"]["value"] +# name = response["name"] +# hash_of_ids["id"] = id +# hash_of_ids["members"] = members +# hash_of_ids["topic"] = topic +# hash_of_ids["name"] = name +# array_of_channels << hash_of_ids +# end + diff --git a/test/channel_test.rb b/test/channel_test.rb new file mode 100644 index 00000000..47fccb3f --- /dev/null +++ b/test/channel_test.rb @@ -0,0 +1,22 @@ +require_relative '../lib/channel' +require_relative 'test_helper' + +describe "Channel" do + + #Not Passing - Wrong Number of Arguments + describe "Initialize" do + let(:first_channel) {SlackCLI::Channel.new(slack_id: "string", name: "hi", topic: "string", member_count: 4)} + it "should have a slack id and name" do + expect(first_channel.slack_id).must_be_instance_of String + expect(first_channel.name).must_be_instance_of String + end + + # it "should raise error if slack_id: is nil" do + # expect{ SlackCLI::Channel.new(slack_id: nil, name: "hi", topic: "string", member_count: 4) }.must_raise ArgumentError + # end + + # it "should raise error if name: is nil " do + # expect{ SlackCLI::Channel.new(slack_id: "hey", name: nil, topic: "string", member_count: 4) }.must_raise ArgumentError + # end + end +end \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb index e10341e8..57ed88d5 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -3,32 +3,19 @@ describe "Recipient" do - describe "Initialize" do - let(:recipient) {SlackCLI::Recipient.new(slack_id: "string", name: "hi")} - it "should have a slack id and name" do - expect(recipient.slack_id).must_be_instance_of String - expect(recipient.name).must_be_instance_of String - end - - it "should raise error if slack_id: is nil" do - expect{ SlackCLI::Recipient.new(slack_id: nil, name: "hi") }.must_raise ArgumentError - end - - it "should raise error if name: is nil " do - expect{ SlackCLI::Recipient.new(slack_id: "hey", name: nil) }.must_raise ArgumentError - end - end + # - describe "get" do - it "should be an instance of HTTParty" do - # response = SlackCLI::Recipient.new(slack_id: "1", name: "Katie") - # p response.get - # p SlackCLI::Recipient.get - VCR.use_cassette("recipient") do - expect(SlackCLI::Recipient.get).must_be_instance_of HTTParty::Response - end - end - end + #Move Test to Child Classes + # describe "get" do + # it "should be an instance of HTTParty" do + # # response = SlackCLI::Recipient.new(slack_id: "1", name: "Katie") + # # p response.get + # # p SlackCLI::Recipient.get + # VCR.use_cassette("recipient") do + # expect(SlackCLI::Recipient.get).must_be_instance_of HTTParty::Response + # end + # end + # end # describe "get" do diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..d5958507 --- /dev/null +++ b/test/user_test.rb @@ -0,0 +1,2 @@ +require_relative '../lib/recipient' +require_relative 'test_helper' \ No newline at end of file From a7a45cdf34b5cd9aadbf3a6668e5d32508c44d4f Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Wed, 11 Sep 2019 15:53:29 -0700 Subject: [PATCH 06/19] Found a way to accurately display channel information. --- lib/channel.rb | 32 +++++++++++++++++++++++--------- lib/recipient.rb | 10 ++-------- lib/user.rb | 31 +------------------------------ test/channel_test.rb | 15 ++++----------- 4 files changed, 30 insertions(+), 58 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 7a303863..fa79d1c7 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -1,14 +1,28 @@ -require 'HTTParty' -require_relative 'recipient.rb' +require 'dotenv' +require 'httparty' +require 'awesome_print' +require_relative 'recipient' +require 'table_print' + +Dotenv.load +# we are returning an array of channels (2x what we are expecting) module SlackCLI class Channel < Recipient - - attr_reader :topic, :member_count, :slack_id, :name - def initialize(slack_id:, name:, topic:, member_count:) - super(slack_id, name) - @topic = topic - @member_count = member_count + def self.list_channels + response = HTTParty.get("https://slack.com/api/channels.list?token=#{ENV['SLACK_TOKEN']}") + array_of_channels = [] + + response["channels"].each do |channel| + info_hash = {} + info_hash["id"] = channel["id"] + info_hash["name"] = channel["name"] + info_hash["topic"] = channel["topic"]["value"] + info_hash["member_count"] = channel["members"].length + array_of_channels << info_hash + end + return response["channels"] end - end end + +ap SlackCLI::Channel.list_channels diff --git a/lib/recipient.rb b/lib/recipient.rb index a9422ed8..8b8fe606 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -3,13 +3,8 @@ module SlackCLI class Recipient - - - def is_valid?(value) - if value.nil? - raise ArgumentError - end - return value + def self.list_channels + end def self.get(url) @@ -52,4 +47,3 @@ def self.get(url) # end - \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb index 1131c670..01a0e399 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -2,20 +2,15 @@ require 'httparty' require 'awesome_print' require_relative 'recipient' -require_relative 'channel' +# require_relative 'channel' require 'table_print' Dotenv.load module SlackCLI class User < Recipient - - def self.list_users - response = HTTParty.get("https://slack.com/api/users.list?token=#{ENV['SLACK_TOKEN']}") - # array called members - # need "id" "name" and "real_name" array_of_users = [] response["members"].each do |member| info_hash = {} @@ -30,27 +25,3 @@ def self.list_users end tp SlackCLI::User.list_users - -# # goal - list users in a workspace -# # generally - list channels in a workspace -# url = 'https://slack.com/api/channels.list' -# query_params = -# # TODO project -# query_params = { -# token: ENV['SLACK_TOKEN'] -# } -# array_of_channels = [] -# response = HTTParty.get(url, params: query_params) -# response["channels"].each do |response| -# hash_of_ids = {} -# id = response["id"] -# members = response["members"].length -# topic = response["topic"]["value"] -# name = response["name"] -# hash_of_ids["id"] = id -# hash_of_ids["members"] = members -# hash_of_ids["topic"] = topic -# hash_of_ids["name"] = name -# array_of_channels << hash_of_ids -# end - diff --git a/test/channel_test.rb b/test/channel_test.rb index 47fccb3f..54ab52e8 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1,22 +1,15 @@ require_relative '../lib/channel' require_relative 'test_helper' -describe "Channel" do +describe "SlackCLI::Channel" do - #Not Passing - Wrong Number of Arguments - describe "Initialize" do - let(:first_channel) {SlackCLI::Channel.new(slack_id: "string", name: "hi", topic: "string", member_count: 4)} + + describe "list_channels" do + it "should have a slack id and name" do expect(first_channel.slack_id).must_be_instance_of String expect(first_channel.name).must_be_instance_of String end - # it "should raise error if slack_id: is nil" do - # expect{ SlackCLI::Channel.new(slack_id: nil, name: "hi", topic: "string", member_count: 4) }.must_raise ArgumentError - # end - - # it "should raise error if name: is nil " do - # expect{ SlackCLI::Channel.new(slack_id: "hey", name: nil, topic: "string", member_count: 4) }.must_raise ArgumentError - # end end end \ No newline at end of file From 646a8e0653ef902c05e39608cb2d2e0c18794086 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Thu, 12 Sep 2019 14:26:32 -0700 Subject: [PATCH 07/19] Major breakthrough, now instantiating Channel objects, that are returned by the command list_channels --- lib/channel.rb | 31 ++++++++---- lib/recipient.rb | 5 +- lib/slack.rb | 8 +-- lib/user.rb | 8 +-- test/cassettes/list_channels.yml | 84 ++++++++++++++++++++++++++++++++ test/cassettes/recipient.yml | 66 ------------------------- test/channel_test.rb | 49 ++++++++++++++++--- test/recipient_test.rb | 3 +- test/test_helper.rb | 17 ++++--- test/user_test.rb | 2 +- 10 files changed, 168 insertions(+), 105 deletions(-) create mode 100644 test/cassettes/list_channels.yml delete mode 100644 test/cassettes/recipient.yml diff --git a/lib/channel.rb b/lib/channel.rb index fa79d1c7..f103000c 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -1,28 +1,39 @@ require 'dotenv' -require 'httparty' -require 'awesome_print' require_relative 'recipient' -require 'table_print' + Dotenv.load # we are returning an array of channels (2x what we are expecting) module SlackCLI class Channel < Recipient + attr_reader :id, :name, :topic, :member_count + + def initialize(id:, name:, topic:, member_count:) + @id = id + @name = name + @topic = topic + @member_count = member_count + end + def self.list_channels response = HTTParty.get("https://slack.com/api/channels.list?token=#{ENV['SLACK_TOKEN']}") + unless response["ok"] + raise StandardError.new("Data Load Error") + end array_of_channels = [] response["channels"].each do |channel| info_hash = {} - info_hash["id"] = channel["id"] - info_hash["name"] = channel["name"] - info_hash["topic"] = channel["topic"]["value"] - info_hash["member_count"] = channel["members"].length - array_of_channels << info_hash + info_hash[:id] = channel["id"] + info_hash[:name] = channel["name"] + info_hash[:topic] = channel["topic"]["value"] + info_hash[:member_count] = channel["members"].length + array_of_channels << SlackCLI::Channel.new(info_hash) end - return response["channels"] + return array_of_channels end + end end -ap SlackCLI::Channel.list_channels +# p SlackCLI::Channel.list_channels diff --git a/lib/recipient.rb b/lib/recipient.rb index 8b8fe606..1415e5bf 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,10 +1,13 @@ require 'HTTParty' +require 'dotenv' +require 'table_print' + module SlackCLI class Recipient def self.list_channels - + end def self.get(url) diff --git a/lib/slack.rb b/lib/slack.rb index ccf7d010..11200ac7 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -5,6 +5,8 @@ require_relative 'recipient' require_relative 'user' require_relative 'channel' +require "table_print" + Dotenv.load def main @@ -16,11 +18,9 @@ def main until selection == "3" if selection == "1" - # method to list users in workspace - # SlackCLI.list_users - puts "You selected 1" + tp SlackCLI::User.list_users elsif selection == "2" - puts "you selected 2" + tp SlackCLI::Channel.list_channels end puts options selection = gets.chomp diff --git a/lib/user.rb b/lib/user.rb index 01a0e399..bf8b4586 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,14 +1,9 @@ -require 'dotenv' -require 'httparty' -require 'awesome_print' require_relative 'recipient' -# require_relative 'channel' -require 'table_print' - Dotenv.load module SlackCLI class User < Recipient + def self.list_users response = HTTParty.get("https://slack.com/api/users.list?token=#{ENV['SLACK_TOKEN']}") array_of_users = [] @@ -24,4 +19,3 @@ def self.list_users end end -tp SlackCLI::User.list_users diff --git a/test/cassettes/list_channels.yml b/test/cassettes/list_channels.yml new file mode 100644 index 00000000..a905f3e1 --- /dev/null +++ b/test/cassettes/list_channels.yml @@ -0,0 +1,84 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '824' + Connection: + - keep-alive + Date: + - Thu, 12 Sep 2019 21:04:33 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - f0b4d9c6-a34f-4a10-91d6-eeeb36c07d2b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-nzzu + X-Cache: + - Miss from cloudfront + Via: + - 1.1 e4d3d5aafc7d7d582423c073065ab563.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - k2K87RC5BRSj5aro_QqKQ7hJzeJ9nZ4txkWD7PAlYq0_Gc8kuA1lKw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMTGXDXD0","last_set":1568073948},"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":"UMTGXDXD0","last_set":1568073948},"previous_names":[],"num_members":4},{"id":"CN6A8MNHW","name":"general","is_channel":true,"created":1568073948,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMTGXDXD0","last_set":1568073948},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMTGXDXD0","last_set":1568073948},"previous_names":[],"num_members":4},{"id":"CN86A001M","name":"slack-cli","is_channel":true,"created":1568073949,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Really + fun topic for testing","creator":"UMW5P9DHR","last_set":1568150556},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CN9T10WBG","name":"pets","is_channel":true,"created":1568150583,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"pets","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMW5P9DHR"],"topic":{"value":"for + pets and pet-friendly people","creator":"UMW5P9DHR","last_set":1568150610},"purpose":{"value":"collects + pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what + is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Thu, 12 Sep 2019 21:06:18 GMT +recorded_with: VCR 5.0.0 diff --git a/test/cassettes/recipient.yml b/test/cassettes/recipient.yml deleted file mode 100644 index 24d7b85a..00000000 --- a/test/cassettes/recipient.yml +++ /dev/null @@ -1,66 +0,0 @@ ---- -http_interactions: -- request: - method: get - uri: https://slack.com/api/channels.list - 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: - - '53' - Connection: - - keep-alive - Date: - - Tue, 10 Sep 2019 23:16:06 GMT - Server: - - Apache - Access-Control-Expose-Headers: - - x-slack-req-id, retry-after - Access-Control-Allow-Headers: - - slack-route, x-slack-version-ts - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Referrer-Policy: - - no-referrer - X-Accepted-Oauth-Scopes: - - channels:read - Vary: - - Accept-Encoding - X-Slack-Req-Id: - - 298a3514-788d-4876-8f05-240272571c92 - X-Xss-Protection: - - '0' - X-Content-Type-Options: - - nosniff - Access-Control-Allow-Origin: - - "*" - X-Via: - - haproxy-www-lwkq - X-Cache: - - Miss from cloudfront - Via: - - 1.1 0a2ce08fa1ec3c33302a7547d3305978.cloudfront.net (CloudFront) - X-Amz-Cf-Pop: - - SEA19-C1 - X-Amz-Cf-Id: - - PmMDDQiHApK3eKD2htzIWiyv-L5AKp3okrIY2uUPtTWhNiloK_7SbQ== - body: - encoding: ASCII-8BIT - string: '{"ok":false,"error":"not_authed"}' - http_version: - recorded_at: Tue, 10 Sep 2019 23:17:45 GMT -recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index 54ab52e8..b4fc52db 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1,15 +1,48 @@ -require_relative '../lib/channel' + require_relative 'test_helper' + describe "SlackCLI::Channel" do + describe "list_channels" do + it "should be a list of channels" do + VCR.use_cassette("list_channels") do + expect(SlackCLI::Channel.list_channels.first).must_be_instance_of SlackCLI::Channel + end + end + end + # it "should be a channel" do + # end - describe "list_channels" do - - it "should have a slack id and name" do - expect(first_channel.slack_id).must_be_instance_of String - expect(first_channel.name).must_be_instance_of String + # it "should have appropriate attributes" do + # end + + # it "should have id respond to a string" do + # end + + it "Should return an Array" do + VCR.use_cassette("list_channels") do + expect(SlackCLI::Channel.list_channels).must_be_instance_of Array end - end -end \ No newline at end of file +end + + + +#Unsure if we can actually test this +# it "Should raise error when reponse is nil" do +# (SlackCLI::Channel.list_channels response = HTTParty.get("https://slack.com/api/channels.list?token=#{xoxo-87634-2}") +# response.must_raise StandardError +# end +# describe "get" do +# it "should be an instance of HTTParty" do +# # response = SlackCLI::Recipient.new(slack_id: "1", name: "Katie") +# # p response.get +# # p SlackCLI::Recipient.get +# VCR.use_cassette("recipient") do +# expect(SlackCLI::Recipient.get).must_be_instance_of HTTParty::Response +# end +# end +# end + +# let(:channel_list) {} \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb index 57ed88d5..c2e59e60 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -1,5 +1,6 @@ -require_relative '../lib/recipient' +# require_relative '../lib/recipient' require_relative 'test_helper' +# require 'vcr' describe "Recipient" do diff --git a/test/test_helper.rb b/test/test_helper.rb index 94b4750f..e20281bb 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -14,7 +14,10 @@ require 'vcr' -require_relative 'recipient_test' +require_relative '../lib/channel' +require_relative '../lib/user' +require_relative '../lib/recipient' +# require_relative 'recipient_test' Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new @@ -23,11 +26,11 @@ config.hook_into :webmock config.default_cassette_options = { - :record => :new_episodes, - :match_requests_on => [:method, :uri, :body], -} -config.filter_sensitive_data("") do - ENV["SLACK_TOKEN"] -end + :record => :new_episodes, + :match_requests_on => [:method, :uri, :body], + } + config.filter_sensitive_data("") do + ENV["SLACK_TOKEN"] + end end diff --git a/test/user_test.rb b/test/user_test.rb index d5958507..e924c01d 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,2 +1,2 @@ -require_relative '../lib/recipient' +# require_relative '../lib/recipient' require_relative 'test_helper' \ No newline at end of file From 8fe71de1fe085ee2de8ca3e7d7b034d2f8016436 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Thu, 12 Sep 2019 14:47:39 -0700 Subject: [PATCH 08/19] Updated list method for Recipient, User, and Channel. --- lib/channel.rb | 15 +++--- lib/recipient.rb | 35 +++----------- lib/slack.rb | 4 +- lib/user.rb | 20 +++++--- test/cassettes/list_channels.yml | 14 +++--- test/cassettes/list_users.yml | 83 ++++++++++++++++++++++++++++++++ test/channel_test.rb | 6 +-- test/user_test.rb | 26 +++++++++- 8 files changed, 149 insertions(+), 54 deletions(-) create mode 100644 test/cassettes/list_users.yml diff --git a/lib/channel.rb b/lib/channel.rb index f103000c..b6a502be 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -15,7 +15,7 @@ def initialize(id:, name:, topic:, member_count:) @member_count = member_count end - def self.list_channels + def self.list response = HTTParty.get("https://slack.com/api/channels.list?token=#{ENV['SLACK_TOKEN']}") unless response["ok"] raise StandardError.new("Data Load Error") @@ -23,11 +23,12 @@ def self.list_channels array_of_channels = [] response["channels"].each do |channel| - info_hash = {} - info_hash[:id] = channel["id"] - info_hash[:name] = channel["name"] - info_hash[:topic] = channel["topic"]["value"] - info_hash[:member_count] = channel["members"].length + info_hash = { + id: channel["id"], + name: channel["name"], + topic: channel["topic"]["value"], + member_count: channel["members"].length + } array_of_channels << SlackCLI::Channel.new(info_hash) end return array_of_channels @@ -36,4 +37,4 @@ def self.list_channels end end -# p SlackCLI::Channel.list_channels + diff --git a/lib/recipient.rb b/lib/recipient.rb index 1415e5bf..87127879 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,15 +1,20 @@ require 'HTTParty' require 'dotenv' -require 'table_print' + module SlackCLI class Recipient + def initialize + end + def self.list_channels - + raise NotImplementedError.new("Call this method in child class") end + + def self.get(url) # # url = 'https://slack.com/api/channels.list' # query_params = { @@ -24,29 +29,3 @@ def self.get(url) end end - - -# # goal - list users in a workspace -# # generally - list channels in a workspace -# url = 'https://slack.com/api/channels.list' -# query_params = -# # TODO project -# query_params = { -# token: ENV['SLACK_TOKEN'] -# } -# array_of_channels = [] -# response = HTTParty.get(url, params: query_params) -# response["channels"].each do |response| -# hash_of_ids = {} -# id = response["id"] -# members = response["members"].length -# topic = response["topic"]["value"] -# name = response["name"] -# hash_of_ids["id"] = id -# hash_of_ids["members"] = members -# hash_of_ids["topic"] = topic -# hash_of_ids["name"] = name -# array_of_channels << hash_of_ids -# end - - diff --git a/lib/slack.rb b/lib/slack.rb index 11200ac7..b6aa6893 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -18,9 +18,9 @@ def main until selection == "3" if selection == "1" - tp SlackCLI::User.list_users + tp SlackCLI::User.list elsif selection == "2" - tp SlackCLI::Channel.list_channels + tp SlackCLI::Channel.list end puts options selection = gets.chomp diff --git a/lib/user.rb b/lib/user.rb index bf8b4586..ca405e32 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -3,16 +3,24 @@ module SlackCLI class User < Recipient + attr_reader :id, :user_name, :real_name - def self.list_users + def initialize(id:, user_name:, real_name:) + @id = id + @user_name = user_name + @real_name = real_name + end + + def self.list response = HTTParty.get("https://slack.com/api/users.list?token=#{ENV['SLACK_TOKEN']}") array_of_users = [] response["members"].each do |member| - info_hash = {} - info_hash["id"] = member["id"] - info_hash["user_name"] = member["name"] - info_hash["real_name"] = member ["profile"]["real_name"] - array_of_users << info_hash + info_hash = { + id: member["id"], + user_name: member["name"], + real_name: member ["profile"]["real_name"] + } + array_of_users << SlackCLI::User.new(info_hash) end return array_of_users end diff --git a/test/cassettes/list_channels.yml b/test/cassettes/list_channels.yml index a905f3e1..455cfb82 100644 --- a/test/cassettes/list_channels.yml +++ b/test/cassettes/list_channels.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Thu, 12 Sep 2019 21:04:33 GMT + - Thu, 12 Sep 2019 21:45:20 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - f0b4d9c6-a34f-4a10-91d6-eeeb36c07d2b + - a7678ead-b3a8-468e-94fb-9ef8e689ebb3 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-nzzu + - haproxy-www-oawk X-Cache: - Miss from cloudfront Via: - - 1.1 e4d3d5aafc7d7d582423c073065ab563.cloudfront.net (CloudFront) + - 1.1 60b744e5b364d04abea9fa6686121242.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C2 + - SEA19-C1 X-Amz-Cf-Id: - - k2K87RC5BRSj5aro_QqKQ7hJzeJ9nZ4txkWD7PAlYq0_Gc8kuA1lKw== + - 18YuX0dYBU26UnwcbgHDB65SlhmiLid71gSqNjPNPe61VGgITZXBbA== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work @@ -80,5 +80,5 @@ http_interactions: pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Thu, 12 Sep 2019 21:06:18 GMT + recorded_at: Thu, 12 Sep 2019 21:47:06 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/list_users.yml b/test/cassettes/list_users.yml new file mode 100644 index 00000000..1eb56100 --- /dev/null +++ b/test/cassettes/list_users.yml @@ -0,0 +1,83 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1180' + Connection: + - keep-alive + Date: + - Thu, 12 Sep 2019 21:45:20 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 6aea3cc6-5777-4eb2-a8e9-f6425f0ad846 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-nzzu + X-Cache: + - Miss from cloudfront + Via: + - 1.1 174acb08636ac7d9e9a778bbf1bcbc53.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - DxB1JhDBsHkUIapmcK2SCQNXlGTp_wJWqpVFxvwtW_8SQDD_iXkpfg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","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":"TMZTRGKCZ"},"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":"UMTGXDXD0","team_id":"TMZTRGKCZ","name":"dom_taylor","deleted":false,"color":"9f69e7","real_name":"dom_taylor","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"dom_taylor","real_name_normalized":"dom_taylor","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g1639eaa6e83","image_24":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568073948},{"id":"UMUS3K402","team_id":"TMZTRGKCZ","name":"holmstedtk","deleted":false,"color":"3c989f","real_name":"Katie + Kennedy","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Katie + Kennedy","real_name_normalized":"Katie Kennedy","display_name":"Katie Kennedy","display_name_normalized":"Katie + Kennedy","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g4c6094fcae2","image_24":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148491},{"id":"UMW5P9DHR","team_id":"TMZTRGKCZ","name":"nataliemtapias","deleted":false,"color":"e7392d","real_name":"Natalie + Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie + Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie + Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568324720,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Thu, 12 Sep 2019 21:47:06 GMT +recorded_with: VCR 5.0.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index b4fc52db..efe531ea 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -3,10 +3,10 @@ describe "SlackCLI::Channel" do - describe "list_channels" do + describe "list" do it "should be a list of channels" do VCR.use_cassette("list_channels") do - expect(SlackCLI::Channel.list_channels.first).must_be_instance_of SlackCLI::Channel + expect(SlackCLI::Channel.list.first).must_be_instance_of SlackCLI::Channel end end end @@ -22,7 +22,7 @@ it "Should return an Array" do VCR.use_cassette("list_channels") do - expect(SlackCLI::Channel.list_channels).must_be_instance_of Array + expect(SlackCLI::Channel.list).must_be_instance_of Array end end end diff --git a/test/user_test.rb b/test/user_test.rb index e924c01d..748da9a7 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,2 +1,26 @@ # require_relative '../lib/recipient' -require_relative 'test_helper' \ No newline at end of file +require_relative 'test_helper' + + +describe "SlackCLI::User" do + describe "list" do + it "should be a list of user objects" do + VCR.use_cassette("list_users") do + expect(SlackCLI::User.list.first).must_be_instance_of SlackCLI::User + end + end + end + + # it "should be a channel" do + # end + # it "should have appropriate attributes" do + # end + # it "should have id respond to a string" do + # end + + it "should return an Array" do + VCR.use_cassette("list_users") do + expect(SlackCLI::User.list).must_be_instance_of Array + end + end +end From d7dc4319d4cd05e235ecb9cd6ba3b8f36cc24f13 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Thu, 12 Sep 2019 14:56:43 -0700 Subject: [PATCH 09/19] Added a SlackApiError class inheriting from StandardError. We raise this error in the parent class Recipient for the method list when called from this class. --- lib/recipient.rb | 6 ++++-- test/recipient_test.rb | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/recipient.rb b/lib/recipient.rb index 87127879..6394d1be 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -2,6 +2,8 @@ require 'dotenv' +class SlackApiError < StandardError +end module SlackCLI @@ -9,8 +11,8 @@ class Recipient def initialize end - def self.list_channels - raise NotImplementedError.new("Call this method in child class") + def self.list + raise SlackApiError.new("Call this method in child class") end diff --git a/test/recipient_test.rb b/test/recipient_test.rb index c2e59e60..cb4e6598 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -3,7 +3,13 @@ # require 'vcr' describe "Recipient" do - + describe "list" do + it "should raise Error if called" do + VCR.use_cassette("recipient_list") do + expect{SlackCLI::Recipient.list}.must_raise SlackApiError + end + end + end # #Move Test to Child Classes From d212b8c19d30b7a171e28765d288c70e7ddc53cd Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Thu, 12 Sep 2019 15:58:32 -0700 Subject: [PATCH 10/19] Slack.rb draft --- lib/slack.rb | 64 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 10 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index b6aa6893..e7856512 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -10,23 +10,67 @@ Dotenv.load def main + puts "Welcome to the Ada Slack CLI!" + menu_method - options = "1. List Users in the Workspace \n2. List Channels in the Workspace\n3. Quit program" - puts options selection = gets.chomp - - until selection == "3" - if selection == "1" - tp SlackCLI::User.list - elsif selection == "2" - tp SlackCLI::Channel.list - end - puts options + until selection == "5" + selection_method(selection) + puts "______________________________" + menu_method selection = gets.chomp end + puts "Thank you for using the Ada Slack CLI" end +def menu_method + menu_options = ["List Users in the Workspace", "List Channels in the Workspace", "Select User", "Select Channel", "Quit program"] + menu_options.each_with_index do |prompt, i| + puts " #{i + 1}. #{prompt}" + end +end + +def selection_method(selection) + if selection == "1" + tp SlackCLI::User.list + # list channels + elsif selection == "2" + tp SlackCLI::Channel.list + # select user + elsif selection == "3" || selection == "4" + find_username_or_slack_id(selection) + end +end + +def find_username_or_slack_id(selection) + + puts "Enter \"a\" to search by Username\nEnter \"b\"to search by Slack ID" + find_by = gets.chomp + puts "Enter search term:" + name_or_id = gets.chomp + + if find_by == "a" + if selection == "3" + # this means they're looking for username + SlackCLI::User.find(user_name: name_or_id) + else + # looking for channel by channel name + SlackCLI::Channel.find(name: name_or_id) + end + # search by user id or channel id + # method - find by Name + elsif find_by == "b" + if selection == "3" + SlackCLI::User.find(slack_id: name_or_id) + # this means they're looking for username + else + SlackCLI::Channel.find(slack_id: name_or_id) + # looking for channel by channel name + end + end +end + main if __FILE__ == $PROGRAM_NAME From f38413181f26c02496a00a70ff93f8f9565c81a4 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Fri, 13 Sep 2019 13:26:10 -0700 Subject: [PATCH 11/19] We have been ading to workspace test, testing the select user method --- lib/channel.rb | 8 +- lib/slack.rb | 46 ++++----- lib/user.rb | 8 +- lib/workspace.rb | 40 ++++++++ test/cassettes/list_channels.yml | 14 +-- test/cassettes/list_users.yml | 16 +-- test/cassettes/select_user.yml | 164 +++++++++++++++++++++++++++++++ test/test_helper.rb | 1 + test/workspace_test.rb | 20 ++++ 9 files changed, 271 insertions(+), 46 deletions(-) create mode 100644 lib/workspace.rb create mode 100644 test/cassettes/select_user.yml create mode 100644 test/workspace_test.rb diff --git a/lib/channel.rb b/lib/channel.rb index b6a502be..fba8df97 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -6,10 +6,10 @@ # we are returning an array of channels (2x what we are expecting) module SlackCLI class Channel < Recipient - attr_reader :id, :name, :topic, :member_count + attr_reader :slack_id, :name, :topic, :member_count - def initialize(id:, name:, topic:, member_count:) - @id = id + def initialize(slack_id:, name:, topic:, member_count:) + @slack_id = slack_id @name = name @topic = topic @member_count = member_count @@ -24,7 +24,7 @@ def self.list response["channels"].each do |channel| info_hash = { - id: channel["id"], + slack_id: channel["id"], name: channel["name"], topic: channel["topic"]["value"], member_count: channel["members"].length diff --git a/lib/slack.rb b/lib/slack.rb index e7856512..e570bd8a 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,10 +1,8 @@ #!/usr/bin/env ruby -require 'dotenv' -require 'httparty' +# require 'dotenv' +# require 'httparty' require 'awesome_print' -require_relative 'recipient' -require_relative 'user' -require_relative 'channel' +require_relative 'workspace' require "table_print" Dotenv.load @@ -15,59 +13,61 @@ def main menu_method selection = gets.chomp - until selection == "5" + until selection == "3" selection_method(selection) puts "______________________________" menu_method selection = gets.chomp + learn_more_method end puts "Thank you for using the Ada Slack CLI" end def menu_method - menu_options = ["List Users in the Workspace", "List Channels in the Workspace", "Select User", "Select Channel", "Quit program"] + # menu_options = ["List Users in the Workspace", "List Channels in the Workspace", "Select User", "Select Channel", "Quit program"] + menu_options = ["List Users in the Workspace", "List Channels in the Workspace", "Quit"] menu_options.each_with_index do |prompt, i| puts " #{i + 1}. #{prompt}" end end + def selection_method(selection) + workspace = SlackCLI::Workspace.new #Move Somewhere More Important if selection == "1" - tp SlackCLI::User.list - # list channels + tp workspace.users elsif selection == "2" - tp SlackCLI::Channel.list - # select user - elsif selection == "3" || selection == "4" - find_username_or_slack_id(selection) + tp workspace.channels end end -def find_username_or_slack_id(selection) - + +def learn_more_method(selection) + # selection 1 is users + # selection "2" is channels puts "Enter \"a\" to search by Username\nEnter \"b\"to search by Slack ID" find_by = gets.chomp puts "Enter search term:" name_or_id = gets.chomp if find_by == "a" - if selection == "3" + if selection == "1" # this means they're looking for username - SlackCLI::User.find(user_name: name_or_id) + workspace.select_user(user_name: name_or_id) else # looking for channel by channel name - SlackCLI::Channel.find(name: name_or_id) + workspace.select_channel(name: name_or_id) end # search by user id or channel id # method - find by Name elsif find_by == "b" - if selection == "3" - SlackCLI::User.find(slack_id: name_or_id) - # this means they're looking for username - else - SlackCLI::Channel.find(slack_id: name_or_id) + if selection == "1" + workspace.select_user(slack_id: name_or_id) # looking for channel by channel name + else + workspace.select_channel(slack_id: name_or_id) + # this means they're looking for username end end end diff --git a/lib/user.rb b/lib/user.rb index ca405e32..c3d56104 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -3,10 +3,10 @@ module SlackCLI class User < Recipient - attr_reader :id, :user_name, :real_name + attr_reader :slack_id, :user_name, :real_name - def initialize(id:, user_name:, real_name:) - @id = id + def initialize(slack_id:, user_name:, real_name:) + @slack_id = slack_id @user_name = user_name @real_name = real_name end @@ -16,7 +16,7 @@ def self.list array_of_users = [] response["members"].each do |member| info_hash = { - id: member["id"], + slack_id: member["id"], user_name: member["name"], real_name: member ["profile"]["real_name"] } diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..ebf6cb73 --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,40 @@ +require_relative 'recipient' +# require_relative 'slack' +require_relative 'user' +require_relative 'channel' +Dotenv.load + +module SlackCLI + class Workspace + attr_reader :users, :channels, :selected + + def initialize + @users = SlackCLI::User.list + @channels = SlackCLI::Channel.list + @selected = nil + end + + def select_channel(name: nil, slack_id: nil) + @channels.each do |channel| + if channel.name == name || channel.slack_id == slack_id + @selected = user + end + end + end + + def select_user(user_name: nil, slack_id: nil) + @users.each do |user| + if user.user_name == user_name || user.slack_id == slack_id + @selected = user + end + end + end + + def show_details + end + + def send_message + end + + end +end \ No newline at end of file diff --git a/test/cassettes/list_channels.yml b/test/cassettes/list_channels.yml index 455cfb82..96209ff9 100644 --- a/test/cassettes/list_channels.yml +++ b/test/cassettes/list_channels.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Thu, 12 Sep 2019 21:45:20 GMT + - Fri, 13 Sep 2019 20:23:32 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - a7678ead-b3a8-468e-94fb-9ef8e689ebb3 + - 110a1ed7-c41a-4107-9213-eed06fd51ce7 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-oawk + - haproxy-www-abpg X-Cache: - Miss from cloudfront Via: - - 1.1 60b744e5b364d04abea9fa6686121242.cloudfront.net (CloudFront) + - 1.1 3cd7af07832481c336aa1c93c9b4a6fe.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C1 + - SEA19-C2 X-Amz-Cf-Id: - - 18YuX0dYBU26UnwcbgHDB65SlhmiLid71gSqNjPNPe61VGgITZXBbA== + - FLXCsbKLxrA0mIy5FUWY4U3LBYq_NOa1jwK1tPWhc4K4maUjRP5Nvg== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work @@ -80,5 +80,5 @@ http_interactions: pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Thu, 12 Sep 2019 21:47:06 GMT + recorded_at: Fri, 13 Sep 2019 20:25:22 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/list_users.yml b/test/cassettes/list_users.yml index 1eb56100..0a0c39a8 100644 --- a/test/cassettes/list_users.yml +++ b/test/cassettes/list_users.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Thu, 12 Sep 2019 21:45:20 GMT + - Fri, 13 Sep 2019 20:23:33 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 6aea3cc6-5777-4eb2-a8e9-f6425f0ad846 + - f4518440-33b3-4405-982e-a7a5db3564c6 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-nzzu + - haproxy-www-1m6r X-Cache: - Miss from cloudfront Via: - - 1.1 174acb08636ac7d9e9a778bbf1bcbc53.cloudfront.net (CloudFront) + - 1.1 7eb3b782ab09047ce0d11ee03763894c.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C1 + - SEA19-C2 X-Amz-Cf-Id: - - DxB1JhDBsHkUIapmcK2SCQNXlGTp_wJWqpVFxvwtW_8SQDD_iXkpfg== + - euIvXiMILmG7JGdxyujpvYPqTxteUJuuxPv03FQZj1ZMLk1h7675oQ== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -77,7 +77,7 @@ http_interactions: Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568324720,"response_metadata":{"next_cursor":""}}' + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568406213,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Thu, 12 Sep 2019 21:47:06 GMT + recorded_at: Fri, 13 Sep 2019 20:25:23 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/select_user.yml b/test/cassettes/select_user.yml new file mode 100644 index 00000000..e472e604 --- /dev/null +++ b/test/cassettes/select_user.yml @@ -0,0 +1,164 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1180' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 20:23:32 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 42217d16-55cf-40e0-97bb-c85add756794 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-4oho + X-Cache: + - Miss from cloudfront + Via: + - 1.1 f9d716a351f14a0ac1fac2449734849b.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - sMM_5cJ4p90KiYYFVgOgDPMDBJ0rpxEpVSvm8YtKqZRcTWL7-yaD4A== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","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":"TMZTRGKCZ"},"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":"UMTGXDXD0","team_id":"TMZTRGKCZ","name":"dom_taylor","deleted":false,"color":"9f69e7","real_name":"dom_taylor","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"dom_taylor","real_name_normalized":"dom_taylor","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g1639eaa6e83","image_24":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568073948},{"id":"UMUS3K402","team_id":"TMZTRGKCZ","name":"holmstedtk","deleted":false,"color":"3c989f","real_name":"Katie + Kennedy","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Katie + Kennedy","real_name_normalized":"Katie Kennedy","display_name":"Katie Kennedy","display_name_normalized":"Katie + Kennedy","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g4c6094fcae2","image_24":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148491},{"id":"UMW5P9DHR","team_id":"TMZTRGKCZ","name":"nataliemtapias","deleted":false,"color":"e7392d","real_name":"Natalie + Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie + Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie + Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568406212,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 20:25:22 GMT +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '824' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 20:23:33 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 5f678723-3a8d-4a2b-9986-d0722832f9b0 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-8emn + X-Cache: + - Miss from cloudfront + Via: + - 1.1 7022a5bbf9872d4a09d63e6cdb457dfe.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - 8mHu_1dAiPRElAXXUAmAYhg7YfFBqJvxPjOVt04Pf6GHfU71WCJdWw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMTGXDXD0","last_set":1568073948},"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":"UMTGXDXD0","last_set":1568073948},"previous_names":[],"num_members":4},{"id":"CN6A8MNHW","name":"general","is_channel":true,"created":1568073948,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMTGXDXD0","last_set":1568073948},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMTGXDXD0","last_set":1568073948},"previous_names":[],"num_members":4},{"id":"CN86A001M","name":"slack-cli","is_channel":true,"created":1568073949,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Really + fun topic for testing","creator":"UMW5P9DHR","last_set":1568150556},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CN9T10WBG","name":"pets","is_channel":true,"created":1568150583,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"pets","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMW5P9DHR"],"topic":{"value":"for + pets and pet-friendly people","creator":"UMW5P9DHR","last_set":1568150610},"purpose":{"value":"collects + pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what + is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 20:25:22 GMT +recorded_with: VCR 5.0.0 diff --git a/test/test_helper.rb b/test/test_helper.rb index e20281bb..75d6c501 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -17,6 +17,7 @@ require_relative '../lib/channel' require_relative '../lib/user' require_relative '../lib/recipient' +require_relative '../lib/workspace' # require_relative 'recipient_test' Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..069db45e --- /dev/null +++ b/test/workspace_test.rb @@ -0,0 +1,20 @@ +require_relative 'test_helper' + + +describe "SlackCLI::Workspace" do + + before do + VCR.use_cassette("select_user") do + @new_workspace = SlackCLI::Workspace.new + @new_workspace.select_user(user_name: "slackbot") + end + end + describe "select_user" do + it "should assign selected user to @selected " do + expect(@new_workspace.selected).must_be_instance_of SlackCLI::User + expect(@new_workspace.selected.user_name).must_equal "slackbot" + end + + end + +end From f70f803850f9521f21fbac559429035c54ce849a Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Fri, 13 Sep 2019 13:35:58 -0700 Subject: [PATCH 12/19] We wrote a test for method Workspace.select_channel --- lib/workspace.rb | 2 +- test/cassettes/select_channel.yml | 164 ++++++++++++++++++++++++++++++ test/workspace_test.rb | 27 +++-- 3 files changed, 184 insertions(+), 9 deletions(-) create mode 100644 test/cassettes/select_channel.yml diff --git a/lib/workspace.rb b/lib/workspace.rb index ebf6cb73..220ecbe7 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -17,7 +17,7 @@ def initialize def select_channel(name: nil, slack_id: nil) @channels.each do |channel| if channel.name == name || channel.slack_id == slack_id - @selected = user + @selected = channel end end end diff --git a/test/cassettes/select_channel.yml b/test/cassettes/select_channel.yml new file mode 100644 index 00000000..a6c3c6c2 --- /dev/null +++ b/test/cassettes/select_channel.yml @@ -0,0 +1,164 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1180' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 20:26:22 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 7b8ff17c-8e0c-4f52-85ce-ccf9e74c770b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-6q61 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 deaaf0548506de20925615eb51a7ea7f.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - UFuCiVTghPUdrQ3u6AdZEnXDdTptiiNce3CIKZq2UceZBftU1rmUwA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","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":"TMZTRGKCZ"},"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":"UMTGXDXD0","team_id":"TMZTRGKCZ","name":"dom_taylor","deleted":false,"color":"9f69e7","real_name":"dom_taylor","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"dom_taylor","real_name_normalized":"dom_taylor","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g1639eaa6e83","image_24":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568073948},{"id":"UMUS3K402","team_id":"TMZTRGKCZ","name":"holmstedtk","deleted":false,"color":"3c989f","real_name":"Katie + Kennedy","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Katie + Kennedy","real_name_normalized":"Katie Kennedy","display_name":"Katie Kennedy","display_name_normalized":"Katie + Kennedy","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g4c6094fcae2","image_24":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148491},{"id":"UMW5P9DHR","team_id":"TMZTRGKCZ","name":"nataliemtapias","deleted":false,"color":"e7392d","real_name":"Natalie + Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie + Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie + Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568406382,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 20:28:11 GMT +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '824' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 20:26:22 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 1719b717-a9f2-46f7-a3d2-e57cdeb54ae6 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-0guu + X-Cache: + - Miss from cloudfront + Via: + - 1.1 f313d3df80c4dab8f5399614116801cd.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - 3lBv75kEEpPjMM4I7vEkyUWWWqcJgbbu9A1slOAz27HHHLUT7RHNJw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMTGXDXD0","last_set":1568073948},"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":"UMTGXDXD0","last_set":1568073948},"previous_names":[],"num_members":4},{"id":"CN6A8MNHW","name":"general","is_channel":true,"created":1568073948,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMTGXDXD0","last_set":1568073948},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMTGXDXD0","last_set":1568073948},"previous_names":[],"num_members":4},{"id":"CN86A001M","name":"slack-cli","is_channel":true,"created":1568073949,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Really + fun topic for testing","creator":"UMW5P9DHR","last_set":1568150556},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CN9T10WBG","name":"pets","is_channel":true,"created":1568150583,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"pets","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMW5P9DHR"],"topic":{"value":"for + pets and pet-friendly people","creator":"UMW5P9DHR","last_set":1568150610},"purpose":{"value":"collects + pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what + is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 20:28:11 GMT +recorded_with: VCR 5.0.0 diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 069db45e..ab8419dc 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -3,18 +3,29 @@ describe "SlackCLI::Workspace" do - before do - VCR.use_cassette("select_user") do - @new_workspace = SlackCLI::Workspace.new - @new_workspace.select_user(user_name: "slackbot") - end - end describe "select_user" do it "should assign selected user to @selected " do - expect(@new_workspace.selected).must_be_instance_of SlackCLI::User - expect(@new_workspace.selected.user_name).must_equal "slackbot" + VCR.use_cassette("select_user") do + @user_workspace = SlackCLI::Workspace.new + @user_workspace.select_user(user_name: "slackbot") + end + + expect(@user_workspace.selected).must_be_instance_of SlackCLI::User + expect(@user_workspace.selected.user_name).must_equal "slackbot" end end + describe "select_channel" do + it "should assign selected channel to @selected " do + VCR.use_cassette("select_channel") do + @channel_workspace = SlackCLI::Workspace.new + @channel_workspace.select_channel(name: "random") + end + expect(@channel_workspace.selected).must_be_instance_of SlackCLI::Channel + expect(@channel_workspace.selected.name).must_equal "random" + end + end + + end From ec53974af5cab92147b5441b594b119f93a707d0 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Fri, 13 Sep 2019 13:53:09 -0700 Subject: [PATCH 13/19] Making progress and resettign @selected in workspace to @nil each time the method select is called. --- lib/slack.rb | 2 ++ lib/workspace.rb | 8 ++++++++ test/cassettes/list_channels.yml | 14 +++++++------- test/cassettes/list_users.yml | 16 ++++++++-------- test/cassettes/select_channel.yml | 30 +++++++++++++++--------------- test/cassettes/select_user.yml | 30 +++++++++++++++--------------- test/workspace_test.rb | 7 +++++-- 7 files changed, 60 insertions(+), 47 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index e570bd8a..578b059e 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -70,6 +70,8 @@ def learn_more_method(selection) # this means they're looking for username end end + # if looking for a channel / user and it doesn't exist- error mesasge or something & return to main command + end main if __FILE__ == $PROGRAM_NAME diff --git a/lib/workspace.rb b/lib/workspace.rb index 220ecbe7..d7044473 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -15,19 +15,27 @@ def initialize end def select_channel(name: nil, slack_id: nil) + @selected = nil @channels.each do |channel| if channel.name == name || channel.slack_id == slack_id @selected = channel end end + if @selected.nil? + raise SlackApiError.new("Channel not found") + end end def select_user(user_name: nil, slack_id: nil) + @selected = nil @users.each do |user| if user.user_name == user_name || user.slack_id == slack_id @selected = user end end + if @selected.nil? + raise SlackApiError.new("User not found") + end end def show_details diff --git a/test/cassettes/list_channels.yml b/test/cassettes/list_channels.yml index 96209ff9..8354ed8c 100644 --- a/test/cassettes/list_channels.yml +++ b/test/cassettes/list_channels.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:23:32 GMT + - Fri, 13 Sep 2019 20:46:12 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 110a1ed7-c41a-4107-9213-eed06fd51ce7 + - 883d662f-e221-4def-b466-c385f4e9271c X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-abpg + - haproxy-www-xvg4 X-Cache: - Miss from cloudfront Via: - - 1.1 3cd7af07832481c336aa1c93c9b4a6fe.cloudfront.net (CloudFront) + - 1.1 aa42484f82c16d99015c599631def20c.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C2 + - SEA19 X-Amz-Cf-Id: - - FLXCsbKLxrA0mIy5FUWY4U3LBYq_NOa1jwK1tPWhc4K4maUjRP5Nvg== + - QOyxVs1sJKrtMU6phfjqFM3CDqnxlDTYpoFD5iK1eTE8MCfXXKz6uw== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work @@ -80,5 +80,5 @@ http_interactions: pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:25:22 GMT + recorded_at: Fri, 13 Sep 2019 20:48:02 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/list_users.yml b/test/cassettes/list_users.yml index 0a0c39a8..0c3bd049 100644 --- a/test/cassettes/list_users.yml +++ b/test/cassettes/list_users.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:23:33 GMT + - Fri, 13 Sep 2019 20:46:12 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - f4518440-33b3-4405-982e-a7a5db3564c6 + - d2361b3d-faa5-48e0-a75b-374cf3751e81 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-1m6r + - haproxy-www-qdiq X-Cache: - Miss from cloudfront Via: - - 1.1 7eb3b782ab09047ce0d11ee03763894c.cloudfront.net (CloudFront) + - 1.1 2dc84924ce70e874a873764fe1415858.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C2 + - SEA19 X-Amz-Cf-Id: - - euIvXiMILmG7JGdxyujpvYPqTxteUJuuxPv03FQZj1ZMLk1h7675oQ== + - QeYSGz5lHUOR3Yx6K9mCFpN-1LMayCAPATpwkBP-XodosTXlOSticA== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -77,7 +77,7 @@ http_interactions: Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568406213,"response_metadata":{"next_cursor":""}}' + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568407572,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:25:23 GMT + recorded_at: Fri, 13 Sep 2019 20:48:02 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/select_channel.yml b/test/cassettes/select_channel.yml index a6c3c6c2..0a410dc8 100644 --- a/test/cassettes/select_channel.yml +++ b/test/cassettes/select_channel.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:26:22 GMT + - Fri, 13 Sep 2019 20:46:13 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 7b8ff17c-8e0c-4f52-85ce-ccf9e74c770b + - 64bb47af-4d4d-42bf-ba32-904b8eed0444 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-6q61 + - haproxy-www-aaa1 X-Cache: - Miss from cloudfront Via: - - 1.1 deaaf0548506de20925615eb51a7ea7f.cloudfront.net (CloudFront) + - 1.1 44c580258abdf211fd3f1cae43c497e9.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C1 + - SEA19 X-Amz-Cf-Id: - - UFuCiVTghPUdrQ3u6AdZEnXDdTptiiNce3CIKZq2UceZBftU1rmUwA== + - pqAR0mdQjw9gwfW4Q3ouLJoKNtp9oP2kSLJRdGVv4NAVcTjtjklONw== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -77,9 +77,9 @@ http_interactions: Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568406382,"response_metadata":{"next_cursor":""}}' + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568407573,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:28:11 GMT + recorded_at: Fri, 13 Sep 2019 20:48:03 GMT - request: method: get uri: https://slack.com/api/channels.list?token= @@ -105,13 +105,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:26:22 GMT + - Fri, 13 Sep 2019 20:46:15 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 1719b717-a9f2-46f7-a3d2-e57cdeb54ae6 + - 249d4b5a-f971-46d2-bc34-794266ca0a4d X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -137,15 +137,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-0guu + - haproxy-www-nujt X-Cache: - Miss from cloudfront Via: - - 1.1 f313d3df80c4dab8f5399614116801cd.cloudfront.net (CloudFront) + - 1.1 e7a6b3b39a146e70091418a22590a905.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C1 + - SEA19 X-Amz-Cf-Id: - - 3lBv75kEEpPjMM4I7vEkyUWWWqcJgbbu9A1slOAz27HHHLUT7RHNJw== + - x7zQUUfNLb7s9muEris9TUlqWUKEdagyZV7s_5urUpGjiRmWT-yP7Q== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work @@ -160,5 +160,5 @@ http_interactions: pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:28:11 GMT + recorded_at: Fri, 13 Sep 2019 20:48:04 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/select_user.yml b/test/cassettes/select_user.yml index e472e604..14d49abb 100644 --- a/test/cassettes/select_user.yml +++ b/test/cassettes/select_user.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:23:32 GMT + - Fri, 13 Sep 2019 20:46:16 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 42217d16-55cf-40e0-97bb-c85add756794 + - 64846875-1c32-40b0-9a64-0eb52af3723b X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-4oho + - haproxy-www-nvih X-Cache: - Miss from cloudfront Via: - - 1.1 f9d716a351f14a0ac1fac2449734849b.cloudfront.net (CloudFront) + - 1.1 5ab60a1edc7a4b1ee4a5fb18ec06ce15.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C2 + - SEA19 X-Amz-Cf-Id: - - sMM_5cJ4p90KiYYFVgOgDPMDBJ0rpxEpVSvm8YtKqZRcTWL7-yaD4A== + - HBeg388PX3vfc1u_Uy-AgCoM1lhqQL2Kshd3PUzSOtlbSdoA0GTxvA== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -77,9 +77,9 @@ http_interactions: Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568406212,"response_metadata":{"next_cursor":""}}' + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568407576,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:25:22 GMT + recorded_at: Fri, 13 Sep 2019 20:48:06 GMT - request: method: get uri: https://slack.com/api/channels.list?token= @@ -105,13 +105,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:23:33 GMT + - Fri, 13 Sep 2019 20:46:16 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 5f678723-3a8d-4a2b-9986-d0722832f9b0 + - cb84efdf-20a9-4322-a4af-d6b8e648ad3c X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -137,15 +137,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-8emn + - haproxy-www-wuu0 X-Cache: - Miss from cloudfront Via: - - 1.1 7022a5bbf9872d4a09d63e6cdb457dfe.cloudfront.net (CloudFront) + - 1.1 7aedac78d939212abc281241e82d26a7.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C2 + - SEA19 X-Amz-Cf-Id: - - 8mHu_1dAiPRElAXXUAmAYhg7YfFBqJvxPjOVt04Pf6GHfU71WCJdWw== + - XPRlF5XBnd8Jh9AursziopiHBMN0jt9CAtMjz6WL51hX0-XLkXhUBQ== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work @@ -160,5 +160,5 @@ http_interactions: pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:25:22 GMT + recorded_at: Fri, 13 Sep 2019 20:48:06 GMT recorded_with: VCR 5.0.0 diff --git a/test/workspace_test.rb b/test/workspace_test.rb index ab8419dc..bdad480e 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -4,16 +4,19 @@ describe "SlackCLI::Workspace" do describe "select_user" do - it "should assign selected user to @selected " do + it "should assign selected user to @selected and raise SlackCLI Error if it doesn't exist " do VCR.use_cassette("select_user") do @user_workspace = SlackCLI::Workspace.new @user_workspace.select_user(user_name: "slackbot") end - expect(@user_workspace.selected).must_be_instance_of SlackCLI::User expect(@user_workspace.selected.user_name).must_equal "slackbot" + # expect{ + # @user_workspace.select_user(slack_id: "0") + # }.must_raise SlackApiError end + end describe "select_channel" do From 928e058cc8afa979d6a584e65d0880cee6a76612 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Fri, 13 Sep 2019 13:56:17 -0700 Subject: [PATCH 14/19] Added channel workspace test to select a bogus channel. SlackAPIError is raised when this happens and we have a test for it\! --- test/workspace_test.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/workspace_test.rb b/test/workspace_test.rb index bdad480e..3e7f3135 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -11,9 +11,7 @@ end expect(@user_workspace.selected).must_be_instance_of SlackCLI::User expect(@user_workspace.selected.user_name).must_equal "slackbot" - # expect{ - # @user_workspace.select_user(slack_id: "0") - # }.must_raise SlackApiError + expect{@user_workspace.select_user(slack_id: "0")}.must_raise SlackApiError end @@ -27,6 +25,7 @@ end expect(@channel_workspace.selected).must_be_instance_of SlackCLI::Channel expect(@channel_workspace.selected.name).must_equal "random" + expect{@channel_workspace.select_channel(slack_id: "12")}.must_raise SlackApiError end end From 0b67fb57bfce20b1468682ff1752605dca9c0569 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Fri, 13 Sep 2019 14:27:27 -0700 Subject: [PATCH 15/19] Troubleshooted functionality on slack.rb --- lib/slack.rb | 67 +++++++++++++++++++++++------------------- test/workspace_test.rb | 4 --- 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index 578b059e..7b3a5c9d 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,24 +1,20 @@ #!/usr/bin/env ruby -# require 'dotenv' -# require 'httparty' require 'awesome_print' require_relative 'workspace' require "table_print" Dotenv.load - +@workspace = SlackCLI::Workspace.new def main - puts "Welcome to the Ada Slack CLI!" menu_method - selection = gets.chomp - until selection == "3" - selection_method(selection) - puts "______________________________" + + while selection == "1" || selection == "2" + print_table(selection) + learn_more_method(selection) menu_method selection = gets.chomp - learn_more_method end puts "Thank you for using the Ada Slack CLI" @@ -33,45 +29,54 @@ def menu_method end -def selection_method(selection) - workspace = SlackCLI::Workspace.new #Move Somewhere More Important +def print_table(selection) + # determines whether you are going to print users or channels + #Move Somewhere More Important if selection == "1" - tp workspace.users + tp @workspace.users elsif selection == "2" - tp workspace.channels + tp @workspace.channels end + end def learn_more_method(selection) # selection 1 is users # selection "2" is channels - puts "Enter \"a\" to search by Username\nEnter \"b\"to search by Slack ID" + puts "Enter \"a\" to search by Name\nEnter \"b\" to search by Slack ID" find_by = gets.chomp puts "Enter search term:" name_or_id = gets.chomp if find_by == "a" - if selection == "1" - # this means they're looking for username - workspace.select_user(user_name: name_or_id) - else - # looking for channel by channel name - workspace.select_channel(name: name_or_id) + begin + if selection == "1" + # this means they're looking for username + @workspace.select_user(user_name: name_or_id) + else + # looking for channel by channel name + @workspace.select_channel(name: name_or_id) + end + rescue + puts "NOT FOUND" end - # search by user id or channel id - # method - find by Name + elsif find_by == "b" - if selection == "1" - workspace.select_user(slack_id: name_or_id) - # looking for channel by channel name - else - workspace.select_channel(slack_id: name_or_id) - # this means they're looking for username - end + begin + if selection == "1" + @workspace.select_user(slack_id: name_or_id) + # looking for channel by channel name + else + @workspace.select_channel(slack_id: name_or_id) + # this means they're looking for username + end + rescue + puts "NOT FOUND" + end + else + puts "Invalid menu selection" end - # if looking for a channel / user and it doesn't exist- error mesasge or something & return to main command - end main if __FILE__ == $PROGRAM_NAME diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 3e7f3135..87be5c6e 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -13,8 +13,6 @@ expect(@user_workspace.selected.user_name).must_equal "slackbot" expect{@user_workspace.select_user(slack_id: "0")}.must_raise SlackApiError end - - end describe "select_channel" do @@ -28,6 +26,4 @@ expect{@channel_workspace.select_channel(slack_id: "12")}.must_raise SlackApiError end end - - end From 6258d0941e362499c78cd5e3e4307e047a4b4508 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Fri, 13 Sep 2019 14:44:55 -0700 Subject: [PATCH 16/19] Added Show Details Menu Option --- lib/slack.rb | 31 +++++++++++++++++++++++++------ lib/workspace.rb | 3 ++- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index 7b3a5c9d..efb7d95f 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -13,6 +13,7 @@ def main while selection == "1" || selection == "2" print_table(selection) learn_more_method(selection) + message_menu menu_method selection = gets.chomp end @@ -22,10 +23,11 @@ def main def menu_method # menu_options = ["List Users in the Workspace", "List Channels in the Workspace", "Select User", "Select Channel", "Quit program"] - menu_options = ["List Users in the Workspace", "List Channels in the Workspace", "Quit"] + menu_options = ["List Users in the Workspace", "List Channels in the Workspace"] menu_options.each_with_index do |prompt, i| puts " #{i + 1}. #{prompt}" end + puts "[Any Other Key] to Quit" end @@ -37,19 +39,20 @@ def print_table(selection) elsif selection == "2" tp @workspace.channels end - end +# show details +# @workspace.show_details def learn_more_method(selection) - # selection 1 is users + # selection "1" is users # selection "2" is channels - puts "Enter \"a\" to search by Name\nEnter \"b\" to search by Slack ID" + puts "Enter \"a\" to search by Name\nEnter \"b\" to search by Slack ID\n[Any Other Key] to Quit" find_by = gets.chomp - puts "Enter search term:" - name_or_id = gets.chomp if find_by == "a" + puts "Enter search term:" + name_or_id = gets.chomp begin if selection == "1" # this means they're looking for username @@ -63,6 +66,8 @@ def learn_more_method(selection) end elsif find_by == "b" + puts "Enter search term:" + name_or_id = gets.chomp begin if selection == "1" @workspace.select_user(slack_id: name_or_id) @@ -79,5 +84,19 @@ def learn_more_method(selection) end end +def message_menu + puts "Enter \"a\" to Show Details\nEnter \"b\" to Send Message\n[Any Other Key] to Quit" + message_choice = gets.chomp + if message_choice == "a" + @workspace.show_details + elsif message_choice == "b" + puts "Enter Message: " + message = gets.chomp + @workspace.send_message(message) + else + puts "Invalid Menu Choice" + end +end + main if __FILE__ == $PROGRAM_NAME diff --git a/lib/workspace.rb b/lib/workspace.rb index d7044473..03f64ba5 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -39,9 +39,10 @@ def select_user(user_name: nil, slack_id: nil) end def show_details + tp @selected end - def send_message + def send_message(message) end end From d667167cd1d4df2f210eaa97538bd0d22fec91df Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Fri, 13 Sep 2019 15:20:26 -0700 Subject: [PATCH 17/19] Workspace now has a functioning message method\!\! --- lib/slack.rb | 4 ++++ lib/workspace.rb | 42 ++++++++++++++++++++++++++++++++++++++---- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index efb7d95f..4adeccec 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -90,9 +90,13 @@ def message_menu if message_choice == "a" @workspace.show_details elsif message_choice == "b" + # begin puts "Enter Message: " message = gets.chomp @workspace.send_message(message) + # rescue + # puts "Message Unable to Send" + # end else puts "Invalid Menu Choice" end diff --git a/lib/workspace.rb b/lib/workspace.rb index 03f64ba5..cc892414 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -42,8 +42,42 @@ def show_details tp @selected end - def send_message(message) - end + # module SlackApi + # BASE_URL = 'https://slack.com/api/' + # API_KEY = ENV['SLACK_TOKEN'] + + # def self.send_msg(message, channel) + # response = HTTParty.post( + # "#{BASE_URL}/chat.postMessage", + # body: { + # token: API_KEY, + # text: message, + # channel: channel}, headers: { 'Content-Type' => 'application/x-www-form-urlencoded' }) + + # unless response.code == 200 && response.parsed_response["ok"] + # raise SlackApiError, "Error when posting #{message} to #{channel}, error: #{response.parsed_response["error"]}" + # end + # return true + # end + # end - end -end \ No newline at end of file + + def send_message(message) + uri = 'https://slack.com/api/' + + send_message = HTTParty.post( + "#{uri}/chat.postMessage", + body: { + token: ENV['SLACK_TOKEN'], + text: message, + channel: @selected.slack_id}, + headers:{ 'Content-Type' => 'application/x-www-form-urlencoded' }) + + unless send_message["ok"] + raise SlackApiError.new("Message Unable to Send") + end + + end + + end + end \ No newline at end of file From ce44cda7ac45a09af24b4c2e85aeacf359cb12c0 Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Fri, 13 Sep 2019 16:01:10 -0700 Subject: [PATCH 18/19] Workspace Test is up and running --- lib/workspace.rb | 47 ++-- test/cassettes/send_channel_message.yml | 298 ++++++++++++++++++++++++ test/workspace_test.rb | 27 ++- 3 files changed, 337 insertions(+), 35 deletions(-) create mode 100644 test/cassettes/send_channel_message.yml diff --git a/lib/workspace.rb b/lib/workspace.rb index cc892414..f3ad053d 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -42,42 +42,21 @@ def show_details tp @selected end - # module SlackApi - # BASE_URL = 'https://slack.com/api/' - # API_KEY = ENV['SLACK_TOKEN'] - - # def self.send_msg(message, channel) - # response = HTTParty.post( - # "#{BASE_URL}/chat.postMessage", - # body: { - # token: API_KEY, - # text: message, - # channel: channel}, headers: { 'Content-Type' => 'application/x-www-form-urlencoded' }) - - # unless response.code == 200 && response.parsed_response["ok"] - # raise SlackApiError, "Error when posting #{message} to #{channel}, error: #{response.parsed_response["error"]}" - # end - # return true - # end - # end - def send_message(message) uri = 'https://slack.com/api/' - - send_message = HTTParty.post( - "#{uri}/chat.postMessage", - body: { - token: ENV['SLACK_TOKEN'], - text: message, - channel: @selected.slack_id}, - headers:{ 'Content-Type' => 'application/x-www-form-urlencoded' }) - - unless send_message["ok"] - raise SlackApiError.new("Message Unable to Send") - end - - end + send_message = HTTParty.post("#{uri}/chat.postMessage", body: { + token: ENV['SLACK_TOKEN'], + text: message, + channel: @selected.slack_id }, + headers: {'Content-Type' => 'application/x-www-form-urlencoded'}) + unless send_message["ok"] + raise SlackApiError.new("Message Unable to Send") + end + return send_message end - end \ No newline at end of file + end + + end + \ No newline at end of file diff --git a/test/cassettes/send_channel_message.yml b/test/cassettes/send_channel_message.yml new file mode 100644 index 00000000..76aa8950 --- /dev/null +++ b/test/cassettes/send_channel_message.yml @@ -0,0 +1,298 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1180' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:52:58 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - c7a4d35f-7e18-4c09-8e7c-9c8779e68503 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - users:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-7zhp + X-Cache: + - Miss from cloudfront + Via: + - 1.1 6b03f32d70ff9f666371f69d2672d273.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - 5sv4g2A4zfEoiAF0b1a0TVTRZRNcMXGV9DX2jPiX_Cwv_wQ4O2t1aA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","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":"TMZTRGKCZ"},"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":"UMTGXDXD0","team_id":"TMZTRGKCZ","name":"dom_taylor","deleted":false,"color":"9f69e7","real_name":"dom_taylor","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"dom_taylor","real_name_normalized":"dom_taylor","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g1639eaa6e83","image_24":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/1639eaa6e83ba43b00e58d5f77c257cb.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0024-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568073948},{"id":"UMUS3K402","team_id":"TMZTRGKCZ","name":"holmstedtk","deleted":false,"color":"3c989f","real_name":"Katie + Kennedy","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Katie + Kennedy","real_name_normalized":"Katie Kennedy","display_name":"Katie Kennedy","display_name_normalized":"Katie + Kennedy","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g4c6094fcae2","image_24":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/4c6094fcae2a494baccbd128ef25afd5.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148491},{"id":"UMW5P9DHR","team_id":"TMZTRGKCZ","name":"nataliemtapias","deleted":false,"color":"e7392d","real_name":"Natalie + Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie + Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie + Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568415178,"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:54:47 GMT +- request: + method: get + uri: https://slack.com/api/channels.list?token= + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '824' + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:52:58 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - bf4aeb38-4b38-4a74-a213-f6e76d178684 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - channels:read + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-dzl1 + X-Cache: + - Miss from cloudfront + Via: + - 1.1 786d821259e050ebca76b8e357819f78.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - GbHiBEmB0Ulo418WyWI0WkuBVQagt-t1Sprxb8anAsUWu60dqAyKZQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UMTGXDXD0","last_set":1568073948},"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":"UMTGXDXD0","last_set":1568073948},"previous_names":[],"num_members":4},{"id":"CN6A8MNHW","name":"general","is_channel":true,"created":1568073948,"is_archived":false,"is_general":true,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"general","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UMTGXDXD0","last_set":1568073948},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UMTGXDXD0","last_set":1568073948},"previous_names":[],"num_members":4},{"id":"CN86A001M","name":"slack-cli","is_channel":true,"created":1568073949,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"slack-cli","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Really + fun topic for testing","creator":"UMW5P9DHR","last_set":1568150556},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CN9T10WBG","name":"pets","is_channel":true,"created":1568150583,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"pets","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMW5P9DHR"],"topic":{"value":"for + pets and pet-friendly people","creator":"UMW5P9DHR","last_set":1568150610},"purpose":{"value":"collects + pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what + is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:54:48 GMT +- request: + method: post + uri: https://slack.com/api//chat.postMessage + body: + encoding: UTF-8 + string: token=&text=hey&channel=CN5S0B30U + headers: + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:53:27 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 63eb2117-b26c-4058-b9eb-4c05110174e7 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - chat:write:bot + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-kftm + X-Cache: + - Miss from cloudfront + Via: + - 1.1 0bb842bd5868b86440983b936bb0adef.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - QWB_MzPufWNh75RnCDOwa8-q1MLmoZVn7O-yDbBt3xbrqfH5a-V_cg== + body: + encoding: UTF-8 + string: '{"ok":true,"channel":"CN5S0B30U","ts":"1568415207.000100","message":{"type":"message","subtype":"bot_message","text":"hey","ts":"1568415207.000100","username":"NATALIEBOT","bot_id":"BMW600G83"}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:55:16 GMT +- request: + method: post + uri: https://slack.com/api//chat.postMessage + body: + encoding: UTF-8 + string: token=&text=hey&channel=UMW5P9DHR + headers: + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Fri, 13 Sep 2019 22:56:12 GMT + Server: + - Apache + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - aff88289-430f-45db-b534-0bf1986723d3 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write:bot + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Xss-Protection: + - '0' + X-Accepted-Oauth-Scopes: + - chat:write:bot + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-tgzy + X-Cache: + - Miss from cloudfront + Via: + - 1.1 aa79182fd8d89401a4b0b62c8e776d07.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO51-C1 + X-Amz-Cf-Id: + - 2oHcCVLJ46I23WlW27PoEEvGr0T4Bg9stAfKxn_FiGcX4gEVj1z_Lg== + body: + encoding: UTF-8 + string: '{"ok":true,"channel":"DN7KJQATX","ts":"1568415372.000100","message":{"type":"message","subtype":"bot_message","text":"hey","ts":"1568415372.000100","username":"NATALIEBOT","bot_id":"BMW600G83"}}' + http_version: + recorded_at: Fri, 13 Sep 2019 22:58:02 GMT +recorded_with: VCR 5.0.0 diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 87be5c6e..703e66b4 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -26,4 +26,29 @@ expect{@channel_workspace.select_channel(slack_id: "12")}.must_raise SlackApiError end end -end + + describe "send_message" do + it "sends message to channel if exists" do + VCR.use_cassette("send_channel_message") do + @channel_workspace = SlackCLI::Workspace.new + @channel_workspace.select_channel(name: "random") + expect(@channel_workspace.send_message("hey")["ok"]).must_equal true + end + end + it "sends message to user if exists" do + VCR.use_cassette("send_channel_message") do + @user_workspace = SlackCLI::Workspace.new + @user_workspace.select_user(user_name: "nataliemtapias") + expect(@user_workspace.send_message("hey")["ok"]).must_equal true + end + end + it "should raise SlackApiError" do + VCR.use_cassette("send_channel_message") do + @user_workspace = SlackCLI::Workspace.new + expect{ @user_workspace.select_user(user_name: "joe_schmoe") + @user_workspace.send_message("hey")["ok"]}.must_raise SlackApiError + end + end + end + end + \ No newline at end of file From 16b95e18fd2bb3af7c2660bb034f422cf394983c Mon Sep 17 00:00:00 2001 From: Natalie Tapias Date: Fri, 13 Sep 2019 16:27:05 -0700 Subject: [PATCH 19/19] Finished some final touches on the main file. Tests passing and coverage is high. --- lib/channel.rb | 6 +-- lib/recipient.rb | 16 ------- lib/slack.rb | 26 ++++++------ lib/workspace.rb | 3 +- test/cassettes/list_channels.yml | 14 +++---- test/cassettes/list_users.yml | 16 +++---- test/cassettes/select_channel.yml | 30 ++++++------- test/cassettes/select_user.yml | 30 ++++++------- test/cassettes/send_channel_message.yml | 56 ++++++++++++------------- test/user_test.rb | 7 ---- test/workspace_test.rb | 13 +++++- 11 files changed, 99 insertions(+), 118 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index fba8df97..58e45dc3 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -1,9 +1,8 @@ require 'dotenv' require_relative 'recipient' - Dotenv.load -# we are returning an array of channels (2x what we are expecting) + module SlackCLI class Channel < Recipient attr_reader :slack_id, :name, :topic, :member_count @@ -33,8 +32,5 @@ def self.list end return array_of_channels end - end end - - diff --git a/lib/recipient.rb b/lib/recipient.rb index 6394d1be..681c4d82 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,12 +1,10 @@ require 'HTTParty' require 'dotenv' - class SlackApiError < StandardError end module SlackCLI - class Recipient def initialize end @@ -14,20 +12,6 @@ def initialize def self.list raise SlackApiError.new("Call this method in child class") end - - - - def self.get(url) - # # url = 'https://slack.com/api/channels.list' - # query_params = { - # token: ENV['SLACK_TOKEN']} - # response = HTTParty.get(url, params: query_params) - # unless response.code == 200 - # raise SearchError.new("Cannot find channels") - # end - # return response - end - end end diff --git a/lib/slack.rb b/lib/slack.rb index 4adeccec..ce4f477e 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -12,6 +12,7 @@ def main while selection == "1" || selection == "2" print_table(selection) + puts "************************************" learn_more_method(selection) message_menu menu_method @@ -23,17 +24,17 @@ def main def menu_method # menu_options = ["List Users in the Workspace", "List Channels in the Workspace", "Select User", "Select Channel", "Quit program"] + puts "*********** MAIN MENU **************" menu_options = ["List Users in the Workspace", "List Channels in the Workspace"] menu_options.each_with_index do |prompt, i| puts " #{i + 1}. #{prompt}" end puts "[Any Other Key] to Quit" + puts "************************************" end - def print_table(selection) # determines whether you are going to print users or channels - #Move Somewhere More Important if selection == "1" tp @workspace.users elsif selection == "2" @@ -41,13 +42,10 @@ def print_table(selection) end end -# show details -# @workspace.show_details - def learn_more_method(selection) # selection "1" is users # selection "2" is channels - puts "Enter \"a\" to search by Name\nEnter \"b\" to search by Slack ID\n[Any Other Key] to Quit" + puts "Enter \"a\" to search by Channel Name or User Name\nEnter \"b\" to search by Slack ID\n[Any Other Key] to Quit" find_by = gets.chomp if find_by == "a" @@ -88,15 +86,15 @@ def message_menu puts "Enter \"a\" to Show Details\nEnter \"b\" to Send Message\n[Any Other Key] to Quit" message_choice = gets.chomp if message_choice == "a" - @workspace.show_details + tp @workspace.show_details elsif message_choice == "b" - # begin - puts "Enter Message: " - message = gets.chomp - @workspace.send_message(message) - # rescue - # puts "Message Unable to Send" - # end + begin + puts "Enter Message: " + message = gets.chomp + @workspace.send_message(message) + rescue + puts "Message Unable to Send" + end else puts "Invalid Menu Choice" end diff --git a/lib/workspace.rb b/lib/workspace.rb index f3ad053d..cdee6310 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -5,6 +5,7 @@ Dotenv.load module SlackCLI + class Workspace attr_reader :users, :channels, :selected @@ -39,7 +40,7 @@ def select_user(user_name: nil, slack_id: nil) end def show_details - tp @selected + @selected end diff --git a/test/cassettes/list_channels.yml b/test/cassettes/list_channels.yml index 8354ed8c..c4279be0 100644 --- a/test/cassettes/list_channels.yml +++ b/test/cassettes/list_channels.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:46:12 GMT + - Fri, 13 Sep 2019 23:09:29 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 883d662f-e221-4def-b466-c385f4e9271c + - 35abd46a-9519-4514-8163-fcbfc031fd34 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-xvg4 + - haproxy-www-f8tg X-Cache: - Miss from cloudfront Via: - - 1.1 aa42484f82c16d99015c599631def20c.cloudfront.net (CloudFront) + - 1.1 6a6653dfb47ccc5082f2a5b9d0d168ce.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19 + - SEA19-C1 X-Amz-Cf-Id: - - QOyxVs1sJKrtMU6phfjqFM3CDqnxlDTYpoFD5iK1eTE8MCfXXKz6uw== + - V724dSu0oGq2KTg-DKXz4ansrAOM2JQqZhoUDNZXu-bXVnMWYEB2eg== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work @@ -80,5 +80,5 @@ http_interactions: pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:48:02 GMT + recorded_at: Fri, 13 Sep 2019 23:11:19 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/list_users.yml b/test/cassettes/list_users.yml index 0c3bd049..cf9dcd3c 100644 --- a/test/cassettes/list_users.yml +++ b/test/cassettes/list_users.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:46:12 GMT + - Fri, 13 Sep 2019 23:09:29 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - d2361b3d-faa5-48e0-a75b-374cf3751e81 + - 21aa5101-3cf9-4f06-ba9f-cb01ed7eb6c7 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-qdiq + - haproxy-www-139j X-Cache: - Miss from cloudfront Via: - - 1.1 2dc84924ce70e874a873764fe1415858.cloudfront.net (CloudFront) + - 1.1 34f8ef0e4c880df0650a814412a26ea6.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19 + - SEA19-C1 X-Amz-Cf-Id: - - QeYSGz5lHUOR3Yx6K9mCFpN-1LMayCAPATpwkBP-XodosTXlOSticA== + - G2ZQ_I_FatVeIdECCQb7XagjodS3cimvwDcIETqbYdS8u5ikoyti9Q== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -77,7 +77,7 @@ http_interactions: Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568407572,"response_metadata":{"next_cursor":""}}' + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568416169,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:48:02 GMT + recorded_at: Fri, 13 Sep 2019 23:11:19 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/select_channel.yml b/test/cassettes/select_channel.yml index 0a410dc8..f1347492 100644 --- a/test/cassettes/select_channel.yml +++ b/test/cassettes/select_channel.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:46:13 GMT + - Fri, 13 Sep 2019 23:09:30 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 64bb47af-4d4d-42bf-ba32-904b8eed0444 + - 2a240938-7fcc-459b-a47f-841ccefb8ef6 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-aaa1 + - haproxy-www-1bev X-Cache: - Miss from cloudfront Via: - - 1.1 44c580258abdf211fd3f1cae43c497e9.cloudfront.net (CloudFront) + - 1.1 42ef990e439ae115ff739f04e3945234.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19 + - SEA19-C1 X-Amz-Cf-Id: - - pqAR0mdQjw9gwfW4Q3ouLJoKNtp9oP2kSLJRdGVv4NAVcTjtjklONw== + - feEcx1nzlPDjIa9XWPNuP8K4WQ9k1ddnIR3UpA1aYjyzP_AvjX_hoQ== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -77,9 +77,9 @@ http_interactions: Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568407573,"response_metadata":{"next_cursor":""}}' + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568416170,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:48:03 GMT + recorded_at: Fri, 13 Sep 2019 23:11:19 GMT - request: method: get uri: https://slack.com/api/channels.list?token= @@ -105,13 +105,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:46:15 GMT + - Fri, 13 Sep 2019 23:09:30 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 249d4b5a-f971-46d2-bc34-794266ca0a4d + - 2f9cd3f2-433a-4124-9b9c-10877490388e X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -137,15 +137,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-nujt + - haproxy-www-ecjy X-Cache: - Miss from cloudfront Via: - - 1.1 e7a6b3b39a146e70091418a22590a905.cloudfront.net (CloudFront) + - 1.1 c9b161639a9353c2354b895548ea9fca.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19 + - SEA19-C1 X-Amz-Cf-Id: - - x7zQUUfNLb7s9muEris9TUlqWUKEdagyZV7s_5urUpGjiRmWT-yP7Q== + - gwV2ofnrGedNy9CCMVF7BmgJkQ4rFO76owSJvP1HBmHEzSplS4QZdg== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work @@ -160,5 +160,5 @@ http_interactions: pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:48:04 GMT + recorded_at: Fri, 13 Sep 2019 23:11:20 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/select_user.yml b/test/cassettes/select_user.yml index 14d49abb..2ecac517 100644 --- a/test/cassettes/select_user.yml +++ b/test/cassettes/select_user.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:46:16 GMT + - Fri, 13 Sep 2019 23:09:30 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 64846875-1c32-40b0-9a64-0eb52af3723b + - 8f1aeb85-0a34-4f9f-ad62-3139bc3c7ea2 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-nvih + - haproxy-www-gxt6 X-Cache: - Miss from cloudfront Via: - - 1.1 5ab60a1edc7a4b1ee4a5fb18ec06ce15.cloudfront.net (CloudFront) + - 1.1 f126db770f21f288439f44d357978a27.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19 + - SEA19-C1 X-Amz-Cf-Id: - - HBeg388PX3vfc1u_Uy-AgCoM1lhqQL2Kshd3PUzSOtlbSdoA0GTxvA== + - XXU1i0J7-XoQJVTFwXL5n4PXYnVAECJ9yZDnQy1XCQIK2qYht03nGg== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -77,9 +77,9 @@ http_interactions: Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568407576,"response_metadata":{"next_cursor":""}}' + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568416170,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:48:06 GMT + recorded_at: Fri, 13 Sep 2019 23:11:19 GMT - request: method: get uri: https://slack.com/api/channels.list?token= @@ -105,13 +105,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 20:46:16 GMT + - Fri, 13 Sep 2019 23:09:30 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - cb84efdf-20a9-4322-a4af-d6b8e648ad3c + - 90702de1-228a-4a90-88ed-c8c046483108 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -137,15 +137,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-wuu0 + - haproxy-www-flcx X-Cache: - Miss from cloudfront Via: - - 1.1 7aedac78d939212abc281241e82d26a7.cloudfront.net (CloudFront) + - 1.1 aabd01c4a20dae837d162bd972422efc.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19 + - SEA19-C1 X-Amz-Cf-Id: - - XPRlF5XBnd8Jh9AursziopiHBMN0jt9CAtMjz6WL51hX0-XLkXhUBQ== + - aaNIytIJVdkokm-IqZ1J3aqbHyikBj9KKXyzIMCB0xU6k9e7XoZdyQ== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work @@ -160,5 +160,5 @@ http_interactions: pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 20:48:06 GMT + recorded_at: Fri, 13 Sep 2019 23:11:19 GMT recorded_with: VCR 5.0.0 diff --git a/test/cassettes/send_channel_message.yml b/test/cassettes/send_channel_message.yml index 76aa8950..7153ef95 100644 --- a/test/cassettes/send_channel_message.yml +++ b/test/cassettes/send_channel_message.yml @@ -25,13 +25,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:52:58 GMT + - Fri, 13 Sep 2019 23:09:29 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - c7a4d35f-7e18-4c09-8e7c-9c8779e68503 + - b0861a45-7143-4469-a317-43d0b6b270bb X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -57,15 +57,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-7zhp + - haproxy-www-qt4f X-Cache: - Miss from cloudfront Via: - - 1.1 6b03f32d70ff9f666371f69d2672d273.cloudfront.net (CloudFront) + - 1.1 995664ee945c06fc706b5cb8e0e650dc.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - SEA19-C1 X-Amz-Cf-Id: - - 5sv4g2A4zfEoiAF0b1a0TVTRZRNcMXGV9DX2jPiX_Cwv_wQ4O2t1aA== + - oIIbjPYGl3sgbx4W5sgy1IHisUW20N0tZXsPsfQS_7o3JtFxMuR1TQ== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TMZTRGKCZ","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -77,9 +77,9 @@ http_interactions: Tapias","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Natalie Tapias","real_name_normalized":"Natalie Tapias","display_name":"Natalie Tapias","display_name_normalized":"Natalie Tapias","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g84c1455fade","image_24":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/84c1455fadee76ee25d39ccb9670b4b4.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0004-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568148346,"has_2fa":false},{"id":"UN8GKRXK8","team_id":"TMZTRGKCZ","name":"cpgeorgina.sanchez","deleted":false,"color":"4bbe2e","real_name":"Georgina","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568415178,"response_metadata":{"next_cursor":""}}' + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Georgina","real_name_normalized":"Georgina","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23b757c8a5c","image_24":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23b757c8a5ce554904d7122dabceba36.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F80588%2Fimg%2Favatars%2Fuser_shapes%2Fava_0023-512.png","status_text_canonical":"","team":"TMZTRGKCZ"},"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":1568091134}],"cache_ts":1568416169,"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:54:47 GMT + recorded_at: Fri, 13 Sep 2019 23:11:18 GMT - request: method: get uri: https://slack.com/api/channels.list?token= @@ -105,13 +105,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:52:58 GMT + - Fri, 13 Sep 2019 23:09:29 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - bf4aeb38-4b38-4a74-a213-f6e76d178684 + - f96319d0-9f8e-4c28-8b8b-16b7b96dad24 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -137,15 +137,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-dzl1 + - haproxy-www-x62j X-Cache: - Miss from cloudfront Via: - - 1.1 786d821259e050ebca76b8e357819f78.cloudfront.net (CloudFront) + - 1.1 60b744e5b364d04abea9fa6686121242.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - SEA19-C1 X-Amz-Cf-Id: - - GbHiBEmB0Ulo418WyWI0WkuBVQagt-t1Sprxb8anAsUWu60dqAyKZQ== + - 7ZiuRU3-3GGEHDFRjyeNpAOka9z49V-2kUW2FutYgP-X24HJZ_7ZlA== body: encoding: ASCII-8BIT string: '{"ok":true,"channels":[{"id":"CN5S0B30U","name":"random","is_channel":true,"created":1568073948,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMTGXDXD0","name_normalized":"random","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR","UN8GKRXK8"],"topic":{"value":"Non-work @@ -160,7 +160,7 @@ http_interactions: pets","creator":"UMW5P9DHR","last_set":1568150584},"previous_names":[],"num_members":2},{"id":"CNANHC6LF","name":"spaghetti","is_channel":true,"created":1568224227,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"spaghetti","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMTGXDXD0","UMUS3K402","UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":3},{"id":"CNCQ49V7Y","name":"a-new-channel","is_channel":true,"created":1568320692,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"a-new-channel","is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":[],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":0},{"id":"CNCQ53EDC","name":"natalie-dinner-plans","is_channel":true,"created":1568320726,"is_archived":false,"is_general":false,"unlinked":0,"creator":"UMW5P9DHR","name_normalized":"natalie-dinner-plans","is_shared":false,"is_org_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"members":["UMW5P9DHR"],"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"what is natalie eating for dinner","creator":"UMW5P9DHR","last_set":1568320727},"previous_names":[],"num_members":1}],"response_metadata":{"next_cursor":""}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:54:48 GMT + recorded_at: Fri, 13 Sep 2019 23:11:18 GMT - request: method: post uri: https://slack.com/api//chat.postMessage @@ -182,13 +182,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:53:27 GMT + - Fri, 13 Sep 2019 23:09:29 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - 63eb2117-b26c-4058-b9eb-4c05110174e7 + - ba9c4289-9a34-43b3-b643-515a563869fc X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -214,20 +214,20 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-kftm + - haproxy-www-1m6r X-Cache: - Miss from cloudfront Via: - - 1.1 0bb842bd5868b86440983b936bb0adef.cloudfront.net (CloudFront) + - 1.1 3a6260aec53985f2e6eb8a637c47918d.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - SEA19-C1 X-Amz-Cf-Id: - - QWB_MzPufWNh75RnCDOwa8-q1MLmoZVn7O-yDbBt3xbrqfH5a-V_cg== + - __PBKbCSvHjXPneFZZXr4J-ipoHa8NTGu-BEYOjj0HHaxx-8P42ZyQ== body: encoding: UTF-8 - string: '{"ok":true,"channel":"CN5S0B30U","ts":"1568415207.000100","message":{"type":"message","subtype":"bot_message","text":"hey","ts":"1568415207.000100","username":"NATALIEBOT","bot_id":"BMW600G83"}}' + string: '{"ok":true,"channel":"CN5S0B30U","ts":"1568416169.000200","message":{"type":"message","subtype":"bot_message","text":"hey","ts":"1568416169.000200","username":"NATALIEBOT","bot_id":"BMW600G83"}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:55:16 GMT + recorded_at: Fri, 13 Sep 2019 23:11:18 GMT - request: method: post uri: https://slack.com/api//chat.postMessage @@ -249,13 +249,13 @@ http_interactions: Connection: - keep-alive Date: - - Fri, 13 Sep 2019 22:56:12 GMT + - Fri, 13 Sep 2019 23:09:29 GMT Server: - Apache X-Content-Type-Options: - nosniff X-Slack-Req-Id: - - aff88289-430f-45db-b534-0bf1986723d3 + - 82861bc3-2578-49cf-b9d5-457b57c9cca2 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write:bot Expires: @@ -281,18 +281,18 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-tgzy + - haproxy-www-pl73 X-Cache: - Miss from cloudfront Via: - - 1.1 aa79182fd8d89401a4b0b62c8e776d07.cloudfront.net (CloudFront) + - 1.1 3a6260aec53985f2e6eb8a637c47918d.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - HIO51-C1 + - SEA19-C1 X-Amz-Cf-Id: - - 2oHcCVLJ46I23WlW27PoEEvGr0T4Bg9stAfKxn_FiGcX4gEVj1z_Lg== + - nHcMxPhGHf7o6VypmMFsvk0XefjibJXcqrbZrg30hpWElK3O2rdn8g== body: encoding: UTF-8 - string: '{"ok":true,"channel":"DN7KJQATX","ts":"1568415372.000100","message":{"type":"message","subtype":"bot_message","text":"hey","ts":"1568415372.000100","username":"NATALIEBOT","bot_id":"BMW600G83"}}' + string: '{"ok":true,"channel":"DN7KJQATX","ts":"1568416169.000200","message":{"type":"message","subtype":"bot_message","text":"hey","ts":"1568416169.000200","username":"NATALIEBOT","bot_id":"BMW600G83"}}' http_version: - recorded_at: Fri, 13 Sep 2019 22:58:02 GMT + recorded_at: Fri, 13 Sep 2019 23:11:19 GMT recorded_with: VCR 5.0.0 diff --git a/test/user_test.rb b/test/user_test.rb index 748da9a7..7cf31d0f 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -11,13 +11,6 @@ end end - # it "should be a channel" do - # end - # it "should have appropriate attributes" do - # end - # it "should have id respond to a string" do - # end - it "should return an Array" do VCR.use_cassette("list_users") do expect(SlackCLI::User.list).must_be_instance_of Array diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 703e66b4..5940deb9 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1,6 +1,5 @@ require_relative 'test_helper' - describe "SlackCLI::Workspace" do describe "select_user" do @@ -42,7 +41,7 @@ expect(@user_workspace.send_message("hey")["ok"]).must_equal true end end - it "should raise SlackApiError" do + it "should raise SlackApiError if unable to send" do VCR.use_cassette("send_channel_message") do @user_workspace = SlackCLI::Workspace.new expect{ @user_workspace.select_user(user_name: "joe_schmoe") @@ -50,5 +49,15 @@ end end end + + describe "show_details" do + it "should show a list of details" do + VCR.use_cassette("send_channel_message") do + @test_workspace = SlackCLI::Workspace.new + @test_workspace.select_user(user_name: "nataliemtapias") + expect(@test_workspace.show_details).must_be_instance_of SlackCLI::User + end + end + end end \ No newline at end of file