streamsend 1.0.0.rc4 → 1.0.0.rc5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OWQwZjQyNTdiY2E1OThiYWExZGRmOGUzNzQ0ODFmZGM4MmY3ZDNjNQ==
4
+ M2EyMzFiNThlZWQ1YjRjNDQxMjE3YWNmOTIxZGEyMmY1M2E1ZGYxNw==
5
5
  data.tar.gz: !binary |-
6
- YTk3MTc1NzM2NDFlMGZiYjM2MTEwYmQ3ZjAwZjkxYzFlZGNiZmM2NA==
6
+ MGI4ODQ4NTkyNjc2MWMyZGNlNjdjYWQ5OTEzZmY4ZGFkYmM5OTdkNQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Yjc2OWMzZDQ0NjA1ZDg3ZGMyNTFmZmU3NTE4MDAwODhkZWQwMWVkZTEyYjg3
10
- NDY4ZjEwYjI0ZmY0YjFhM2VhYjM3ZGE2ZTRhY2ZiNDUyNjNjNWRjYmE5ODQ0
11
- NjA1M2E0YjA4NzFlZDNjZWQ1ZTRiMzMxMzI5OGE2OGIwY2FkOWY=
9
+ YzU2ZDM1Zjk4NDI5YjM2YTUwYWQyOWRiMWFiY2M5YmQ0ZTY3YjQyZmM5Zjk3
10
+ NjY0OTg1NGI0N2Q4MjRiNjhjZWI3OTc2MGFkNTMwZTljNTc3MmM0YWU4NzY2
11
+ NTRmNjk5OGU4ODlhMDEwMDA2OTU3ZmFkZTVjMzY3NzVkN2FkOGY=
12
12
  data.tar.gz: !binary |-
13
- YWIzOTAzN2VlYjI3YmFkZTU5ZDAzMGE2OTA1NWY4MGZkNTBiMDM2OTJhM2Jl
14
- ODlkMTUxZTYwMzkyMjM0YTk5ZmI1MGFjYzQzN2QyOWEwNWU4MDk2NzdjYzYz
15
- NzlkZDRiYzYzZjYzOTQ1Yjc1ZTJkZThjMGQ5ZDYwMjhmZDI1MjA=
13
+ MzEzYWVlYmZhNWJiZTgxMmRlNjNhYWVjNDYyYzEwZjA0ODhiNzdkZmUzNmY5
14
+ MTRjNzEzYjJiM2M1NGYzYjNkOTg0MjYxODUxNTdlNmJlYTZkY2Y0ZGE5NDJl
15
+ NDNiNDU1ZTUxNjI1NTlmZTNmYmYyZmJjYWM4ZjZjMTY4MTIzMzE=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- streamsend (1.0.0.rc3)
4
+ streamsend (1.0.0.rc4)
5
5
  activesupport (~> 3.2)
6
6
  builder
7
7
  httmultiparty
@@ -54,6 +54,19 @@ module StreamSend
54
54
  def audiences_uri
55
55
  "#{base_audience_uri}.xml"
56
56
  end
57
+
58
+ private
59
+
60
+ def get_error_from response
61
+ message = "Unprocessable Entity"
62
+ if response.parsed_response["request"]
63
+ message = response.parsed_response["request"]["errors"]
64
+ elsif response.parsed_response["errors"]
65
+ message = response.parsed_response["errors"]["error"]
66
+ elsif response["errors"]
67
+ message = response["errors"]
68
+ end
69
+ end
57
70
  end
58
71
  end
59
72
  end
@@ -21,17 +21,6 @@ module StreamSend
21
21
  def uri
22
22
  "#{base_uri}.xml"
23
23
  end
24
-
25
- def get_error_from response
26
- message = "Unprocessable Entity"
27
- if response.parsed_response["request"]
28
- message = response.parsed_response["request"]["errors"]
29
- elsif response.parsed_response["errors"]
30
- message = response.parsed_response["errors"]["error"]
31
- elsif response["errors"]
32
- message = response["errors"]
33
- end
34
- end
35
24
  end
36
25
 
37
26
  class AudienceCreate < StreamSend::Api::Call::Create
@@ -6,10 +6,11 @@ module StreamSend
6
6
  @id = object_id
7
7
  response = session.put(uri, :body => object_hash)
8
8
  case response.code
9
- when 200
10
- true
9
+ when 200 then true
10
+ when 401 then raise StreamSend::Api::UnauthorizedException
11
+ when 422 then raise StreamSend::Api::SemanticException.new(get_error_from(response))
11
12
  else
