xednese 0.0.1 → 0.1.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 +4 -4
- data/Gemfile +2 -1
- data/README.md +22 -3
- data/Rakefile +8 -2
- data/bin/xednese +16 -0
- data/lib/xednese.rb +36 -9
- data/lib/xednese/account.rb +37 -0
- data/lib/xednese/account/dispatcher.rb +30 -0
- data/lib/xednese/account/messages.rb +47 -0
- data/lib/xednese/accounts.rb +14 -6
- data/lib/xednese/batch.rb +68 -0
- data/lib/xednese/batches.rb +33 -0
- data/lib/xednese/client.rb +46 -0
- data/lib/xednese/messages.rb +24 -0
- data/lib/xednese/requests/account.rb +17 -0
- data/lib/xednese/requests/batch.rb +17 -0
- data/lib/xednese/requests/messages.rb +1 -1
- data/lib/xednese/responses/batch.rb +20 -0
- data/lib/xednese/responses/batches.rb +15 -0
- data/lib/xednese/responses/status.rb +22 -0
- data/lib/xednese/users.rb +3 -8
- data/lib/xednese/version.rb +1 -1
- data/scenarios/accounts/getting_all_accounts.rb +37 -0
- data/scenarios/accounts/getting_an_account.rb +29 -0
- data/scenarios/helper.rb +113 -0
- data/spec/helper.rb +3 -3
- data/spec/xednese/{dispatcher_spec.rb → account/dispatcher_spec.rb} +5 -4
- data/spec/xednese/account/messages_spec.rb +56 -0
- data/spec/xednese/account_spec.rb +93 -0
- data/spec/xednese/accounts_spec.rb +19 -14
- data/spec/xednese/batch_spec.rb +121 -0
- data/spec/xednese/batches_spec.rb +70 -0
- data/spec/xednese/client_spec.rb +76 -2
- data/spec/xednese/messages_spec.rb +25 -1
- data/spec/xednese/requests/account_spec.rb +20 -0
- data/spec/xednese/requests/batch_spec.rb +20 -0
- data/spec/xednese/requests/messages_spec.rb +1 -1
- data/spec/xednese/responses/account_spec.rb +1 -1
- data/spec/xednese/responses/accounts_spec.rb +1 -1
- data/spec/xednese/responses/batch_spec.rb +83 -0
- data/spec/xednese/responses/batches_spec.rb +95 -0
- data/spec/xednese/responses/message_dispatcher_headers_spec.rb +1 -1
- data/spec/xednese/responses/message_header_spec.rb +1 -1
- data/spec/xednese/responses/message_headers_spec.rb +1 -1
- data/spec/xednese/responses/status_spec.rb +55 -0
- data/spec/xednese/users_spec.rb +1 -12
- data/spec/xednese_spec.rb +52 -12
- metadata +58 -8
- data/lib/xednese/dispatcher.rb +0 -20
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Esendex::Account do
|
4
|
+
let(:response) { mock }
|
5
|
+
let(:credentials) { dummy_credentials }
|
6
|
+
subject { Esendex::Account.new(credentials, response) }
|
7
|
+
|
8
|
+
[:id, :reference, :address, :messages_remaining,
|
9
|
+
:type, :expires_on, :role].each do |value|
|
10
|
+
describe "##{value}" do
|
11
|
+
before {
|
12
|
+
@value = mock
|
13
|
+
response.expects(value).returns(@value)
|
14
|
+
}
|
15
|
+
|
16
|
+
it "returns the #{value} from the response" do
|
17
|
+
subject.send(value).must_equal @value
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#label' do
|
23
|
+
let(:label) { mock }
|
24
|
+
before { response.expects(:label).returns(label) }
|
25
|
+
|
26
|
+
it 'returns the label from the response' do
|
27
|
+
subject.label.must_equal label
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#label=' do
|
32
|
+
let(:id) { "587329572387275372" }
|
33
|
+
let(:new_label) { "this is my account" }
|
34
|
+
let(:request) { mock }
|
35
|
+
|
36
|
+
before {
|
37
|
+
subject
|
38
|
+
.expects(:id)
|
39
|
+
.returns(id)
|
40
|
+
|
41
|
+
Esendex::Requests::Account
|
42
|
+
.expects(:new)
|
43
|
+
.with(label: new_label)
|
44
|
+
.returns(request)
|
45
|
+
|
46
|
+
Esendex::Client
|
47
|
+
.expects(:put)
|
48
|
+
.with(credentials, "v1.0/accounts/#{id}", request)
|
49
|
+
.yields(200)
|
50
|
+
}
|
51
|
+
|
52
|
+
it 'sets the label for the account' do
|
53
|
+
(subject.label = new_label).must_equal new_label
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'makes #label return the new label' do
|
57
|
+
subject.label = new_label
|
58
|
+
subject.label.must_equal new_label
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#dispatcher' do
|
63
|
+
let(:reference) { mock }
|
64
|
+
let(:dispatcher) { mock }
|
65
|
+
|
66
|
+
it 'returns a new Dispatcher instance' do
|
67
|
+
subject.expects(:reference).returns(reference)
|
68
|
+
|
69
|
+
Esendex::Account::Dispatcher
|
70
|
+
.expects(:new)
|
71
|
+
.with(credentials, reference)
|
72
|
+
.returns(dispatcher)
|
73
|
+
|
74
|
+
subject.dispatcher.must_equal dispatcher
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe '#messages' do
|
79
|
+
let(:reference) { mock }
|
80
|
+
let(:messages) { mock }
|
81
|
+
|
82
|
+
it 'returns a new Messages instance' do
|
83
|
+
subject.expects(:reference).returns(reference)
|
84
|
+
|
85
|
+
Esendex::Account::Messages
|
86
|
+
.expects(:new)
|
87
|
+
.with(credentials, reference)
|
88
|
+
.returns(messages)
|
89
|
+
|
90
|
+
subject.messages.must_equal messages
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -1,19 +1,14 @@
|
|
1
|
-
|
1
|
+
require 'helper'
|
2
2
|
|
3
3
|
describe Esendex::Accounts do
|
4
|
-
let(:credentials) {
|
4
|
+
let(:credentials) { dummy_credentials }
|
5
5
|
subject { Esendex::Accounts.new(credentials) }
|
6
6
|
|
7
|
-
describe '#reference' do
|
8
|
-
it 'returns the account reference' do
|
9
|
-
subject.reference.must_equal credentials.account_reference
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
7
|
describe '#each' do
|
14
8
|
let(:data) { mock }
|
9
|
+
let(:data_list) { [mock, mock] }
|
10
|
+
let(:accounts) { stub(accounts: data_list) }
|
15
11
|
let(:account_list) { [mock, mock] }
|
16
|
-
let(:accounts) { stub(accounts: account_list) }
|
17
12
|
|
18
13
|
before {
|
19
14
|
Esendex::Client
|
@@ -29,7 +24,11 @@ describe Esendex::Accounts do
|
|
29
24
|
|
30
25
|
accounts
|
31
26
|
.expects(:accounts)
|
32
|
-
.returns(
|
27
|
+
.returns(data_list)
|
28
|
+
|
29
|
+
data_list.zip(account_list).each do |d, a|
|
30
|
+
Esendex::Account.expects(:new).with(credentials, d).returns(a)
|
31
|
+
end
|
33
32
|
}
|
34
33
|
|
35
34
|
it 'retrieves all accounts' do
|
@@ -43,9 +42,10 @@ describe Esendex::Accounts do
|
|
43
42
|
end
|
44
43
|
|
45
44
|
describe '#get' do
|
46
|
-
let(:id)
|
47
|
-
let(:data)
|
48
|
-
let(:
|
45
|
+
let(:id) { SecureRandom.uuid }
|
46
|
+
let(:data) { mock }
|
47
|
+
let(:response) { mock }
|
48
|
+
let(:account) { mock }
|
49
49
|
|
50
50
|
before {
|
51
51
|
Esendex::Client
|
@@ -57,10 +57,15 @@ describe Esendex::Accounts do
|
|
57
57
|
Esendex::Responses::Account
|
58
58
|
.expects(:deserialise)
|
59
59
|
.with(data)
|
60
|
+
.returns(response)
|
61
|
+
|
62
|
+
Esendex::Account
|
63
|
+
.expects(:new)
|
64
|
+
.with(credentials, response)
|
60
65
|
.returns(account)
|
61
66
|
}
|
62
67
|
|
63
|
-
it 'retrieves the specified
|
68
|
+
it 'retrieves the specified account' do
|
64
69
|
subject.get(id).must_equal account
|
65
70
|
end
|
66
71
|
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Esendex::Batch do
|
4
|
+
let(:credentials) { dummy_credentials }
|
5
|
+
let(:response) { mock }
|
6
|
+
subject { Esendex::Batch.new(credentials, response) }
|
7
|
+
|
8
|
+
[:id, :created_at, :batch_size, :persisted_batch_size,
|
9
|
+
:account_reference, :created_by, :name].each do |thing|
|
10
|
+
describe "##{thing}" do
|
11
|
+
before {
|
12
|
+
@value = mock
|
13
|
+
response.expects(thing).returns(@value)
|
14
|
+
}
|
15
|
+
|
16
|
+
it "returns the #{thing} from the response" do
|
17
|
+
subject.send(thing).must_equal @value
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#status' do
|
23
|
+
let(:status) { mock(acknowledged: 0,
|
24
|
+
authorisation_failed: 0,
|
25
|
+
connecting: 0,
|
26
|
+
delivered: 0,
|
27
|
+
failed: 0,
|
28
|
+
partially_delivered: 0,
|
29
|
+
rejected: 0,
|
30
|
+
scheduled: 0,
|
31
|
+
sent: 0,
|
32
|
+
submitted: 0,
|
33
|
+
validity_period_expired: 0,
|
34
|
+
cancelled: 1) }
|
35
|
+
|
36
|
+
before {
|
37
|
+
response.expects(:status).returns(status)
|
38
|
+
}
|
39
|
+
|
40
|
+
it 'returns the status that is set to 1' do
|
41
|
+
subject.status.must_equal :cancelled
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#name=' do
|
46
|
+
let(:id) { SecureRandom.uuid }
|
47
|
+
let(:new_name) { "this is my batch" }
|
48
|
+
let(:request) { mock }
|
49
|
+
|
50
|
+
before {
|
51
|
+
subject
|
52
|
+
.expects(:id)
|
53
|
+
.returns(id)
|
54
|
+
|
55
|
+
Esendex::Requests::Batch
|
56
|
+
.expects(:new)
|
57
|
+
.with(name: new_name)
|
58
|
+
.returns(request)
|
59
|
+
|
60
|
+
Esendex::Client
|
61
|
+
.expects(:put)
|
62
|
+
.with(credentials, "v1.1/messagebatches/#{id}", request)
|
63
|
+
.yields(204)
|
64
|
+
}
|
65
|
+
|
66
|
+
it 'sets the name of the batch' do
|
67
|
+
(subject.name = new_name).must_equal new_name
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'makes #name return the new name' do
|
71
|
+
subject.name = new_name
|
72
|
+
subject.name.must_equal new_name
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe '#cancel!' do
|
77
|
+
let(:id) { SecureRandom.uuid }
|
78
|
+
let(:request) { mock }
|
79
|
+
|
80
|
+
before {
|
81
|
+
subject.expects(:id).returns(id)
|
82
|
+
|
83
|
+
Esendex::Client
|
84
|
+
.expects(:delete)
|
85
|
+
.with(credentials, "v1.1/messagebatches/#{id}/schedule")
|
86
|
+
.yields(204)
|
87
|
+
}
|
88
|
+
|
89
|
+
it 'cancels the message batch' do
|
90
|
+
subject.cancel!
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe '#messages' do
|
95
|
+
let(:id) { SecureRandom.uuid }
|
96
|
+
let(:xml) { mock }
|
97
|
+
let(:first_message) { mock }
|
98
|
+
let(:parsed_messages) { stub(message_headers: [first_message]) }
|
99
|
+
|
100
|
+
before {
|
101
|
+
subject.expects(:id).returns(id)
|
102
|
+
|
103
|
+
Esendex::Client
|
104
|
+
.expects(:get)
|
105
|
+
.with(credentials, "v1.0/messagebatches/#{id}/messages",
|
106
|
+
startIndex: 0, count: 25)
|
107
|
+
.yields(200, xml)
|
108
|
+
.returns(parsed_messages.message_headers)
|
109
|
+
|
110
|
+
Esendex::Responses::MessageHeaders
|
111
|
+
.expects(:deserialise)
|
112
|
+
.with(xml)
|
113
|
+
.returns(parsed_messages)
|
114
|
+
}
|
115
|
+
|
116
|
+
it 'returns the messages in the batch' do
|
117
|
+
messages = subject.messages
|
118
|
+
messages.first.must_equal first_message
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Esendex::Batches do
|
4
|
+
let(:credentials) { dummy_credentials }
|
5
|
+
subject { Esendex::Batches.new(credentials) }
|
6
|
+
|
7
|
+
describe '#each' do
|
8
|
+
let(:data) { mock }
|
9
|
+
let(:data_list) { [mock, mock] }
|
10
|
+
let(:batches) { stub(batches: data_list) }
|
11
|
+
let(:batch_list) { [mock, mock] }
|
12
|
+
|
13
|
+
before {
|
14
|
+
Esendex::Client
|
15
|
+
.expects(:get)
|
16
|
+
.with(credentials, 'v1.1/messagebatches')
|
17
|
+
.yields(200, data)
|
18
|
+
.returns(batch_list)
|
19
|
+
|
20
|
+
Esendex::Responses::Batches
|
21
|
+
.expects(:deserialise)
|
22
|
+
.with(data)
|
23
|
+
.returns(batches)
|
24
|
+
|
25
|
+
batches.expects(:batches).returns(data_list)
|
26
|
+
|
27
|
+
data_list.zip(batch_list).each do |d, b|
|
28
|
+
Esendex::Batch.expects(:new).with(credentials, d).returns(b)
|
29
|
+
end
|
30
|
+
}
|
31
|
+
|
32
|
+
it 'retrieves all batches' do
|
33
|
+
returned_batches = []
|
34
|
+
subject.each do |batch|
|
35
|
+
returned_batches << batch
|
36
|
+
end
|
37
|
+
|
38
|
+
returned_batches.must_equal batch_list
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '#get' do
|
43
|
+
let(:id) { SecureRandom.uuid }
|
44
|
+
let(:data) { mock }
|
45
|
+
let(:response) { mock }
|
46
|
+
let(:batch) { mock }
|
47
|
+
|
48
|
+
before {
|
49
|
+
Esendex::Client
|
50
|
+
.expects(:get)
|
51
|
+
.with(credentials, "v1.1/messagebatches/#{id}")
|
52
|
+
.yields(200, data)
|
53
|
+
.returns(batch)
|
54
|
+
|
55
|
+
Esendex::Responses::Batch
|
56
|
+
.expects(:deserialise)
|
57
|
+
.with(data)
|
58
|
+
.returns(response)
|
59
|
+
|
60
|
+
Esendex::Batch
|
61
|
+
.expects(:new)
|
62
|
+
.with(credentials, response)
|
63
|
+
.returns(batch)
|
64
|
+
}
|
65
|
+
|
66
|
+
it 'retrieves the specified message batch' do
|
67
|
+
subject.get(id).must_equal batch
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/spec/xednese/client_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'helper'
|
2
2
|
|
3
3
|
describe Esendex::Client do
|
4
4
|
subject { Esendex::Client }
|
@@ -39,6 +39,38 @@ describe Esendex::Client do
|
|
39
39
|
body.must_equal expected_body
|
40
40
|
end
|
41
41
|
end
|
42
|
+
describe '.get' do
|
43
|
+
let(:credentials) { dummy_credentials }
|
44
|
+
let(:path) { "some/url/path" }
|
45
|
+
|
46
|
+
let(:expected_code) { 418 }
|
47
|
+
let(:expected_body) { "Hi I'm a body" }
|
48
|
+
|
49
|
+
let(:uri) { mock }
|
50
|
+
let(:http) { mock }
|
51
|
+
let(:get_request) { mock }
|
52
|
+
|
53
|
+
before {
|
54
|
+
subject.expects(:url).with(path).returns(uri)
|
55
|
+
|
56
|
+
subject
|
57
|
+
.expects(:execute)
|
58
|
+
.with(credentials, get_request)
|
59
|
+
.returns([expected_code, expected_body])
|
60
|
+
|
61
|
+
Net::HTTP::Delete.expects(:new).with(uri).returns(get_request)
|
62
|
+
}
|
63
|
+
|
64
|
+
it 'returns the expected status code' do
|
65
|
+
code, _ = subject.delete(credentials, path)
|
66
|
+
code.must_equal expected_code
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'returns the expected body' do
|
70
|
+
_, body = subject.delete(credentials, path)
|
71
|
+
body.must_equal expected_body
|
72
|
+
end
|
73
|
+
end
|
42
74
|
|
43
75
|
describe '.post' do
|
44
76
|
let(:credentials) { dummy_credentials }
|
@@ -83,11 +115,53 @@ describe Esendex::Client do
|
|
83
115
|
end
|
84
116
|
end
|
85
117
|
|
118
|
+
describe '.put' do
|
119
|
+
let(:credentials) { dummy_credentials }
|
120
|
+
|
121
|
+
let(:path) { "some/url/path?query=yah" }
|
122
|
+
|
123
|
+
let(:expected_code) { 418 }
|
124
|
+
let(:expected_body) { "Hi I'm a body" }
|
125
|
+
|
126
|
+
let(:xml) { "</xml>" }
|
127
|
+
let(:serialisable_object) { stub(serialise: xml) }
|
128
|
+
let(:post_request) { mock }
|
129
|
+
|
130
|
+
before {
|
131
|
+
subject
|
132
|
+
.expects(:execute)
|
133
|
+
.with(credentials, post_request)
|
134
|
+
.returns([expected_code, expected_body])
|
135
|
+
|
136
|
+
Net::HTTP::Put
|
137
|
+
.expects(:new)
|
138
|
+
.with(subject::ROOT + path)
|
139
|
+
.returns(post_request)
|
140
|
+
|
141
|
+
post_request
|
142
|
+
.expects(:body=)
|
143
|
+
.with(xml)
|
144
|
+
|
145
|
+
post_request
|
146
|
+
.expects(:content_type=)
|
147
|
+
.with('application/xml')
|
148
|
+
}
|
149
|
+
|
150
|
+
it 'returns the expected status code' do
|
151
|
+
code, _ = subject.put(credentials, path, serialisable_object)
|
152
|
+
code.must_equal expected_code
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'returns the expected body' do
|
156
|
+
_, body = subject.put(credentials, path, serialisable_object)
|
157
|
+
body.must_equal expected_body
|
158
|
+
end
|
159
|
+
end
|
86
160
|
|
87
161
|
describe '.execute' do
|
88
162
|
let(:username) { 'myusername' }
|
89
163
|
let(:password) { 'mypassword' }
|
90
|
-
let(:credentials) { Esendex::Credentials.new(username, password
|
164
|
+
let(:credentials) { Esendex::Credentials.new(username, password) }
|
91
165
|
|
92
166
|
let(:expected_code) { 418 }
|
93
167
|
let(:expected_body) { "Hi I'm a body" }
|