venice 0.2.0 → 0.3.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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +26 -22
  3. data/LICENSE +1 -1
  4. data/README.md +60 -25
  5. data/Rakefile +1 -2
  6. data/bin/iap +13 -0
  7. data/coverage/assets/0.10.0/application.css +799 -0
  8. data/coverage/assets/0.10.0/application.js +1707 -0
  9. data/coverage/assets/0.10.0/colorbox/border.png +0 -0
  10. data/coverage/assets/0.10.0/colorbox/controls.png +0 -0
  11. data/coverage/assets/0.10.0/colorbox/loading.gif +0 -0
  12. data/coverage/assets/0.10.0/colorbox/loading_background.png +0 -0
  13. data/coverage/assets/0.10.0/favicon_green.png +0 -0
  14. data/coverage/assets/0.10.0/favicon_red.png +0 -0
  15. data/coverage/assets/0.10.0/favicon_yellow.png +0 -0
  16. data/coverage/assets/0.10.0/loading.gif +0 -0
  17. data/coverage/assets/0.10.0/magnify.png +0 -0
  18. data/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  19. data/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  20. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  21. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  22. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  23. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  24. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  25. data/coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  26. data/coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
  27. data/coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  28. data/coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
  29. data/coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
  30. data/coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  31. data/coverage/index.html +2152 -0
  32. data/lib/venice.rb +1 -0
  33. data/lib/venice/client.rb +16 -8
  34. data/lib/venice/in_app_receipt.rb +92 -0
  35. data/lib/venice/receipt.rb +62 -58
  36. data/lib/venice/version.rb +1 -1
  37. data/spec/client_spec.rb +73 -6
  38. data/spec/in_app_receipt_spec.rb +58 -0
  39. data/spec/receipt_spec.rb +47 -70
  40. data/spec/spec_helper.rb +9 -1
  41. data/venice.gemspec +2 -2
  42. metadata +59 -35
  43. data/spec/receipt_verification_spec.rb +0 -19
  44. data/venice-0.1.0.gem +0 -0
  45. data/venice-0.1.1.gem +0 -0
data/spec/receipt_spec.rb CHANGED
@@ -2,54 +2,61 @@ require 'spec_helper'
2
2
 
3
3
  describe Venice::Receipt do
4
4
  describe "parsing the response" do
5
- let(:response) {
5
+ let(:response) do
6
6
  {
7
+ "status" => 0,
8
+ "environment" => "Production",
7
9
  "receipt" => {
8
- "original_purchase_date_pst" => "2012-12-30 09:39:24 America/Los_Angeles",
9
- "unique_identifier" => "0000b031c818",
10
- "original_transaction_id" => "1000000061051565",
11
- "expires_date" => "1357074383000",
12
- "transaction_id" => "1000000070107235",
13
- "quantity" => "1",
14
- "product_id" => "com.foo.product1",
15
- "item_id" => "590265423",
16
- "bid" => "com.foo.bar",
17
- "unique_vendor_identifier" => "77FA64BC-23BB-46CF-9A42-D022494D20D5",
18
- "web_order_line_item_id" => "1000000026510809",
19
- "bvrs" => "0.1",
20
- "expires_date_formatted" => "2013-01-01 21:06:23 Etc/GMT",
21
- "purchase_date" => "2013-01-01 21:01:23 Etc/GMT",
22
- "purchase_date_ms" => "1357074083000",
23
- "expires_date_formatted_pst" => "2013-01-01 13:06:23 America/Los_Angeles",
24
- "purchase_date_pst" => "2013-01-01 13:01:23 America/Los_Angeles",
25
- "original_purchase_date" => "2012-12-30 17:39:24 Etc/GMT",
26
- "original_purchase_date_ms" => "1356889164000"
27
- },
28
- "status" => 21006
10
+ "receipt_type" => "Production",
11
+ "adam_id" => 7654321,
12
+ "bundle_id" => "com.foo.bar",
13
+ "application_version" => "2",
14
+ "download_id" => 1234567,
15
+ "request_date" => "2014-06-04 23:20:47 Etc/GMT",
16
+ "request_date_ms" => "1401924047883",
17
+ "request_date_pst" => "2014-06-04 16:20:47 America/Los_Angeles",
18
+ "original_purchase_date" => "2014-05-17 02:09:45 Etc/GMT",
19
+ "original_purchase_date_ms" => "1400292585000",
20
+ "original_purchase_date_pst" => "2014-05-16 19:09:45 America/Los_Angeles",
21
+ "original_application_version" => "1",
22
+ "expiration_date" => "1401924047883",
23
+ "in_app" => [
24
+ {
25
+ "quantity" => "1",
26
+ "product_id" => "com.foo.product1",
27
+ "transaction_id" => "1000000070107111",
28
+ "original_transaction_id" => "1000000061051111",
29
+ "purchase_date" => "2014-05-28 14:47:53 Etc/GMT",
30
+ "purchase_date_ms" => "1401288473000",
31
+ "purchase_date_pst" => "2014-05-28 07:47:53 America/Los_Angeles",
32
+ "original_purchase_date" => "2014-05-28 14:47:53 Etc/GMT",
33
+ "original_purchase_date_ms" => "1401288473000",
34
+ "original_purchase_date_pst" => "2014-05-28 07:47:53 America/Los_Angeles",
35
+ "expires_date" => "2014-06-28 14:47:53 Etc/GMT",
36
+ "is_trial_period" => "false"
37
+ }
38
+ ]
39
+ }
29
40
  }
