candy_check 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +1 -0
- data/.rubocop.yml +10 -0
- data/.ruby-version +1 -1
- data/Gemfile +1 -1
- data/Guardfile +5 -3
- data/Rakefile +5 -5
- data/candy_check.gemspec +10 -10
- data/lib/candy_check/app_store/client.rb +7 -7
- data/lib/candy_check/app_store/config.rb +7 -9
- data/lib/candy_check/app_store/receipt.rb +16 -16
- data/lib/candy_check/app_store/receipt_collection.rb +2 -2
- data/lib/candy_check/app_store/subscription_verification.rb +5 -5
- data/lib/candy_check/app_store/verification.rb +3 -3
- data/lib/candy_check/app_store/verification_failure.rb +25 -21
- data/lib/candy_check/app_store/verifier.rb +4 -5
- data/lib/candy_check/app_store.rb +8 -8
- data/lib/candy_check/cli/app.rb +1 -1
- data/lib/candy_check/cli/commands/app_store.rb +1 -1
- data/lib/candy_check/cli/commands.rb +4 -4
- data/lib/candy_check/cli/out.rb +1 -3
- data/lib/candy_check/cli.rb +3 -3
- data/lib/candy_check/play_store/product_acknowledgements/acknowledgement.rb +2 -1
- data/lib/candy_check/play_store/product_purchases/product_purchase.rb +3 -3
- data/lib/candy_check/play_store/product_purchases/product_verification.rb +1 -1
- data/lib/candy_check/play_store/subscription_purchases/subscription_purchase.rb +2 -1
- data/lib/candy_check/play_store/subscription_purchases/subscription_verification.rb +1 -0
- data/lib/candy_check/play_store/verification_failure.rb +2 -2
- data/lib/candy_check/utils/attribute_reader.rb +3 -2
- data/lib/candy_check/utils/config.rb +2 -0
- data/lib/candy_check/utils.rb +2 -2
- data/lib/candy_check/version.rb +1 -1
- data/lib/candy_check.rb +4 -4
- data/spec/app_store/client_spec.rb +18 -18
- data/spec/app_store/config_spec.rb +9 -9
- data/spec/app_store/receipt_collection_spec.rb +38 -40
- data/spec/app_store/receipt_spec.rb +47 -47
- data/spec/app_store/subscription_verification_spec.rb +35 -32
- data/spec/app_store/verifcation_failure_spec.rb +7 -7
- data/spec/app_store/verification_spec.rb +23 -11
- data/spec/app_store/verifier_spec.rb +40 -48
- data/spec/cli/app_spec.rb +11 -13
- data/spec/cli/commands/app_store_spec.rb +22 -23
- data/spec/cli/commands/play_store_spec.rb +3 -1
- data/spec/cli/commands/version_spec.rb +2 -2
- data/spec/cli/out_spec.rb +9 -9
- data/spec/play_store/acknowledger_spec.rb +4 -0
- data/spec/play_store/product_acknowledgements/acknowledgement_spec.rb +4 -0
- data/spec/play_store/product_acknowledgements/response_spec.rb +16 -15
- data/spec/play_store/product_purchases/product_purchase_spec.rb +6 -27
- data/spec/play_store/subscription_purchases/subscription_purchase_spec.rb +22 -46
- data/spec/play_store/verification_failure_spec.rb +6 -4
- data/spec/play_store/verifier_spec.rb +4 -2
- data/spec/spec_helper.rb +5 -7
- metadata +76 -76
@@ -5,10 +5,10 @@ describe CandyCheck::PlayStore::SubscriptionPurchases::SubscriptionPurchase do
|
|
5
5
|
|
6
6
|
describe "expired and canceled subscription" do
|
7
7
|
let(:fake_subscription_purchase) do
|
8
|
-
|
8
|
+
OpenStruct.new(
|
9
9
|
kind: "androidpublisher#subscriptionPurchase",
|
10
|
-
start_time_millis:
|
11
|
-
expiry_time_millis:
|
10
|
+
start_time_millis: 1_459_540_113_244,
|
11
|
+
expiry_time_millis: 1_462_132_088_610,
|
12
12
|
auto_renewing: false,
|
13
13
|
developer_payload: "payload that gets stored and returned",
|
14
14
|
cancel_reason: 0,
|
@@ -66,10 +66,11 @@ describe CandyCheck::PlayStore::SubscriptionPurchases::SubscriptionPurchase do
|
|
66
66
|
|
67
67
|
describe "unexpired and renewing subscription" do
|
68
68
|
two_days_from_now = DateTime.now + 2
|
69
|
+
|
69
70
|
let(:fake_subscription_purchase) do
|
70
|
-
|
71
|
+
OpenStruct.new(
|
71
72
|
kind: "androidpublisher#subscriptionPurchase",
|
72
|
-
start_time_millis:
|
73
|
+
start_time_millis: 1_459_540_113_244,
|
73
74
|
expiry_time_millis: (two_days_from_now.to_time.to_i * 1000),
|
74
75
|
auto_renewing: true,
|
75
76
|
developer_payload: "payload that gets stored and returned",
|
@@ -89,10 +90,10 @@ describe CandyCheck::PlayStore::SubscriptionPurchases::SubscriptionPurchase do
|
|
89
90
|
|
90
91
|
describe "expired due to payment failure" do
|
91
92
|
let(:fake_subscription_purchase) do
|
92
|
-
|
93
|
+
OpenStruct.new(
|
93
94
|
kind: "androidpublisher#subscriptionPurchase",
|
94
|
-
start_time_millis:
|
95
|
-
expiry_time_millis:
|
95
|
+
start_time_millis: 1_459_540_113_244,
|
96
|
+
expiry_time_millis: 1_462_132_088_610,
|
96
97
|
auto_renewing: true,
|
97
98
|
developer_payload: "payload that gets stored and returned",
|
98
99
|
cancel_reason: 1,
|
@@ -112,10 +113,10 @@ describe CandyCheck::PlayStore::SubscriptionPurchases::SubscriptionPurchase do
|
|
112
113
|
describe "subscription cancelation by user" do
|
113
114
|
describe "when subscription is not canceled" do
|
114
115
|
let(:fake_subscription_purchase) do
|
115
|
-
|
116
|
+
OpenStruct.new(
|
116
117
|
kind: "androidpublisher#subscriptionPurchase",
|
117
|
-
start_time_millis:
|
118
|
-
expiry_time_millis:
|
118
|
+
start_time_millis: 1_459_540_113_244,
|
119
|
+
expiry_time_millis: 1_462_132_088_610,
|
119
120
|
auto_renewing: true,
|
120
121
|
developer_payload: "payload that gets stored and returned",
|
121
122
|
payment_state: 1,
|
@@ -137,11 +138,11 @@ describe CandyCheck::PlayStore::SubscriptionPurchases::SubscriptionPurchase do
|
|
137
138
|
|
138
139
|
describe "when subscription is canceled" do
|
139
140
|
let(:fake_subscription_purchase) do
|
140
|
-
|
141
|
+
OpenStruct.new(
|
141
142
|
kind: "androidpublisher#subscriptionPurchase",
|
142
|
-
start_time_millis:
|
143
|
-
expiry_time_millis:
|
144
|
-
user_cancellation_time_millis:
|
143
|
+
start_time_millis: 1_459_540_113_244,
|
144
|
+
expiry_time_millis: 1_462_132_088_610,
|
145
|
+
user_cancellation_time_millis: 1_461_872_888_000,
|
145
146
|
auto_renewing: true,
|
146
147
|
developer_payload: "payload that gets stored and returned",
|
147
148
|
cancel_reason: 0,
|
@@ -166,10 +167,10 @@ describe CandyCheck::PlayStore::SubscriptionPurchases::SubscriptionPurchase do
|
|
166
167
|
|
167
168
|
describe "expired with pending payment" do
|
168
169
|
let(:fake_subscription_purchase) do
|
169
|
-
|
170
|
+
OpenStruct.new(
|
170
171
|
kind: "androidpublisher#subscriptionPurchase",
|
171
|
-
start_time_millis:
|
172
|
-
expiry_time_millis:
|
172
|
+
start_time_millis: 1_459_540_113_244,
|
173
|
+
expiry_time_millis: 1_462_132_088_610,
|
173
174
|
auto_renewing: true,
|
174
175
|
developer_payload: "payload that gets stored and returned",
|
175
176
|
cancel_reason: 0,
|
@@ -188,10 +189,10 @@ describe CandyCheck::PlayStore::SubscriptionPurchases::SubscriptionPurchase do
|
|
188
189
|
|
189
190
|
describe "trial" do
|
190
191
|
let(:fake_subscription_purchase) do
|
191
|
-
|
192
|
+
OpenStruct.new(
|
192
193
|
kind: "androidpublisher#subscriptionPurchase",
|
193
|
-
start_time_millis:
|
194
|
-
expiry_time_millis:
|
194
|
+
start_time_millis: 1_459_540_113_244,
|
195
|
+
expiry_time_millis: 1_462_132_088_610,
|
195
196
|
auto_renewing: false,
|
196
197
|
developer_payload: "payload that gets stored and returned",
|
197
198
|
cancel_reason: 0,
|
@@ -209,29 +210,4 @@ describe CandyCheck::PlayStore::SubscriptionPurchases::SubscriptionPurchase do
|
|
209
210
|
_(subject.price_currency_code).must_equal "SOMECODE"
|
210
211
|
end
|
211
212
|
end
|
212
|
-
|
213
|
-
private
|
214
|
-
|
215
|
-
class FakeSubscriptionPurchase
|
216
|
-
FIELDS = [
|
217
|
-
:kind,
|
218
|
-
:start_time_millis,
|
219
|
-
:expiry_time_millis,
|
220
|
-
:user_cancellation_time_millis,
|
221
|
-
:auto_renewing,
|
222
|
-
:developer_payload,
|
223
|
-
:cancel_reason,
|
224
|
-
:payment_state,
|
225
|
-
:price_amount_micros,
|
226
|
-
:price_currency_code,
|
227
|
-
].freeze
|
228
|
-
|
229
|
-
attr_accessor(*FIELDS)
|
230
|
-
|
231
|
-
def initialize(hash)
|
232
|
-
FIELDS.each do |key|
|
233
|
-
self.public_send("#{key}=", hash[key])
|
234
|
-
end
|
235
|
-
end
|
236
|
-
end
|
237
213
|
end
|
@@ -3,9 +3,13 @@ require "spec_helper"
|
|
3
3
|
describe CandyCheck::PlayStore::VerificationFailure do
|
4
4
|
subject { CandyCheck::PlayStore::VerificationFailure.new(fake_error) }
|
5
5
|
|
6
|
+
let(:fake_error_class) do
|
7
|
+
Struct.new(:status_code, :message)
|
8
|
+
end
|
9
|
+
|
6
10
|
describe "denied" do
|
7
11
|
let(:fake_error) do
|
8
|
-
|
12
|
+
fake_error_class.new("401", "The current user has insufficient permissions")
|
9
13
|
end
|
10
14
|
|
11
15
|
it "returns the code" do
|
@@ -19,7 +23,7 @@ describe CandyCheck::PlayStore::VerificationFailure do
|
|
19
23
|
|
20
24
|
describe "empty" do
|
21
25
|
let(:fake_error) do
|
22
|
-
|
26
|
+
fake_error_class.new(nil, nil)
|
23
27
|
end
|
24
28
|
|
25
29
|
it "returns an unknown code" do
|
@@ -30,6 +34,4 @@ describe CandyCheck::PlayStore::VerificationFailure do
|
|
30
34
|
_(subject.message).must_equal "Unknown error"
|
31
35
|
end
|
32
36
|
end
|
33
|
-
|
34
|
-
FakeError = Struct.new(:status_code, :message)
|
35
37
|
end
|
@@ -32,14 +32,16 @@ describe CandyCheck::PlayStore::Verifier do
|
|
32
32
|
describe "subscription purchases" do
|
33
33
|
it "verifies a subscription purchase" do
|
34
34
|
VCR.use_cassette("play_store/subscription_purchases/valid_but_expired") do
|
35
|
-
result = subject.verify_subscription_purchase(package_name: package_name, subscription_id: subscription_id,
|
35
|
+
result = subject.verify_subscription_purchase(package_name: package_name, subscription_id: subscription_id,
|
36
|
+
token: token)
|
36
37
|
_(result).must_be_instance_of CandyCheck::PlayStore::SubscriptionPurchases::SubscriptionPurchase
|
37
38
|
end
|
38
39
|
end
|
39
40
|
|
40
41
|
it "can return a subscription purchase verification failure" do
|
41
42
|
VCR.use_cassette("play_store/subscription_purchases/permission_denied") do
|
42
|
-
result = subject.verify_subscription_purchase(package_name: package_name, subscription_id: subscription_id,
|
43
|
+
result = subject.verify_subscription_purchase(package_name: package_name, subscription_id: subscription_id,
|
44
|
+
token: token)
|
43
45
|
_(result).must_be_instance_of CandyCheck::PlayStore::VerificationFailure
|
44
46
|
end
|
45
47
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
require "candy_check"
|
3
2
|
require "candy_check/cli"
|
4
3
|
|
@@ -38,14 +37,13 @@ require_relative "support/with_command"
|
|
38
37
|
|
39
38
|
ENV["DEBUG"] && Google::APIClient.logger.level = Logger::DEBUG
|
40
39
|
|
41
|
-
|
42
|
-
class
|
43
|
-
|
40
|
+
module MiniTest
|
41
|
+
class Spec
|
42
|
+
class << self
|
43
|
+
alias context describe
|
44
|
+
end
|
44
45
|
end
|
45
|
-
end
|
46
|
-
|
47
46
|
|
48
|
-
module MiniTest
|
49
47
|
module Assertions
|
50
48
|
# The first parameter must be ```true```, not coercible to true.
|
51
49
|
def assert_true(obj, msg = nil)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: candy_check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Thiel
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-02-
|
12
|
+
date: 2023-02-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-apis-androidpublisher_v3
|
@@ -17,28 +17,28 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0.
|
20
|
+
version: 0.34.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 0.
|
27
|
+
version: 0.34.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: googleauth
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.
|
34
|
+
version: 1.3.0
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.
|
41
|
+
version: 1.3.0
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: multi_json
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,63 +68,49 @@ dependencies:
|
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '2.0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - "~>"
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '2.0'
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - "~>"
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '2.0'
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: inch
|
71
|
+
name: awesome_print
|
86
72
|
requirement: !ruby/object:Gem::Requirement
|
87
73
|
requirements:
|
88
|
-
- - "
|
74
|
+
- - ">="
|
89
75
|
- !ruby/object:Gem::Version
|
90
|
-
version: '0
|
76
|
+
version: '0'
|
91
77
|
type: :development
|
92
78
|
prerelease: false
|
93
79
|
version_requirements: !ruby/object:Gem::Requirement
|
94
80
|
requirements:
|
95
|
-
- - "
|
81
|
+
- - ">="
|
96
82
|
- !ruby/object:Gem::Version
|
97
|
-
version: '0
|
83
|
+
version: '0'
|
98
84
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
85
|
+
name: bundler
|
100
86
|
requirement: !ruby/object:Gem::Requirement
|
101
87
|
requirements:
|
102
88
|
- - "~>"
|
103
89
|
- !ruby/object:Gem::Version
|
104
|
-
version: '
|
90
|
+
version: '2.0'
|
105
91
|
type: :development
|
106
92
|
prerelease: false
|
107
93
|
version_requirements: !ruby/object:Gem::Requirement
|
108
94
|
requirements:
|
109
95
|
- - "~>"
|
110
96
|
- !ruby/object:Gem::Version
|
111
|
-
version: '
|
97
|
+
version: '2.0'
|
112
98
|
- !ruby/object:Gem::Dependency
|
113
|
-
name:
|
99
|
+
name: guard
|
114
100
|
requirement: !ruby/object:Gem::Requirement
|
115
101
|
requirements:
|
116
|
-
- - "
|
102
|
+
- - ">="
|
117
103
|
- !ruby/object:Gem::Version
|
118
|
-
version: '0
|
104
|
+
version: '0'
|
119
105
|
type: :development
|
120
106
|
prerelease: false
|
121
107
|
version_requirements: !ruby/object:Gem::Requirement
|
122
108
|
requirements:
|
123
|
-
- - "
|
109
|
+
- - ">="
|
124
110
|
- !ruby/object:Gem::Version
|
125
|
-
version: '0
|
111
|
+
version: '0'
|
126
112
|
- !ruby/object:Gem::Dependency
|
127
|
-
name: minitest
|
113
|
+
name: guard-minitest
|
128
114
|
requirement: !ruby/object:Gem::Requirement
|
129
115
|
requirements:
|
130
116
|
- - ">="
|
@@ -138,63 +124,63 @@ dependencies:
|
|
138
124
|
- !ruby/object:Gem::Version
|
139
125
|
version: '0'
|
140
126
|
- !ruby/object:Gem::Dependency
|
141
|
-
name:
|
127
|
+
name: inch
|
142
128
|
requirement: !ruby/object:Gem::Requirement
|
143
129
|
requirements:
|
144
130
|
- - "~>"
|
145
131
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
132
|
+
version: '0.7'
|
147
133
|
type: :development
|
148
134
|
prerelease: false
|
149
135
|
version_requirements: !ruby/object:Gem::Requirement
|
150
136
|
requirements:
|
151
137
|
- - "~>"
|
152
138
|
- !ruby/object:Gem::Version
|
153
|
-
version: '
|
139
|
+
version: '0.7'
|
154
140
|
- !ruby/object:Gem::Dependency
|
155
|
-
name:
|
141
|
+
name: minitest
|
156
142
|
requirement: !ruby/object:Gem::Requirement
|
157
143
|
requirements:
|
158
144
|
- - "~>"
|
159
145
|
- !ruby/object:Gem::Version
|
160
|
-
version: '
|
146
|
+
version: '5.10'
|
161
147
|
type: :development
|
162
148
|
prerelease: false
|
163
149
|
version_requirements: !ruby/object:Gem::Requirement
|
164
150
|
requirements:
|
165
151
|
- - "~>"
|
166
152
|
- !ruby/object:Gem::Version
|
167
|
-
version: '
|
153
|
+
version: '5.10'
|
168
154
|
- !ruby/object:Gem::Dependency
|
169
|
-
name:
|
155
|
+
name: minitest-around
|
170
156
|
requirement: !ruby/object:Gem::Requirement
|
171
157
|
requirements:
|
172
158
|
- - "~>"
|
173
159
|
- !ruby/object:Gem::Version
|
174
|
-
version: '0.
|
160
|
+
version: '0.4'
|
175
161
|
type: :development
|
176
162
|
prerelease: false
|
177
163
|
version_requirements: !ruby/object:Gem::Requirement
|
178
164
|
requirements:
|
179
165
|
- - "~>"
|
180
166
|
- !ruby/object:Gem::Version
|
181
|
-
version: '0.
|
167
|
+
version: '0.4'
|
182
168
|
- !ruby/object:Gem::Dependency
|
183
|
-
name:
|
169
|
+
name: minitest-focus
|
184
170
|
requirement: !ruby/object:Gem::Requirement
|
185
171
|
requirements:
|
186
|
-
- - "
|
172
|
+
- - ">="
|
187
173
|
- !ruby/object:Gem::Version
|
188
|
-
version: '
|
174
|
+
version: '0'
|
189
175
|
type: :development
|
190
176
|
prerelease: false
|
191
177
|
version_requirements: !ruby/object:Gem::Requirement
|
192
178
|
requirements:
|
193
|
-
- - "
|
179
|
+
- - ">="
|
194
180
|
- !ruby/object:Gem::Version
|
195
|
-
version: '
|
181
|
+
version: '0'
|
196
182
|
- !ruby/object:Gem::Dependency
|
197
|
-
name:
|
183
|
+
name: pry
|
198
184
|
requirement: !ruby/object:Gem::Requirement
|
199
185
|
requirements:
|
200
186
|
- - ">="
|
@@ -208,89 +194,103 @@ dependencies:
|
|
208
194
|
- !ruby/object:Gem::Version
|
209
195
|
version: '0'
|
210
196
|
- !ruby/object:Gem::Dependency
|
211
|
-
name:
|
197
|
+
name: rake
|
212
198
|
requirement: !ruby/object:Gem::Requirement
|
213
199
|
requirements:
|
214
|
-
- - "
|
200
|
+
- - "~>"
|
215
201
|
- !ruby/object:Gem::Version
|
216
|
-
version: '0'
|
202
|
+
version: '13.0'
|
217
203
|
type: :development
|
218
204
|
prerelease: false
|
219
205
|
version_requirements: !ruby/object:Gem::Requirement
|
220
206
|
requirements:
|
221
|
-
- - "
|
207
|
+
- - "~>"
|
222
208
|
- !ruby/object:Gem::Version
|
223
|
-
version: '0'
|
209
|
+
version: '13.0'
|
224
210
|
- !ruby/object:Gem::Dependency
|
225
|
-
name:
|
211
|
+
name: rubocop
|
226
212
|
requirement: !ruby/object:Gem::Requirement
|
227
213
|
requirements:
|
228
|
-
- - "
|
214
|
+
- - "~>"
|
229
215
|
- !ruby/object:Gem::Version
|
230
|
-
version: '
|
216
|
+
version: '1.46'
|
231
217
|
type: :development
|
232
218
|
prerelease: false
|
233
219
|
version_requirements: !ruby/object:Gem::Requirement
|
234
220
|
requirements:
|
235
|
-
- - "
|
221
|
+
- - "~>"
|
236
222
|
- !ruby/object:Gem::Version
|
237
|
-
version: '
|
223
|
+
version: '1.46'
|
238
224
|
- !ruby/object:Gem::Dependency
|
239
|
-
name:
|
225
|
+
name: simplecov
|
240
226
|
requirement: !ruby/object:Gem::Requirement
|
241
227
|
requirements:
|
242
|
-
- - "
|
228
|
+
- - "~>"
|
243
229
|
- !ruby/object:Gem::Version
|
244
|
-
version:
|
230
|
+
version: 0.18.0
|
245
231
|
type: :development
|
246
232
|
prerelease: false
|
247
233
|
version_requirements: !ruby/object:Gem::Requirement
|
248
234
|
requirements:
|
249
|
-
- - "
|
235
|
+
- - "~>"
|
250
236
|
- !ruby/object:Gem::Version
|
251
|
-
version:
|
237
|
+
version: 0.18.0
|
252
238
|
- !ruby/object:Gem::Dependency
|
253
|
-
name:
|
239
|
+
name: simplecov-lcov
|
254
240
|
requirement: !ruby/object:Gem::Requirement
|
255
241
|
requirements:
|
256
|
-
- - "
|
242
|
+
- - "~>"
|
257
243
|
- !ruby/object:Gem::Version
|
258
|
-
version:
|
244
|
+
version: 0.8.0
|
259
245
|
type: :development
|
260
246
|
prerelease: false
|
261
247
|
version_requirements: !ruby/object:Gem::Requirement
|
262
248
|
requirements:
|
263
|
-
- - "
|
249
|
+
- - "~>"
|
264
250
|
- !ruby/object:Gem::Version
|
265
|
-
version:
|
251
|
+
version: 0.8.0
|
266
252
|
- !ruby/object:Gem::Dependency
|
267
|
-
name:
|
253
|
+
name: timecop
|
268
254
|
requirement: !ruby/object:Gem::Requirement
|
269
255
|
requirements:
|
270
256
|
- - "~>"
|
271
257
|
- !ruby/object:Gem::Version
|
272
|
-
version: 0.
|
258
|
+
version: '0.9'
|
273
259
|
type: :development
|
274
260
|
prerelease: false
|
275
261
|
version_requirements: !ruby/object:Gem::Requirement
|
276
262
|
requirements:
|
277
263
|
- - "~>"
|
278
264
|
- !ruby/object:Gem::Version
|
279
|
-
version: 0.
|
265
|
+
version: '0.9'
|
280
266
|
- !ruby/object:Gem::Dependency
|
281
|
-
name:
|
267
|
+
name: vcr
|
282
268
|
requirement: !ruby/object:Gem::Requirement
|
283
269
|
requirements:
|
284
270
|
- - "~>"
|
285
271
|
- !ruby/object:Gem::Version
|
286
|
-
version:
|
272
|
+
version: '6.1'
|
287
273
|
type: :development
|
288
274
|
prerelease: false
|
289
275
|
version_requirements: !ruby/object:Gem::Requirement
|
290
276
|
requirements:
|
291
277
|
- - "~>"
|
292
278
|
- !ruby/object:Gem::Version
|
293
|
-
version:
|
279
|
+
version: '6.1'
|
280
|
+
- !ruby/object:Gem::Dependency
|
281
|
+
name: webmock
|
282
|
+
requirement: !ruby/object:Gem::Requirement
|
283
|
+
requirements:
|
284
|
+
- - "~>"
|
285
|
+
- !ruby/object:Gem::Version
|
286
|
+
version: '3.0'
|
287
|
+
type: :development
|
288
|
+
prerelease: false
|
289
|
+
version_requirements: !ruby/object:Gem::Requirement
|
290
|
+
requirements:
|
291
|
+
- - "~>"
|
292
|
+
- !ruby/object:Gem::Version
|
293
|
+
version: '3.0'
|
294
294
|
description:
|
295
295
|
email:
|
296
296
|
- jonas@thiel.io
|
@@ -399,7 +399,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
399
399
|
- !ruby/object:Gem::Version
|
400
400
|
version: '0'
|
401
401
|
requirements: []
|
402
|
-
rubygems_version: 3.
|
402
|
+
rubygems_version: 3.4.6
|
403
403
|
signing_key:
|
404
404
|
specification_version: 4
|
405
405
|
summary: Check and verify in-app receipts
|