rdstation-ruby-client 1.0.1 → 1.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/lib/rdstation-ruby-client.rb +1 -0
- data/lib/rdstation/error.rb +1 -0
- data/lib/rdstation/error/formatter.rb +15 -9
- data/lib/rdstation/error_handler.rb +3 -1
- data/lib/rdstation/error_handler/invalid_event_type.rb +27 -0
- data/lib/rdstation/events.rb +33 -0
- data/lib/rdstation/version.rb +1 -1
- data/spec/lib/rdstation/error/formatter_spec.rb +55 -18
- data/spec/lib/rdstation/error_handler/invalid_event_type_spec.rb +54 -0
- data/spec/lib/rdstation/events_spec.rb +175 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3abd8cbbff8541804f9098ccf8076025404e9fd
|
4
|
+
data.tar.gz: 303aed653c2a72f186bdbfc2b1dea8f56c7ff55d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 752ad7a2b479d064dfc176f2299f31035a51bfff11dbf71f3bf96fd813ac840524125789a035880a613b1c77b79ca8698b0b40687afb9ef28eee4ab4da1f6807
|
7
|
+
data.tar.gz: 1494b26e7d0867b640e8ea4deab9e57b8fb716417a194c821a9e77f7a9ebc8bce1057910be8e10908afde16b1ab347b28add6feacbb1f8b49818adb76019aace
|
data/lib/rdstation/error.rb
CHANGED
@@ -3,27 +3,29 @@ require_relative './format'
|
|
3
3
|
module RDStation
|
4
4
|
class Error
|
5
5
|
class Formatter
|
6
|
-
def initialize(
|
7
|
-
@
|
6
|
+
def initialize(error_response)
|
7
|
+
@error_response = error_response
|
8
8
|
end
|
9
9
|
|
10
10
|
def to_array
|
11
|
+
return @error_response unless @error_response.is_a?(Hash)
|
12
|
+
|
11
13
|
case error_format.format
|
12
14
|
when RDStation::Error::Format::FLAT_HASH
|
13
|
-
from_flat_hash
|
15
|
+
return from_flat_hash
|
14
16
|
when RDStation::Error::Format::HASH_OF_ARRAYS
|
15
|
-
from_hash_of_arrays
|
16
|
-
else
|
17
|
-
@errors
|
17
|
+
return from_hash_of_arrays
|
18
18
|
end
|
19
|
+
|
20
|
+
errors
|
19
21
|
end
|
20
22
|
|
21
23
|
def from_flat_hash
|
22
|
-
[
|
24
|
+
[errors]
|
23
25
|
end
|
24
26
|
|
25
27
|
def from_hash_of_arrays
|
26
|
-
|
28
|
+
errors.each_with_object([]) do |errors, array_of_errors|
|
27
29
|
attribute_name = errors.first
|
28
30
|
attribute_errors = errors.last
|
29
31
|
path = { 'path' => "body.#{attribute_name}" }
|
@@ -33,7 +35,11 @@ module RDStation
|
|
33
35
|
end
|
34
36
|
|
35
37
|
def error_format
|
36
|
-
@error_format ||= RDStation::Error::Format.new(
|
38
|
+
@error_format ||= RDStation::Error::Format.new(errors)
|
39
|
+
end
|
40
|
+
|
41
|
+
def errors
|
42
|
+
@errors ||= @error_response['errors']
|
37
43
|
end
|
38
44
|
end
|
39
45
|
end
|
@@ -4,6 +4,7 @@ require_relative 'error_handler/default'
|
|
4
4
|
require_relative 'error_handler/expired_access_token'
|
5
5
|
require_relative 'error_handler/expired_code_grant'
|
6
6
|
require_relative 'error_handler/invalid_credentials'
|
7
|
+
require_relative 'error_handler/invalid_event_type'
|
7
8
|
require_relative 'error_handler/resource_not_found'
|
8
9
|
require_relative 'error_handler/unauthorized'
|
9
10
|
|
@@ -14,6 +15,7 @@ module RDStation
|
|
14
15
|
ErrorHandler::ExpiredAccessToken,
|
15
16
|
ErrorHandler::ExpiredCodeGrant,
|
16
17
|
ErrorHandler::InvalidCredentials,
|
18
|
+
ErrorHandler::InvalidEventType,
|
17
19
|
ErrorHandler::ResourceNotFound,
|
18
20
|
ErrorHandler::Unauthorized,
|
19
21
|
ErrorHandler::Default
|
@@ -42,7 +44,7 @@ module RDStation
|
|
42
44
|
end
|
43
45
|
|
44
46
|
def response_errors
|
45
|
-
JSON.parse(response.body)
|
47
|
+
JSON.parse(response.body)
|
46
48
|
end
|
47
49
|
|
48
50
|
def error_formatter
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module RDStation
|
2
|
+
class ErrorHandler
|
3
|
+
class InvalidEventType
|
4
|
+
attr_reader :errors
|
5
|
+
|
6
|
+
ERROR_CODE = 'INVALID_OPTION'.freeze
|
7
|
+
PATH = '$.event_type'.freeze
|
8
|
+
|
9
|
+
def initialize(errors)
|
10
|
+
@errors = errors
|
11
|
+
end
|
12
|
+
|
13
|
+
def raise_error
|
14
|
+
return if invalid_event_type_error.empty?
|
15
|
+
raise RDStation::Error::InvalidEventType, invalid_event_type_error.first
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def invalid_event_type_error
|
21
|
+
errors.select do |error|
|
22
|
+
error.values_at('error_type', 'path') == [ERROR_CODE, PATH]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module RDStation
|
3
|
+
# More info: https://developers.rdstation.com/pt-BR/reference/contacts
|
4
|
+
class Events
|
5
|
+
include HTTParty
|
6
|
+
|
7
|
+
EVENTS_ENDPOINT = 'https://api.rd.services/platform/events'.freeze
|
8
|
+
|
9
|
+
def initialize(auth_token)
|
10
|
+
@auth_token = auth_token
|
11
|
+
end
|
12
|
+
|
13
|
+
def create(payload)
|
14
|
+
response = self.class.post(EVENTS_ENDPOINT, headers: required_headers, body: payload.to_json)
|
15
|
+
response_body = JSON.parse(response.body)
|
16
|
+
return response_body unless errors?(response_body)
|
17
|
+
RDStation::ErrorHandler.new(response).raise_errors
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def errors?(response_body)
|
23
|
+
response_body.is_a?(Array) || response_body['errors']
|
24
|
+
end
|
25
|
+
|
26
|
+
def required_headers
|
27
|
+
{
|
28
|
+
'Authorization' => "Bearer #{@auth_token}",
|
29
|
+
'Content-Type' => 'application/json'
|
30
|
+
}
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/rdstation/version.rb
CHANGED
@@ -9,14 +9,16 @@ RSpec.describe RDStation::Error::Formatter do
|
|
9
9
|
context 'when receives a flat hash of errors' do
|
10
10
|
let(:error_format) { instance_double(RDStation::Error::Format, format: RDStation::Error::Format::FLAT_HASH) }
|
11
11
|
|
12
|
-
let(:
|
12
|
+
let(:error_response) do
|
13
13
|
{
|
14
|
-
'
|
15
|
-
|
14
|
+
'errors' => {
|
15
|
+
'error_type' => 'CONFLICTING_FIELD',
|
16
|
+
'error_message' => 'The payload contains an attribute that was used to identify the lead'
|
17
|
+
}
|
16
18
|
}
|
17
19
|
end
|
18
20
|
|
19
|
-
let(:error_formatter) { described_class.new(
|
21
|
+
let(:error_formatter) { described_class.new(error_response) }
|
20
22
|
|
21
23
|
let(:expected_result) do
|
22
24
|
[
|
@@ -27,7 +29,7 @@ RSpec.describe RDStation::Error::Formatter do
|
|
27
29
|
]
|
28
30
|
end
|
29
31
|
|
30
|
-
it 'returns an array of errors
|
32
|
+
it 'returns an array of errors' do
|
31
33
|
result = error_formatter.to_array
|
32
34
|
expect(result).to eq(expected_result)
|
33
35
|
end
|
@@ -36,18 +38,20 @@ RSpec.describe RDStation::Error::Formatter do
|
|
36
38
|
context 'when receives a hash of arrays of errors' do
|
37
39
|
let(:error_format) { instance_double(RDStation::Error::Format, format: RDStation::Error::Format::HASH_OF_ARRAYS) }
|
38
40
|
|
39
|
-
let(:
|
41
|
+
let(:error_response) do
|
40
42
|
{
|
41
|
-
'
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
43
|
+
'errors' => {
|
44
|
+
'name' => [
|
45
|
+
{
|
46
|
+
'error_type' => 'MUST_BE_STRING',
|
47
|
+
'error_message' => 'Name must be string.'
|
48
|
+
}
|
49
|
+
]
|
50
|
+
}
|
47
51
|
}
|
48
52
|
end
|
49
53
|
|
50
|
-
let(:error_formatter) { described_class.new(
|
54
|
+
let(:error_formatter) { described_class.new(error_response) }
|
51
55
|
|
52
56
|
let(:expected_result) do
|
53
57
|
[
|
@@ -59,16 +63,49 @@ RSpec.describe RDStation::Error::Formatter do
|
|
59
63
|
]
|
60
64
|
end
|
61
65
|
|
62
|
-
it 'returns an array of errors
|
66
|
+
it 'returns an array of errors' do
|
63
67
|
result = error_formatter.to_array
|
64
68
|
expect(result).to eq(expected_result)
|
65
69
|
end
|
66
70
|
end
|
67
71
|
|
68
|
-
context 'when receives an array of errors' do
|
72
|
+
context 'when receives an array of errors inside the "errors" key' do
|
69
73
|
let(:error_format) { instance_double(RDStation::Error::Format, format: RDStation::Error::Format::ARRAY_OF_HASHES) }
|
70
74
|
|
71
|
-
let(:
|
75
|
+
let(:error_response) do
|
76
|
+
{
|
77
|
+
'errors' => [
|
78
|
+
{
|
79
|
+
'error_type' => 'CANNOT_BE_NULL',
|
80
|
+
'error_message' => 'Cannot be null.',
|
81
|
+
'path' => 'body.client_secret'
|
82
|
+
}
|
83
|
+
]
|
84
|
+
}
|
85
|
+
end
|
86
|
+
|
87
|
+
let(:error_formatter) { described_class.new(error_response) }
|
88
|
+
|
89
|
+
let(:expected_result) do
|
90
|
+
[
|
91
|
+
{
|
92
|
+
'error_type' => 'CANNOT_BE_NULL',
|
93
|
+
'error_message' => 'Cannot be null.',
|
94
|
+
'path' => 'body.client_secret'
|
95
|
+
}
|
96
|
+
]
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'returns an array of errors' do
|
100
|
+
result = error_formatter.to_array
|
101
|
+
expect(result).to eq(expected_result)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'when receives a pure array of errors' do
|
106
|
+
let(:error_format) { '' }
|
107
|
+
|
108
|
+
let(:error_response) do
|
72
109
|
[
|
73
110
|
{
|
74
111
|
'error_type' => 'CANNOT_BE_NULL',
|
@@ -78,7 +115,7 @@ RSpec.describe RDStation::Error::Formatter do
|
|
78
115
|
]
|
79
116
|
end
|
80
117
|
|
81
|
-
let(:error_formatter) { described_class.new(
|
118
|
+
let(:error_formatter) { described_class.new(error_response) }
|
82
119
|
|
83
120
|
let(:expected_result) do
|
84
121
|
[
|
@@ -90,7 +127,7 @@ RSpec.describe RDStation::Error::Formatter do
|
|
90
127
|
]
|
91
128
|
end
|
92
129
|
|
93
|
-
it 'returns an array of errors
|
130
|
+
it 'returns an array of errors' do
|
94
131
|
result = error_formatter.to_array
|
95
132
|
expect(result).to eq(expected_result)
|
96
133
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe RDStation::ErrorHandler::InvalidEventType do
|
4
|
+
describe '#raise_error' do
|
5
|
+
subject(:invalid_event_type_error) { described_class.new(errors) }
|
6
|
+
|
7
|
+
context 'when there is a invalid event type error' do
|
8
|
+
let(:errors) do
|
9
|
+
[
|
10
|
+
{
|
11
|
+
'error_message' => 'Error Message',
|
12
|
+
'error_type' => 'INVALID_OPTION',
|
13
|
+
'path' => '$.event_type'
|
14
|
+
}
|
15
|
+
]
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'raises an InvalidEventType error' do
|
19
|
+
expect do
|
20
|
+
invalid_event_type_error.raise_error
|
21
|
+
end.to raise_error(RDStation::Error::InvalidEventType, 'Error Message')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'when none of the errors are invalid event type errors' do
|
26
|
+
let(:errors) do
|
27
|
+
[
|
28
|
+
{
|
29
|
+
'error_message' => 'Error Message',
|
30
|
+
'error_type' => 'RANDOM_ERROR_TYPE'
|
31
|
+
},
|
32
|
+
{
|
33
|
+
'error_message' => 'Another Error Message',
|
34
|
+
'error_type' => 'ANOTHER_RANDOM_ERROR_TYPE'
|
35
|
+
}
|
36
|
+
]
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'does not raise an InvalidEventType error' do
|
40
|
+
result = invalid_event_type_error.raise_error
|
41
|
+
expect(result).to be_nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when there are no errors' do
|
46
|
+
let(:errors) { [] }
|
47
|
+
|
48
|
+
it 'does not raise an InvalidEventType error' do
|
49
|
+
result = invalid_event_type_error.raise_error
|
50
|
+
expect(result).to be_nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,175 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe RDStation::Events do
|
4
|
+
let(:valid_auth_token) { 'valid_auth_token' }
|
5
|
+
let(:invalid_auth_token) { 'invalid_auth_token' }
|
6
|
+
let(:expired_auth_token) { 'expired_auth_token' }
|
7
|
+
|
8
|
+
let(:event_with_valid_token) { described_class.new(valid_auth_token) }
|
9
|
+
let(:event_with_expired_token) { described_class.new(expired_auth_token) }
|
10
|
+
let(:event_with_invalid_token) { described_class.new(invalid_auth_token) }
|
11
|
+
|
12
|
+
let(:events_endpoint) { 'https://api.rd.services/platform/events' }
|
13
|
+
|
14
|
+
let(:valid_event_types) do
|
15
|
+
%w[
|
16
|
+
OPPORTUNITY_LOST
|
17
|
+
EMAIL_DELIVERED
|
18
|
+
DOUBLE_OPT_IN_EMAIL_CONFIRMED
|
19
|
+
OPPORTUNITY
|
20
|
+
CART_ABANDONED_ITEM
|
21
|
+
FUNNEL_STAGE_CHANGED
|
22
|
+
MEDIA_PLAYBACK_STOPPED
|
23
|
+
CONVERSION
|
24
|
+
MEDIA_PLAYBACK_STARTED
|
25
|
+
SALE
|
26
|
+
WORKFLOW_STARTED
|
27
|
+
EMAIL_SPAM_REPORTED
|
28
|
+
ORDER_PLACED
|
29
|
+
EMAIL_SOFT_BOUNCED
|
30
|
+
CART_ABANDONED
|
31
|
+
EMAIL_OPENED
|
32
|
+
EMAIL_DROPPED
|
33
|
+
EMAIL_HARD_BOUNCED
|
34
|
+
WORKFLOW_FINISHED
|
35
|
+
WORKFLOW_CANCELED
|
36
|
+
EMAIL_CLICKED
|
37
|
+
ORDER_PLACED_ITEM
|
38
|
+
CHAT_STARTED
|
39
|
+
CHAT_FINISHED
|
40
|
+
EMAIL_UNSUBSCRIBED
|
41
|
+
PAGE_VISITED
|
42
|
+
CALL_FINISHED
|
43
|
+
]
|
44
|
+
end
|
45
|
+
|
46
|
+
let(:valid_headers) do
|
47
|
+
{
|
48
|
+
'Authorization' => "Bearer #{valid_auth_token}",
|
49
|
+
'Content-Type' => 'application/json'
|
50
|
+
}
|
51
|
+
end
|
52
|
+
|
53
|
+
let(:invalid_token_headers) do
|
54
|
+
{
|
55
|
+
'Authorization' => "Bearer #{invalid_auth_token}",
|
56
|
+
'Content-Type' => 'application/json'
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
let(:expired_token_headers) do
|
61
|
+
{
|
62
|
+
'Authorization' => "Bearer #{expired_auth_token}",
|
63
|
+
'Content-Type' => 'application/json'
|
64
|
+
}
|
65
|
+
end
|
66
|
+
|
67
|
+
let(:invalid_token_response) do
|
68
|
+
{
|
69
|
+
status: 401,
|
70
|
+
body: {
|
71
|
+
errors: {
|
72
|
+
error_type: 'UNAUTHORIZED',
|
73
|
+
error_message: 'Invalid token.'
|
74
|
+
}
|
75
|
+
}.to_json
|
76
|
+
}
|
77
|
+
end
|
78
|
+
|
79
|
+
let(:expired_token_response) do
|
80
|
+
{
|
81
|
+
status: 401,
|
82
|
+
headers: { 'WWW-Authenticate' => 'Bearer realm="https://api.rd.services/", error="expired_token", error_description="The access token expired"' },
|
83
|
+
body: {
|
84
|
+
errors: {
|
85
|
+
error_type: 'UNAUTHORIZED',
|
86
|
+
error_message: 'Invalid token.'
|
87
|
+
}
|
88
|
+
}.to_json
|
89
|
+
}
|
90
|
+
end
|
91
|
+
|
92
|
+
describe '#create' do
|
93
|
+
let(:event) do
|
94
|
+
{
|
95
|
+
'event_type' => 'OPPORTUNITY_LOST',
|
96
|
+
'event_family' => 'CDP',
|
97
|
+
'payload' => {
|
98
|
+
'email' => 'email@email.com',
|
99
|
+
'funnel_name' => 'default',
|
100
|
+
'reason' => 'Lost reason'
|
101
|
+
}
|
102
|
+
}
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'with a valid auth token' do
|
106
|
+
before do
|
107
|
+
stub_request(:post, events_endpoint)
|
108
|
+
.with(headers: valid_headers)
|
109
|
+
.to_return(status: 200, body: event.to_json)
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'returns the event uuid' do
|
113
|
+
# {"event_uuid":"830eacd4-6859-43b5-82ef-d2989db38604"}
|
114
|
+
response = event_with_valid_token.create(event)
|
115
|
+
expect(response).to eq(event)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
context 'with an invalid auth token' do
|
120
|
+
before do
|
121
|
+
stub_request(:post, events_endpoint)
|
122
|
+
.with(headers: invalid_token_headers)
|
123
|
+
.to_return(invalid_token_response)
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'raises an invalid token error' do
|
127
|
+
expect do
|
128
|
+
event_with_invalid_token.create(event)
|
129
|
+
end.to raise_error(RDStation::Error::Unauthorized)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context 'with an expired auth token' do
|
134
|
+
before do
|
135
|
+
stub_request(:post, events_endpoint)
|
136
|
+
.with(headers: expired_token_headers)
|
137
|
+
.to_return(expired_token_response)
|
138
|
+
end
|
139
|
+
|
140
|
+
it 'raises a expired token error' do
|
141
|
+
expect do
|
142
|
+
event_with_expired_token.create(event)
|
143
|
+
end.to raise_error(RDStation::Error::ExpiredAccessToken)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
context 'when the event type is incorrect' do
|
148
|
+
let(:invalid_event_type_response) do
|
149
|
+
{
|
150
|
+
status: 400,
|
151
|
+
body: [
|
152
|
+
{
|
153
|
+
'error_type' => 'INVALID_OPTION',
|
154
|
+
'error_message' => 'Must be one of the valid options.',
|
155
|
+
'validation_rules' => { 'valid_options' => valid_event_types },
|
156
|
+
'path' => '$.event_type'
|
157
|
+
}
|
158
|
+
].to_json
|
159
|
+
}
|
160
|
+
end
|
161
|
+
|
162
|
+
before do
|
163
|
+
stub_request(:post, events_endpoint)
|
164
|
+
.with(headers: valid_headers)
|
165
|
+
.to_return(invalid_event_type_response)
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'raises an invalid event type error' do
|
169
|
+
expect do
|
170
|
+
event_with_valid_token.create(event)
|
171
|
+
end.to raise_error(RDStation::Error::InvalidEventType)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdstation-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paulo L F Casaretto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -120,8 +120,10 @@ files:
|
|
120
120
|
- lib/rdstation/error_handler/expired_access_token.rb
|
121
121
|
- lib/rdstation/error_handler/expired_code_grant.rb
|
122
122
|
- lib/rdstation/error_handler/invalid_credentials.rb
|
123
|
+
- lib/rdstation/error_handler/invalid_event_type.rb
|
123
124
|
- lib/rdstation/error_handler/resource_not_found.rb
|
124
125
|
- lib/rdstation/error_handler/unauthorized.rb
|
126
|
+
- lib/rdstation/events.rb
|
125
127
|
- lib/rdstation/fields.rb
|
126
128
|
- lib/rdstation/version.rb
|
127
129
|
- rdstation-ruby-client.gemspec
|
@@ -135,10 +137,12 @@ files:
|
|
135
137
|
- spec/lib/rdstation/error_handler/expired_access_token_spec.rb
|
136
138
|
- spec/lib/rdstation/error_handler/expired_code_grant_spec.rb
|
137
139
|
- spec/lib/rdstation/error_handler/invalid_credentials_spec.rb
|
140
|
+
- spec/lib/rdstation/error_handler/invalid_event_type_spec.rb
|
138
141
|
- spec/lib/rdstation/error_handler/resource_not_found_spec.rb
|
139
142
|
- spec/lib/rdstation/error_handler/unauthorized_spec.rb
|
140
143
|
- spec/lib/rdstation/error_handler_spec.rb
|
141
144
|
- spec/lib/rdstation/error_spec.rb
|
145
|
+
- spec/lib/rdstation/events_spec.rb
|
142
146
|
- spec/lib/rdstation/fields_spec.rb
|
143
147
|
- spec/spec_helper.rb
|
144
148
|
homepage: http://resultadosdigitais.com.br
|
@@ -176,9 +180,11 @@ test_files:
|
|
176
180
|
- spec/lib/rdstation/error_handler/expired_access_token_spec.rb
|
177
181
|
- spec/lib/rdstation/error_handler/expired_code_grant_spec.rb
|
178
182
|
- spec/lib/rdstation/error_handler/invalid_credentials_spec.rb
|
183
|
+
- spec/lib/rdstation/error_handler/invalid_event_type_spec.rb
|
179
184
|
- spec/lib/rdstation/error_handler/resource_not_found_spec.rb
|
180
185
|
- spec/lib/rdstation/error_handler/unauthorized_spec.rb
|
181
186
|
- spec/lib/rdstation/error_handler_spec.rb
|
182
187
|
- spec/lib/rdstation/error_spec.rb
|
188
|
+
- spec/lib/rdstation/events_spec.rb
|
183
189
|
- spec/lib/rdstation/fields_spec.rb
|
184
190
|
- spec/spec_helper.rb
|