ews-api 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/ews-api.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ews-api}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["jrun"]
@@ -65,17 +65,17 @@ Gem::Specification.new do |s|
65
65
  s.rubygems_version = %q{1.3.5}
66
66
  s.summary = %q{Exchange Web Services API}
67
67
  s.test_files = [
68
- "spec/spec_helper.rb",
69
- "spec/integration.rb",
70
- "spec/ews/parser_spec.rb",
71
- "spec/ews/message_spec.rb",
68
+ "spec/ews/attachment_spec.rb",
72
69
  "spec/ews/builder_spec.rb",
73
- "spec/ews/attachment_spec.rb",
74
- "spec/ews/folder_spec.rb",
75
- "spec/ews/service_spec.rb",
76
70
  "spec/ews/builders/resolve_names_builder_spec.rb",
77
71
  "spec/ews/builders/shape_builder_spec.rb",
78
- "spec/ews/model_spec.rb"
72
+ "spec/ews/folder_spec.rb",
73
+ "spec/ews/message_spec.rb",
74
+ "spec/ews/model_spec.rb",
75
+ "spec/ews/parser_spec.rb",
76
+ "spec/ews/service_spec.rb",
77
+ "spec/integration.rb",
78
+ "spec/spec_helper.rb"
79
79
  ]
80
80
 
81
81
  if s.respond_to? :specification_version then
data/lib/ews/builder.rb CHANGED
@@ -48,7 +48,7 @@ module EWS
48
48
 
49
49
  def id_container!(container_node_name, ids)
50
50
  @action_node.add(container_node_name) do |container_node|
51
- to_a(ids).each {|id| yield container_node, id }
51
+ Array(ids).each {|id| yield container_node, id }
52
52
  end
53
53
  end
54
54
 
@@ -91,17 +91,6 @@ module EWS
91
91
  id_node.set_attr 'ChangeKey', opts[:change_key] if opts[:change_key]
92
92
  end
93
93
  end
94
-
95
- # TODO: core_ext?
96
- def to_a(ids)
97
- case ids
98
- when Enumerable
99
- ids
100
- else
101
- [ids]
102
- end
103
- end
104
-
105
94
  end
106
95
 
107
96
  end
data/lib/ews/error.rb CHANGED
@@ -3,6 +3,9 @@ module EWS
3
3
  class Error < StandardError
4
4
  end
5
5
 
6
+ class PreconditionFailed < Error
7
+ end
8
+
6
9
  class ResponseError < Error
7
10
  attr_reader :response_code
8
11
 
data/lib/ews/folder.rb CHANGED
@@ -33,7 +33,7 @@ module EWS
33
33
  # NOTE: This assumes Service#find_item only returns
34
34
  # Messages. That is true now but will change as more
35
35
  # of the parser is implemented.
36
- service.find_item(self.name, :base_shape => :AllProperties)
36
+ service.find_item(self.id, :base_shape => :AllProperties)
37
37
  end
38
38
 
39
39
  def find_folders
data/lib/ews/model.rb CHANGED
@@ -1,8 +1,11 @@
1
1
  module EWS
2
2
 
3
3
  class Model
4
+ attr_accessor :service
5
+
4
6
  def initialize(attrs = {})
5
7
  @attrs = attrs.dup
8
+ @service = EWS::Service
6
9
  end
7
10
 
8
11
  def shallow?
@@ -12,10 +15,6 @@ module EWS
12
15
  protected
13
16
  attr_reader :attrs
14
17
 
15
- def service
16
- EWS::Service
17
- end
18
-
19
18
  public
20
19
  def method_missing(meth, *args)
21
20
  method_name = meth.to_s
data/lib/ews/service.rb CHANGED
@@ -275,6 +275,8 @@ module EWS
275
275
  # @see http://msdn.microsoft.com/en-us/library/aa563525.aspx
276
276
  # ItmeIds
277
277
  def get_item(item_id, opts = {})
278
+ raise PreconditionFailed, "Id must be non-empty" if item_id.nil?
279
+
278
280
  soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/GetItem'
279
281
  response = invoke('tns:GetItem', soap_action) do |get_item|
280
282
  builder(get_item, opts) do
@@ -379,6 +381,8 @@ module EWS
379
381
  # @see http://msdn.microsoft.com/en-us/library/aa494316.aspx
380
382
  # GetAttachment
381
383
  def get_attachment(attachment_id, opts = {})
384
+ raise PreconditionFailed, "Id must be non-empty" if attachment_id.nil?
385
+
382
386
  soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/GetAttachment'
383
387
  response = invoke('tns:GetAttachment', soap_action) do |get_attachment|
384
388
  builder(get_attachment, opts) do
@@ -12,7 +12,7 @@ describe EWS::Builder do
12
12
  before(:each) do
13
13
  @doc = new_document
14
14
  end
15
-
15
+
16
16
  context '#item_id! should build ItemId' do
17
17
  def expected_item_id
18
18
  %Q|<t:ItemId #{TNS} Id="XYZ" />|
