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.
@@ -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