mswallet 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +64 -0
- data/.travis.yml +14 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +67 -0
- data/LICENSE.txt +22 -0
- data/README.md +91 -0
- data/README.ru.md +90 -0
- data/Rakefile +1 -0
- data/WalletItem.xsd +243 -0
- data/lib/mswallet.rb +14 -0
- data/lib/mswallet/pass.rb +187 -0
- data/lib/mswallet/version.rb +5 -0
- data/lib/rack/mswallet_rack.rb +52 -0
- data/mswallet.gemspec +31 -0
- data/spec/mswallet/mswallet_spec.rb +8 -0
- data/spec/mswallet/pass_spec.rb +190 -0
- data/spec/rack/mswallet_rack_spec.rb +139 -0
- data/spec/spec_helper.rb +42 -0
- metadata +194 -0
@@ -0,0 +1,139 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
|
3
|
+
describe Rack::MswalletRack do
|
4
|
+
|
5
|
+
let(:serial) { '1' }
|
6
|
+
let(:update_path) { "/v1/walletitems/#{serial}" }
|
7
|
+
let(:auth_token) {"3c0adc9ccbcf3e733edeb897043a4835"}
|
8
|
+
|
9
|
+
let :fields do
|
10
|
+
{
|
11
|
+
'Version' => ['Format Version missing', '1' ],
|
12
|
+
'Kind' => ['Pass Kind Identifier missing', 'General' ],
|
13
|
+
'Id' => ['Id missing', '1'],
|
14
|
+
'DisplayName' => ['Display Name missing' ],
|
15
|
+
'IssuerDisplayName' => ['Issuer Display Name missing'],
|
16
|
+
'HeaderColor' => ['Header Color missing', %W(#000000 #AABBCC)],
|
17
|
+
'BodyColor' => ['Body Name missing', %W(#000000 #AABBCC)]
|
18
|
+
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
let :wallet do
|
23
|
+
w = Mswallet::Pass.init
|
24
|
+
fields.each do |*args|
|
25
|
+
tag, msg, *value = args.flatten.map(&:to_s)
|
26
|
+
el = XML::Node.new(tag)
|
27
|
+
w.root << el
|
28
|
+
|
29
|
+
case value
|
30
|
+
when Array
|
31
|
+
el.content = value.first.to_s
|
32
|
+
when nil
|
33
|
+
|
34
|
+
else
|
35
|
+
el.content = value
|
36
|
+
end
|
37
|
+
end
|
38
|
+
w
|
39
|
+
end
|
40
|
+
let :pass do
|
41
|
+
p = Mswallet::Pass.new wallet
|
42
|
+
[99, 159, 336].each do |size|
|
43
|
+
p.add_file name: "Logo#{size}x#{size}.png", content: ''
|
44
|
+
end
|
45
|
+
p
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'find id' do
|
49
|
+
let(:wallet_rack) {Rack::MswalletRack.new nil}
|
50
|
+
shared_examples_for 'id that can handle non wallet urls' do
|
51
|
+
context 'incomplete wallet api path' do
|
52
|
+
subject {wallet_rack.find_id('/1/walletitems/')}
|
53
|
+
it {should eq nil}
|
54
|
+
end
|
55
|
+
context 'no version api path' do
|
56
|
+
subject {wallet_rack.find_id('/walletitems/123')}
|
57
|
+
it {should eq nil}
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'device update pass' do
|
62
|
+
context 'a valid path' do
|
63
|
+
subject {wallet_rack.find_id(update_path)}
|
64
|
+
it {should eq(serial) }
|
65
|
+
end
|
66
|
+
it_behaves_like 'id that can handle non wallet urls'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'rack middleware' do
|
71
|
+
let(:result) { nil }
|
72
|
+
before do
|
73
|
+
expect(Mswallet::Handler).to receive(:update).with('path' => update_path, 'serialNumber' => serial).and_return (result)
|
74
|
+
get update_path
|
75
|
+
end
|
76
|
+
subject { last_response.status }
|
77
|
+
|
78
|
+
context 'get update pass with exist serial' do
|
79
|
+
context 'with MSwallet::Pass result' do
|
80
|
+
let(:result) { pass }
|
81
|
+
it { should eq 200 }
|
82
|
+
end
|
83
|
+
|
84
|
+
context 'with string result' do
|
85
|
+
let(:result) { '' }
|
86
|
+
it { should eq 200 }
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'with IO result' do
|
90
|
+
let(:result) { StringIO.new '' }
|
91
|
+
it { should eq 200 }
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
context 'get update pass with wrong serial' do
|
97
|
+
it { should eq 401 }
|
98
|
+
end
|
99
|
+
|
100
|
+
context 'get update for unchanged pass' do
|
101
|
+
let(:result) { false }
|
102
|
+
it { should eq 304 }
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'custom handler class' do
|
106
|
+
before do
|
107
|
+
Mswallet.configure do |m|
|
108
|
+
m.custom_rack_handler = MyCustomHandler
|
109
|
+
end
|
110
|
+
expect(MyCustomHandler).to receive(:update).with('path' => update_path, 'serialNumber' => serial).and_return (result)
|
111
|
+
get update_path
|
112
|
+
end
|
113
|
+
let(:result) { pass }
|
114
|
+
it { should eq 200 }
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
require 'rack/test'
|
121
|
+
include Rack::Test::Methods
|
122
|
+
def app
|
123
|
+
test_app = lambda do |env|
|
124
|
+
[200, {}, 'test app']
|
125
|
+
end
|
126
|
+
Rack::MswalletRack.new test_app
|
127
|
+
end
|
128
|
+
|
129
|
+
class Mswallet::Handler
|
130
|
+
def self.update(options)
|
131
|
+
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
class MyCustomHandler
|
136
|
+
def self.update(options)
|
137
|
+
|
138
|
+
end
|
139
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
if ENV['TRAVIS_CI']
|
2
|
+
require 'codeclimate-test-reporter'
|
3
|
+
CodeClimate::TestReporter.start
|
4
|
+
else
|
5
|
+
require 'simplecov'
|
6
|
+
SimpleCov.start do
|
7
|
+
add_filter '/spec/'
|
8
|
+
|
9
|
+
add_group 'Lib', 'lib'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
libdir = File.expand_path( '../lib', File.dirname(__FILE__))
|
14
|
+
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
|
15
|
+
|
16
|
+
require 'mswallet'
|
17
|
+
|
18
|
+
RSpec.configure do |config|
|
19
|
+
# rspec-expectations config goes here. You can use an alternate
|
20
|
+
# assertion/expectation library such as wrong or the stdlib/minitest
|
21
|
+
# assertions if you prefer.
|
22
|
+
config.expect_with :rspec do |expectations|
|
23
|
+
# This option will default to `true` in RSpec 4. It makes the `description`
|
24
|
+
# and `failure_message` of custom matchers include text for helper methods
|
25
|
+
# defined using `chain`, e.g.:
|
26
|
+
# be_bigger_than(2).and_smaller_than(4).description
|
27
|
+
# # => "be bigger than 2 and smaller than 4"
|
28
|
+
# ...rather than:
|
29
|
+
# # => "be bigger than 2"
|
30
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
31
|
+
end
|
32
|
+
|
33
|
+
# rspec-mocks config goes here. You can use an alternate test double
|
34
|
+
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
35
|
+
config.mock_with :rspec do |mocks|
|
36
|
+
# Prevents you from mocking or stubbing a method that does not exist on
|
37
|
+
# a real object. This is generally recommended, and will default to
|
38
|
+
# `true` in RSpec 4.
|
39
|
+
mocks.verify_partial_doubles = true
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
metadata
ADDED
@@ -0,0 +1,194 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mswallet
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- ajieks@vmp.ru
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-04-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rack-test
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: libxml-ruby
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rack
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubyzip
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 1.0.0
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ! '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 1.0.0
|
139
|
+
description: This gem allows you to create passes for Windows Phone Wallet. Unlike
|
140
|
+
some, this works with Rails but does not require it.
|
141
|
+
email:
|
142
|
+
- ajieks@vmp.ru
|
143
|
+
- schalexe@gmail.com
|
144
|
+
executables: []
|
145
|
+
extensions: []
|
146
|
+
extra_rdoc_files: []
|
147
|
+
files:
|
148
|
+
- .gitignore
|
149
|
+
- .travis.yml
|
150
|
+
- Gemfile
|
151
|
+
- Gemfile.lock
|
152
|
+
- LICENSE.txt
|
153
|
+
- README.md
|
154
|
+
- README.ru.md
|
155
|
+
- Rakefile
|
156
|
+
- WalletItem.xsd
|
157
|
+
- lib/mswallet.rb
|
158
|
+
- lib/mswallet/pass.rb
|
159
|
+
- lib/mswallet/version.rb
|
160
|
+
- lib/rack/mswallet_rack.rb
|
161
|
+
- mswallet.gemspec
|
162
|
+
- spec/mswallet/mswallet_spec.rb
|
163
|
+
- spec/mswallet/pass_spec.rb
|
164
|
+
- spec/rack/mswallet_rack_spec.rb
|
165
|
+
- spec/spec_helper.rb
|
166
|
+
homepage: http://github.com/fuCtor/mswallet
|
167
|
+
licenses:
|
168
|
+
- MIT
|
169
|
+
metadata: {}
|
170
|
+
post_install_message:
|
171
|
+
rdoc_options: []
|
172
|
+
require_paths:
|
173
|
+
- lib
|
174
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - ! '>='
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '0'
|
179
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
|
+
requirements:
|
181
|
+
- - ! '>='
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '0'
|
184
|
+
requirements: []
|
185
|
+
rubyforge_project:
|
186
|
+
rubygems_version: 2.2.2
|
187
|
+
signing_key:
|
188
|
+
specification_version: 4
|
189
|
+
summary: A Windows Phone wallet pass generator.
|
190
|
+
test_files:
|
191
|
+
- spec/mswallet/mswallet_spec.rb
|
192
|
+
- spec/mswallet/pass_spec.rb
|
193
|
+
- spec/rack/mswallet_rack_spec.rb
|
194
|
+
- spec/spec_helper.rb
|