30
- }
41
+ end
42
+
31
43
  subject { Venice::Receipt.new(response['receipt']) }
32
44
 
33
- its(:quantity) { 1 }
34
- its(:product_id) { "com.foo.product1" }
35
- its(:transaction_id) { "1000000070107235" }
36
- its(:unique_identifier) { "0000b031c818" }
37
- its(:purchase_date) { should be_instance_of DateTime }
38
- its(:bvrs) { "0.1" }
39
- its(:bid) { "com.foo.bar" }
40
- its(:original) { should be_instance_of Venice::Receipt }
41
- its(:expires_at) { should be_instance_of Time }
42
-
43
- it "should parse the origin attributes" do
44
- subject.original.transaction_id.should == "1000000061051565"
45
- subject.original.purchase_date.should be_instance_of DateTime
46
- end
45
+ its(:bundle_id) { "com.foo.bar" }
46
+ its(:application_version) { "2" }
47
+ its(:in_app) { should be_instance_of Array }
48
+ its(:original_application_version) { "1" }
49
+ its(:original_purchase_date) { should be_instance_of DateTime }
50
+ its(:expires_at) { should be_instance_of DateTime }
51
+ its(:receipt_type) { "Production" }
52
+ its(:adam_id) { 7654321 }
53
+ its(:download_id) { 1234567 }
54
+ its(:requested_at) { should be_instance_of DateTime }
47
55
 
48
56
  describe "#verify!" do
57
+
49
58
  before do
50
- client = stub
51
- Venice::Client.stub(:production).and_return(client)
52
- client.stub(:verify!).and_return(response)
59
+ Venice::Client.any_instance.stub(:json_response_from_verifying_data).and_return(response)
53
60
  end
54
61
 
55
62
  let(:receipt) { Venice::Receipt.verify("asdf") }
@@ -57,37 +64,7 @@ describe Venice::Receipt do
57
64
  it "should create the receipt" do
58
65
  receipt.should_not be_nil
59
66
  end
60
-
61
- context "with a latest expired receipt attribute" do
62
- before do
63
- response['latest_expired_receipt_info'] = {
64
- "original_purchase_date_pst" => "2012-12-30 09:39:24 America/Los_Angeles",
65
- "unique_identifier" => "0000b01147b8",
66
- "original_transaction_id" => "1000000061051565",
67
- "expires_date" => "1365114731000",
68
- "transaction_id" => "1000000070104252",
69
- "quantity" => "1",
70
- "product_id" => "com.ficklebits.nsscreencast.monthly_sub",
71
- "original_purchase_date_ms" => "1356889164000",
72
- "bid" => "com.ficklebits.nsscreencast",
73
- "web_order_line_item_id" => "1000000026812043",
74
- "bvrs" => "0.1",
75
- "expires_date_formatted" => "2013-04-04 22:32:11 Etc/GMT",
76
- "purchase_date" => "2013-04-04 22:27:11 Etc/GMT",
77
- "purchase_date_ms" => "1365114431000",
78
- "expires_date_formatted_pst" => "2013-04-04 15:32:11 America/Los_Angeles",
79
- "purchase_date_pst" => "2013-04-04 15:27:11 America/Los_Angeles",
80
- "original_purchase_date" => "2012-12-30 17:39:24 Etc/GMT",
81
- "item_id" => "590265423"
82
- }
83
- end
84
-
85
- it "should create a latest expired receipt" do
86
- receipt.latest_expired.should_not be_nil
87
- end
88
- end
89
67
  end
90
68
 
91
69
  end
92
-
93
70
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  unless ENV['CI']
2
2
  require 'simplecov'
3
-
3
+
4
4
  SimpleCov.start do
5
5
  add_filter 'spec'
6
6
  add_filter '.bundle'
@@ -9,3 +9,11 @@ end
9
9
 
10
10
  require 'venice'
11
11
  require 'rspec'
12
+
13
+ RSpec.configure do |config|
14
+
15
+ config.mock_with :rspec do |mocks|
16
+ mocks.yield_receiver_to_any_instance_implementation_blocks = false
17
+ end
18
+
19
+ end
data/venice.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.authors = ["Mattt Thompson"]
8
8
  s.email = "m@mattt.me"
9
9
  s.license = "MIT"
10
- s.homepage = "http://github.com/mattt/venice"
10
+ s.homepage = "http://nomad-cli.com"
11
11
  s.version = Venice::VERSION
12
12
  s.platform = Gem::Platform::RUBY
13
13
  s.summary = "iTunes In-App Purchase Receipt Verification"
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.add_dependency "commander", "~> 4.1"
18
18
  s.add_dependency "terminal-table", "~> 1.4"
