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.
- checksums.yaml +7 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +35 -0
- data/LICENSE +21 -0
- data/README.md +107 -0
- data/Rakefile +9 -0
- data/essential.gemspec +26 -0
- data/lib/essential.rb +32 -0
- data/lib/essential/account.rb +56 -0
- data/lib/essential/client.rb +65 -0
- data/lib/essential/errors/api_error.rb +54 -0
- data/lib/essential/messaging/channel.rb +36 -0
- data/lib/essential/messaging/message.rb +68 -0
- data/lib/essential/messaging/property.rb +27 -0
- data/lib/essential/messaging/subscriber.rb +64 -0
- data/lib/essential/messaging/transport.rb +29 -0
- data/lib/essential/resource.rb +127 -0
- data/lib/essential/resource/attr_methods.rb +65 -0
- data/lib/essential/resource/attr_relations.rb +81 -0
- data/lib/essential/resource/create.rb +21 -0
- data/lib/essential/resource/delete.rb +20 -0
- data/lib/essential/resource/list.rb +17 -0
- data/lib/essential/resource/paginator_proxy.rb +115 -0
- data/lib/essential/resource/update.rb +26 -0
- data/lib/essential/version.rb +3 -0
- data/test/essential/account_test.rb +22 -0
- data/test/essential/messaging/channel_test.rb +62 -0
- data/test/essential/messaging/message_test.rb +119 -0
- data/test/essential/messaging/property_test.rb +27 -0
- data/test/essential/messaging/subscriber_test.rb +106 -0
- data/test/essential/messaging/transport_test.rb +37 -0
- data/test/integration/alternate_authentication_test.rb +128 -0
- data/test/test_helper.rb +34 -0
- metadata +125 -0
@@ -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
|
data/test/test_helper.rb
ADDED
@@ -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
|