essential 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,37 @@
1
+ require 'test_helper'
2
+
3
+ class TransportTest < EssentialTest
4
+ include Essential::Messaging
5
+
6
+ def setup
7
+ @first = Transport.list.first
8
+ end
9
+
10
+ def test_retrieve
11
+ found = Transport.retrieve(@first.sid)
12
+
13
+ assert_equal found, @first
14
+ end
15
+
16
+ def test_list
17
+ all = Transport.list
18
+
19
+ all_sids = all.map(&:sid)
20
+
21
+ assert all_sids.include?(@first.sid)
22
+ assert_equal all_sids.size, all.size
23
+ end
24
+
25
+ def test_relations
26
+ mess = @first.messages
27
+ refute_equal 0, mess.size
28
+ assert mess.all? {|m| Message === m}
29
+
30
+ subs = @first.subscribers
31
+ refute_equal 0, subs.size
32
+ assert subs.all? {|s| Subscriber === s}
33
+
34
+ channel = @first.channel
35
+ assert_equal @first.channel_sid, channel.sid
36
+ end
37
+ end
@@ -0,0 +1,128 @@
1
+ require 'test_helper'
2
+
3
+ class AlternateAuthenticationTest < EssentialTest
4
+ def setup
5
+ @account = Essential::Account.retrieve
6
+ @alt_account = Essential::Account.retrieve(
7
+ headers: {sid: 'eJ1WDpPBufJuDDYVO5xrKg', token: 'db72ed0fc101d65c5354834191d833e21a'}
8
+ )
9
+
10
+ refute_nil @alt_account, 'missing @alt_account: your dev setup needs help!'
11
+ refute_equal @account.sid, @alt_account.sid, '@account and @alt_account must be different'
12
+ refute_equal @account.token, @alt_account.token, '@account and @alt_account must be different'
13
+ end
14
+
15
+ def test_messages_account
16
+ evaluate_relations(obj: 'ac.messages',
17
+ default: @account.messages,
18
+ alterate: @alt_account.messages)
19
+
20
+ dm = Essential::Messaging::Message.list
21
+ am = Essential::Messaging::Message.list(
22
+ headers: {sid: @alt_account.sid, token: @alt_account.token}
23
+ )
24
+
25
+ evaluate_relations(obj: 'ac.messages', default: dm, alterate: am)
26
+ end
27
+
28
+ def test_messages_subscriber
29
+ dsub = @account.messages.first.subscriber
30
+ asub = @alt_account.messages.first.subscriber
31
+
32
+ evaluate_relations(obj: 'sub.messages', default: dsub.messages, alterate: asub.messages)
33
+ end
34
+
35
+ def test_messages_channel
36
+ dch = @account.messages.first.channel
37
+ ach = @alt_account.messages.first.channel
38
+
39
+ evaluate_relations(obj: 'ch.messages', default: dch.messages, alterate: ach.messages)
40
+ end
41
+
42
+ def test_messages_transport
43
+ dtr = @account.messages.first.transport
44
+ atr = @alt_account.messages.first.transport
45
+
46
+ evaluate_relations(obj: 'tr.messages', default: dtr.messages, alterate: atr.messages)
47
+ end
48
+
49
+ def test_channels_account
50
+ evaluate_relations(obj: 'ac.channels',
51
+ default: @account.channels,
52
+ alterate: @alt_account.channels)
53
+
54
+ alts = Essential::Messaging::Channel.list(
55
+ headers: {sid: @alt_account.sid, token: @alt_account.token}
56
+ )
57
+ evaluate_relations(obj: 'ac.channels',
58
+ default: Essential::Messaging::Channel.list,
59
+ alterate: alts)
60
+ end
61
+
62
+ def test_subscribers_account
63
+ evaluate_relations(obj: 'ac.subscribers',
64
+ default: @account.subscribers,
65
+ alterate: @alt_account.subscribers)
66
+
67
+ alts = Essential::Messaging::Subscriber.list(
68
+ headers: {sid: @alt_account.sid, token: @alt_account.token}
69
+ )
70
+ evaluate_relations(obj: 'ac.subscribers',
71
+ default: Essential::Messaging::Subscriber.list,
72
+ alterate: alts)
73
+ end
74
+
75
+ def test_subscribers_channel
76
+ dch = @account.subscribers.first.channel
77
+ ach = @alt_account.subscribers.first.channel
78
+
79
+ evaluate_relations(obj: 'ch.subscribers',
80
+ default: dch.subscribers,
81
+ alterate: ach.subscribers)
82
+ end
83
+
84
+ def test_subscribers_transport
85
+ dtr = @account.subscribers.first.transport
86
+ atr = @alt_account.subscribers.first.transport
87
+
88
+ evaluate_relations(obj: 'tr.subscribers',
89
+ default: dtr.subscribers,
90
+ alterate: atr.subscribers)
91
+ end
92
+
93
+ def test_transports_account
94
+ evaluate_relations(obj: 'ac.transports',
95
+ default: @account.transports,
96
+ alterate: @alt_account.transports)
97
+
98
+ alts = Essential::Messaging::Transport.list(
99
+ headers: {sid: @alt_account.sid, token: @alt_account.token}
100
+ )
101
+ evaluate_relations(obj: 'ac.transports',
102
+ default: Essential::Messaging::Transport.list,
103
+ alterate: alts)
104
+ end
105
+
106
+ def test_transports_channel
107
+ dch = @account.transports.first.channel
108
+ ach = @alt_account.transports.first.channel
109
+
110
+ evaluate_relations(obj: 'ch.transports',
111
+ default: dch.transports,
112
+ alterate: ach.transports)
113
+ end
114
+
115
+ protected
116
+
117
+ def evaluate_relations(obj:, default:, alterate:)
118
+ refute_equal 0, default.size, format('missing default %s: your dev setup needs help!', obj)
119
+ refute_equal 0, alterate.size, format('missing alterate %s: your dev setup needs help!', obj)
120
+
121
+ default = Set.new(default.map(&:sid))
122
+ alterate = Set.new(alterate.map(&:sid))
123
+
124
+ refute_equal default, alterate
125
+ assert_equal Set.new, (default & alterate), format('%s sids may not overlap', obj)
126
+ end
127
+
128
+ end
@@ -0,0 +1,34 @@
1
+ require 'minitest/autorun'
2
+ require 'essential'
3
+
4
+ require 'securerandom'
5
+ require 'set'
6
+
7
+ if ENV.key?('ESSENTIAL_SID') && ENV.key?('ESSENTIAL_TOKEN')
8
+ $debug = false
9
+ Essential.api_base = ENV['ESSENTIAL_URL'] || 'http://127.0.0.1:3000'
10
+ Essential.sid = ENV['ESSENTIAL_SID']
11
+ Essential.token = ENV['ESSENTIAL_TOKEN']
12
+ else
13
+ # TODO: # require 'webmock/minitest'
14
+ # mock all responses?
15
+ end
16
+
17
+ class EssentialTest < Minitest::Test
18
+
19
+ protected
20
+
21
+ def assert_error_with_params(*params, &_)
22
+ error = assert_raises Essential::APIError do
23
+ yield
24
+ end
25
+
26
+ refute_nil error.params, 'APIError must have params'
27
+
28
+ expected_params = Set.new(params.map(&:to_s))
29
+ actual_params = Set.new(error.params.keys.map(&:to_s))
30
+
31
+ assert_equal expected_params, actual_params, 'APIError params must match exactly'
32
+ end
33
+
34
+ end
metadata ADDED
@@ -0,0 +1,125 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: essential
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Brendan Ribera
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.8'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.5'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.8'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.8'
55
+ description: A GEM for interacting with the Essential.to service.
56
+ email: brendan@madronavl.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - Gemfile
62
+ - Gemfile.lock
63
+ - LICENSE
64
+ - README.md
65
+ - Rakefile
66
+ - essential.gemspec
67
+ - lib/essential.rb
68
+ - lib/essential/account.rb
69
+ - lib/essential/client.rb
70
+ - lib/essential/errors/api_error.rb
71
+ - lib/essential/messaging/channel.rb
72
+ - lib/essential/messaging/message.rb
73
+ - lib/essential/messaging/property.rb
74
+ - lib/essential/messaging/subscriber.rb
75
+ - lib/essential/messaging/transport.rb
76
+ - lib/essential/resource.rb
77
+ - lib/essential/resource/attr_methods.rb
78
+ - lib/essential/resource/attr_relations.rb
79
+ - lib/essential/resource/create.rb
80
+ - lib/essential/resource/delete.rb
81
+ - lib/essential/resource/list.rb
82
+ - lib/essential/resource/paginator_proxy.rb
83
+ - lib/essential/resource/update.rb
84
+ - lib/essential/version.rb
85
+ - test/essential/account_test.rb
86
+ - test/essential/messaging/channel_test.rb
87
+ - test/essential/messaging/message_test.rb
88
+ - test/essential/messaging/property_test.rb
89
+ - test/essential/messaging/subscriber_test.rb
90
+ - test/essential/messaging/transport_test.rb
91
+ - test/integration/alternate_authentication_test.rb
92
+ - test/test_helper.rb
93
+ homepage: http://github.com/madrona-labs/essential-ruby
94
+ licenses:
95
+ - MIT
96
+ metadata: {}
97
+ post_install_message:
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ requirements: []
112
+ rubyforge_project:
113
+ rubygems_version: 2.4.5.1
114
+ signing_key:
115
+ specification_version: 4
116
+ summary: Essential Ruby Library
117
+ test_files:
118
+ - test/essential/account_test.rb
119
+ - test/essential/messaging/channel_test.rb
120
+ - test/essential/messaging/message_test.rb
121
+ - test/essential/messaging/property_test.rb
122
+ - test/essential/messaging/subscriber_test.rb
123
+ - test/essential/messaging/transport_test.rb
124
+ - test/integration/alternate_authentication_test.rb
125
+ - test/test_helper.rb