19
19
 
20
- s.add_development_dependency "rspec"
20
+ s.add_development_dependency "rspec", "~> 2.99.0"
21
21
  s.add_development_dependency "rake"
22
22
  s.add_development_dependency "simplecov"
23
23
 
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: venice
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mattt Thompson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-30 00:00:00.000000000 Z
11
+ date: 2016-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: commander
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '4.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '4.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: terminal-table
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.4'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.4'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 2.99.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 2.99.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ! '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description: ''
@@ -101,25 +101,49 @@ executables:
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
- - ./Gemfile
105
- - ./Gemfile.lock
106
- - ./lib/venice/client.rb
107
- - ./lib/venice/receipt.rb
108
- - ./lib/venice/version.rb
109
- - ./lib/venice.rb
110
- - ./LICENSE
111
- - ./Rakefile
112
- - ./README.md
113
- - ./venice-0.1.0.gem
114
- - ./venice-0.1.1.gem
115
- - ./venice.gemspec
104
+ - "./Gemfile"
105
+ - "./Gemfile.lock"
106
+ - "./LICENSE"
107
+ - "./README.md"
108
+ - "./Rakefile"
109
+ - "./coverage/assets/0.10.0/application.css"
110
+ - "./coverage/assets/0.10.0/application.js"
111
+ - "./coverage/assets/0.10.0/colorbox/border.png"
112
+ - "./coverage/assets/0.10.0/colorbox/controls.png"
113
+ - "./coverage/assets/0.10.0/colorbox/loading.gif"
114
+ - "./coverage/assets/0.10.0/colorbox/loading_background.png"
115
+ - "./coverage/assets/0.10.0/favicon_green.png"
116
+ - "./coverage/assets/0.10.0/favicon_red.png"
117
+ - "./coverage/assets/0.10.0/favicon_yellow.png"
118
+ - "./coverage/assets/0.10.0/loading.gif"
119
+ - "./coverage/assets/0.10.0/magnify.png"
120
+ - "./coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png"
121
+ - "./coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png"
122
+ - "./coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png"
123
+ - "./coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png"
124
+ - "./coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png"
125
+ - "./coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png"
126
+ - "./coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png"
127
+ - "./coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
128
+ - "./coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png"
129
+ - "./coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png"
130
+ - "./coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png"
131
+ - "./coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png"
132
+ - "./coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png"
133
+ - "./coverage/index.html"
134
+ - "./lib/venice.rb"
135
+ - "./lib/venice/client.rb"
136
+ - "./lib/venice/in_app_receipt.rb"
137
+ - "./lib/venice/receipt.rb"
138
+ - "./lib/venice/version.rb"
139
+ - "./venice.gemspec"
140
+ - bin/iap
116
141
  - spec/client_spec.rb
142
+ - spec/in_app_receipt_spec.rb
117
143
  - spec/receipt
118
144
  - spec/receipt_spec.rb
119
- - spec/receipt_verification_spec.rb
120
145
  - spec/spec_helper.rb
121
- - bin/iap
122
- homepage: http://github.com/mattt/venice
146
+ homepage: http://nomad-cli.com
123
147
  licenses:
124
148
  - MIT
125
149
  metadata: {}
@@ -129,23 +153,23 @@ require_paths:
129
153
  - lib
130
154
  required_ruby_version: !ruby/object:Gem::Requirement
131
155
  requirements:
132
- - - ! '>='
156
+ - - ">="
133
157
  - !ruby/object:Gem::Version
134
158
  version: '0'
135
159
  required_rubygems_version: !ruby/object:Gem::Requirement
136
160
  requirements:
137
- - - ! '>='
161
+ - - ">="
138
162
  - !ruby/object:Gem::Version
139
163
  version: '0'
140
164
  requirements: []
141
165
  rubyforge_project:
142
- rubygems_version: 2.0.3
166
+ rubygems_version: 2.4.5
143
167
  signing_key:
144
168
  specification_version: 4
145
169
  summary: iTunes In-App Purchase Receipt Verification
146
170
  test_files:
147
171
  - spec/client_spec.rb
172
+ - spec/in_app_receipt_spec.rb
148
173
  - spec/receipt
149
174
  - spec/receipt_spec.rb
150
- - spec/receipt_verification_spec.rb
151
175
  - spec/spec_helper.rb
@@ -1,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RECEIPT_DATA = File.read(File.join(File.dirname(__FILE__), "receipt"))
4
-
5
- describe 'Receipt Verification' do
6
- describe 'production' do
7
- it 'verifies a receipt' do
8
-
9
- lambda {
10
- receipt = Venice::Receipt.verify!(RECEIPT_DATA)
11
-
12
- receipt.quantity.should == 1
13
- receipt.product_id.should == "com.mindmobapp.download"
14
- receipt.transaction_id.should == "1000000046178817"
15
- receipt.original.should_not be nil
16
- }.should_not raise_error
17
- end
18
- end
19
- end
data/venice-0.1.0.gem DELETED
Binary file
data/venice-0.1.1.gem DELETED
Binary file