mswallet 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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