12
- false
13
+ raise StreamSend::Api::Exception.new("Could not create the #{namespace}. (#{response.code})")
13
14
  end
14
15
  end
15
16
 
@@ -1,3 +1,3 @@
1
1
  module StreamSend
2
- VERSION = "1.0.0.rc4"
2
+ VERSION = "1.0.0.rc5"
3
3
  end
@@ -150,7 +150,7 @@ module StreamSend
150
150
  person = shower.execute(id)
151
151
  person.email_address = "me+#{randomish}@you.too"
152
152
  updater = Update.new(session)
153
- updater.execute(id, person.marshal_dump)
153
+ updater.execute(id, :person => person.marshal_dump)
154
154
  person_updated = shower.execute(id)
155
155
  expect(person_updated.email_address).to eq(person_hash[:person][:email_address])
156
156
  expect(person_updated.id).to eq(id)
@@ -54,7 +54,7 @@ module StreamSend
54
54
  user = shower.execute(id)
55
55
  user.first_name = "newer namers!"
56
56
  updater = Update.new(session)
57
- updater.execute(id, user.marshal_dump)
57
+ updater.execute(id, :user => user.marshal_dump)
58
58
  user_updated = shower.execute(id)
59
59
  expect(user_updated.name).to eq(user_hash[:user][:name])
60
60
  expect(user_updated.id).to eq(id)
@@ -9,16 +9,50 @@ module StreamSend
9
9
  let(:session){ StreamSend::Api::Session.new("test", "password", "http://default.base") }
10
10
  let(:updater){ Update.new(session) }
11
11
 
12
- it "returns true when the object is updated successfully" do
13
- stub_request(:put, "http://test:password@default.base/calls/123.xml").
14
- to_return(:status => 200, :body => "", :headers => {})
15
- expect(updater.execute(id, obj_hash)).to eq(true)
12
+ context "when the update is successful" do
13
+ it "returns true" do
14
+ stub_request(:put, "http://test:password@default.base/calls/123.xml").
15
+ to_return(:status => 200, :body => "", :headers => {})
16
+ expect(updater.execute(id, obj_hash)).to be_true
17
+ end
16
18
  end
17
19
 
18
- it "returns true when the object is updated successfully" do
19
- stub_request(:put, "http://test:password@default.base/calls/123.xml").
20
- to_return(:status => 404, :body => "", :headers => {})
21
- expect(updater.execute(id, obj_hash)).to eq(false)
20
+ context "when invalid credentials are provided" do
21
+ it "returns an unathorized exception" do
22
+ stub_request(:put, "http://test:password@default.base/calls/123.xml").to_return(:status => 401, :body => "" )
23
+ expect do
24
+ updater.execute(id, {})
25
+ end.to raise_error(UnauthorizedException)
26
+ end
27
+ end
28
+
29
+ context "when the request is invalid" do
30
+ let(:non_existent_person_id) { 42 }
31
+ let(:error_response) do
32
+ response_xml = <<-XML
33
+ <request>
34
+ <errors type='array'>
35
+ <message>Invalid Owner ID</message>
36
+ </errors>
37
+ </request>
38
+ XML
39
+ end
40
+
41
+ it "returns a semantic error with a meaningful error message" do
42
+ stub_request(:put, "http://test:password@default.base/calls/#{non_existent_person_id}.xml").to_return(:status => 422, :body => error_response, :headers => { :content_type => "application/xml" })
43
+ expect do
44
+ updater.execute(non_existent_person_id, {})
45
+ end.to raise_error(StreamSend::Api::SemanticException, /Invalid Owner ID/)
46
+ end
47
+ end
48
+
49
+ context "when the status is a 404" do
50
+ it "builds an error message with the namespace name" do
51
+ stub_request(:put, "http://test:password@default.base/calls/123.xml").to_return(:status => 404, :body => "")
52
+ expect do
53
+ updater.execute(id, {})
54
+ end.to raise_error(StreamSend::Api::Exception, "Could not create the calls. (404)")
55
+ end
22
56
  end
23
57
 
24
58
  it "creates a uri for updating using the id" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: streamsend
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc4
4
+ version: 1.0.0.rc5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Yeo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-29 00:00:00.000000000 Z
11
+ date: 2013-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httmultiparty
@@ -246,7 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
246
246
  version: 1.3.1
247
247
  requirements: []
248
248
  rubyforge_project:
249
- rubygems_version: 2.1.9
249
+ rubygems_version: 2.1.10
250
250
  signing_key:
251
251
  specification_version: 4
252
252
  summary: Ruby wrapper for the StreamSend API.