grocer 0.0.9 → 0.0.10

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.
data/README.md CHANGED
@@ -127,6 +127,44 @@ end
127
127
  from the Apple Push Notification Service before raising any errors to client
128
128
  code.
129
129
 
130
+ ## Acceptance Testing
131
+
132
+ Grocer ships with framework to setup a real looking APNS server. It listens on
133
+ a real SSL-capable socket bound to localhost.
134
+
135
+ You can setup an APNS client to talk to it, then inspect the notifications the
136
+ server received.
137
+
138
+ The server simply exposes a blocking queue where notifications are placed when
139
+ they are received. It is your responsibility to timeout if a message is not
140
+ received in a reasonable amount of time.
141
+
142
+ For example, in RSpec:
143
+
144
+ ```ruby
145
+ require 'timeout'
146
+
147
+ describe "apple push notifications" do
148
+ before do
149
+ @server = Grocer.server(port: 2195)
150
+ @server.accept # starts listening in background
151
+ end
152
+
153
+ after do
154
+ @server.close
155
+ end
156
+
157
+ specify "As a user, I receive notifications on my phone when awesome things happen" do
158
+ # ... exercise code that would send APNS notifications ...
159
+
160
+ Timeout.timeout(3) {
161
+ notification = @server.notifications.pop # blocking
162
+ notification.alert.should == "An awesome thing happened"
163
+ }
164
+ end
165
+ end
166
+ ```
167
+
130
168
  ### Device Token
131
169
 
132
170
  A device token is obtained from within the iOS app. More details are in Apple's
@@ -176,43 +214,3 @@ openssl pkcs12 -in exported_certificate.p12 -out certificate.pem -nodes -clcerts
176
214
  ```
177
215
 
178
216
  The `certificate.pem` file that is generated can be used with **grocer**.
179
-
180
- ## Acceptance Testing
181
-
182
- ** YET TO BE IMPLEMENTED **
183
-
184
- Grocer ships with framework to setup a real looking APNS server. It listens on
185
- a real SSL-capable socket bound to localhost.
186
-
187
- You can setup an APNS client to talk to it, then inspect the notifications the
188
- server received.
189
-
190
- The server simply exposes a blocking queue where notifications are placed when
191
- they are received. It is your responsibility to timeout if a message is not
192
- received in a reasonable amount of time.
193
-
194
- For example, in RSpec:
195
-
196
- ```ruby
197
- require 'timeout'
198
-
199
- describe "apple push notifications" do
200
- before do
201
- @server = Grocer.server(port: 2195)
202
- @server.accept # starts listening in background
203
- end
204
-
205
- after do
206
- @server.close
207
- end
208
-
209
- specify "As a user, I receive notifications on my phone when awesome things happen" do
210
- # ... exercise code that would send APNS notifications ...
211
-
212
- Timeout.timeout(3) {
213
- notification = @server.notifications.pop # blocking
214
- notification.alert.should == "An awesome thing happened"
215
- }
216
- end
217
- end
218
- ```
@@ -25,6 +25,7 @@ module Grocer
25
25
 
26
26
  def close
27
27
  if @ssl_socket
28
+ @ssl_socket.shutdown
28
29
  @ssl_socket.close
29
30
  @ssl_socket = nil
30
31
  @socket = nil
@@ -1,3 +1,3 @@
1
1
  module Grocer
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
  end
@@ -30,6 +30,13 @@ describe Grocer::SSLServer do
30
30
  end
31
31
 
32
32
  describe "#close" do
33
+ it "shutdowns the SSL socket" do
34
+ mock_ssl_server.expects(:shutdown)
35
+
36
+ subject.accept # "open" socket
37
+ subject.close
38
+ end
39
+
33
40
  it "closes the SSL socket" do
34
41
  mock_ssl_server.expects(:close)
35
42
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grocer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-05-18 00:00:00.000000000 Z
14
+ date: 2012-06-12 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec
18
- requirement: &70258720874480 !ruby/object:Gem::Requirement
18
+ requirement: !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ~>
@@ -23,10 +23,15 @@ dependencies:
23
23
  version: 2.10.0
24
24
  type: :development
25
25
  prerelease: false
26
- version_requirements: *70258720874480
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ~>
30
+ - !ruby/object:Gem::Version
31
+ version: 2.10.0
27
32
  - !ruby/object:Gem::Dependency
28
33
  name: pry
29
- requirement: &70258720873980 !ruby/object:Gem::Requirement
34
+ requirement: !ruby/object:Gem::Requirement
30
35
  none: false
31
36
  requirements:
32
37
  - - ~>
@@ -34,10 +39,15 @@ dependencies:
34
39
  version: 0.9.8
35
40
  type: :development
36
41
  prerelease: false
37
- version_requirements: *70258720873980
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 0.9.8
38
48
  - !ruby/object:Gem::Dependency
39
49
  name: mocha
40
- requirement: &70258720873600 !ruby/object:Gem::Requirement
50
+ requirement: !ruby/object:Gem::Requirement
41
51
  none: false
42
52
  requirements:
43
53
  - - ! '>='
@@ -45,10 +55,15 @@ dependencies:
45
55
  version: '0'
46
56
  type: :development
47
57
  prerelease: false
48
- version_requirements: *70258720873600
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
49
64
  - !ruby/object:Gem::Dependency
50
65
  name: bourne
51
- requirement: &70258720873140 !ruby/object:Gem::Requirement
66
+ requirement: !ruby/object:Gem::Requirement
52
67
  none: false
53
68
  requirements:
54
69
  - - ! '>='
@@ -56,10 +71,15 @@ dependencies:
56
71
  version: '0'
57
72
  type: :development
58
73
  prerelease: false
59
- version_requirements: *70258720873140
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
60
80
  - !ruby/object:Gem::Dependency
61
81
  name: rake
62
- requirement: &70258720872720 !ruby/object:Gem::Requirement
82
+ requirement: !ruby/object:Gem::Requirement
63
83
  none: false
64
84
  requirements:
65
85
  - - ! '>='
@@ -67,7 +87,12 @@ dependencies:
67
87
  version: '0'
68
88
  type: :development
69
89
  prerelease: false
70
- version_requirements: *70258720872720
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
71
96
  description: ! " Grocer interfaces with the Apple Push\n
72
97
  \ Notification Service to send push\n notifications
73
98
  to iOS devices and collect\n notification feedback via
@@ -140,7 +165,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
165
  version: '0'
141
166
  segments:
142
167
  - 0
143
- hash: 2882383851937463695
168
+ hash: -3763223415178507043
144
169
  required_rubygems_version: !ruby/object:Gem::Requirement
145
170
  none: false
146
171
  requirements:
@@ -149,10 +174,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
174
  version: '0'
150
175
  segments:
151
176
  - 0
152
- hash: 2882383851937463695
177
+ hash: -3763223415178507043
153
178
  requirements: []
154
179
  rubyforge_project:
155
- rubygems_version: 1.8.15
180
+ rubygems_version: 1.8.24
156
181
  signing_key:
157
182
  specification_version: 3
158
183
  summary: Pushing Apple notifications since 2012.