@@ -6,6 +6,18 @@ module EWS
6
6
  @parser = Parser.new
7
7
  end
8
8
 
9
+ context "#iems" do
10
+ it "should call service#find_item with the folder id" do
11
+ service = mock(:service)
12
+ service.should_receive(:find_item).with('maid of tarth', anything())
13
+
14
+ folder = Folder.new(:folder_id => {:id => 'maid of tarth'})
15
+ folder.service = service
16
+
17
+ folder.items
18
+ end
19
+ end
20
+
9
21
  context '#folders' do
10
22
  it "should be indexed by display name" do
11
23
  mock_response response(:find_folder)
@@ -21,7 +33,7 @@ module EWS
21
33
 
22
34
  message_count = 0
23
35
  subjects = ['test', 'Regarding Brandon Stark', 'Re: Regarding Brandon Stark']
24
- folder = Folder.new(:display_name => 'Inbox')
36
+ folder = Folder.new(:display_name => 'Inbox', :folder_id => {:id => 'maid of tarth'})
25
37
 
26
38
  folder.each_message do |message|
27
39
  message_count += 1
@@ -5,10 +5,17 @@ EWS::Service.endpoint 'http://localhost/ews/exchange.aspx'
5
5
  describe EWS::Service do
6
6
  context '#get_item' do
7
7
  it "should raise an error when the id is not found" do
8
- mock_response response(:get_item_with_error)
9
8
  lambda do
10
9
  EWS::Service.get_item nil
11
- end.should raise_error(EWS::ResponseError, 'Id must be non-empty.')
10
+ end.should raise_error(EWS::PreconditionFailed, /Id must be non-empty/)
12
11
  end
13
12
  end
13
+
14
+ context "#get_attachment" do
15
+ it "should raise an error when the id is not found" do
16
+ lambda do
17
+ EWS::Service.get_attachment nil
18
+ end.should raise_error(EWS::PreconditionFailed, /Id must be non-empty/)
19
+ end
20
+ end
14
21
  end
data/spec/integration.rb CHANGED
@@ -111,11 +111,11 @@ describe 'Integration Tests' do
111
111
  item = EWS::Service.get_item EWS_CONFIG['item_id'], :base_shape => :AllProperties
112
112
  item.should be_instance_of(EWS::Message)
113
113
  end
114
-
115
- it "should raise a SoapError when the ResponseMessage is an Error" do
114
+
115
+ it "should raise an error when the requested id is nil" do
116
116
  lambda do
117
117
  EWS::Service.get_item(nil)
118
- end.should raise_error(EWS::ResponseError, /Id must be non-empty/)
118
+ end.should raise_error(EWS::PreconditionFailed, /Id must be non-empty/)
119
119
  end
120
120
  end
121
121
 
@@ -125,11 +125,11 @@ describe 'Integration Tests' do
125
125
  rtn = EWS::Service.get_attachment EWS_CONFIG['attachment_id'] # lame
126
126
  end.should_not raise_error
127
127
  end
128
-
129
- it "should raise a EWS::ResponseError when the ResponseMessage is an Error" do
128
+
129
+ it "should raise an error when the requested id is nil" do
130
130
  lambda do
131
131
  EWS::Service.get_attachment(nil)
132
- end.should raise_error(EWS::ResponseError, /Id must be non-empty/)
132
+ end.should raise_error(EWS::PreconditionFailed, /Id must be non-empty/)
133
133
  end
134
134
  end
135
135
 
@@ -153,5 +153,14 @@ describe 'Integration Tests' do
153
153
  end.should raise_error(EWS::ResponseError, /Id is malformed/)
154
154
  end
155
155
  end
156
-
156
+
157
+ context "EWS.inbox" do
158
+ it "#each_message should iterate through the inbox without errors" do
159
+ # lame test but will help protect against a regression until a
160
+ # proper inbox setup is complete
161
+ count = 0
162
+ EWS.inbox.each_message {|m| count += 1}
163
+ count.should > 0
164
+ end
165
+ end
157
166
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ews-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - jrun
@@ -142,14 +142,14 @@ signing_key:
142
142
  specification_version: 3
143
143
  summary: Exchange Web Services API
144
144
  test_files:
145
- - spec/spec_helper.rb
146
- - spec/integration.rb
147
- - spec/ews/parser_spec.rb
148
- - spec/ews/message_spec.rb
149
- - spec/ews/builder_spec.rb
150
145
  - spec/ews/attachment_spec.rb
151
- - spec/ews/folder_spec.rb
152
- - spec/ews/service_spec.rb
146
+ - spec/ews/builder_spec.rb
153
147
  - spec/ews/builders/resolve_names_builder_spec.rb
154
148
  - spec/ews/builders/shape_builder_spec.rb
149
+ - spec/ews/folder_spec.rb
150
+ - spec/ews/message_spec.rb
155
151
  - spec/ews/model_spec.rb
152
+ - spec/ews/parser_spec.rb
153
+ - spec/ews/service_spec.rb
154
+ - spec/integration.rb
155
+ - spec/spec_helper.rb