passifier 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +15 -0
- data/LICENSE.md +22 -0
- data/README.md +125 -0
- data/Rakefile +48 -0
- data/examples/assets/background.png +0 -0
- data/examples/assets/background@2x.png +0 -0
- data/examples/assets/icon.png +0 -0
- data/examples/assets/icon@2x.png +0 -0
- data/examples/assets/logo.png +0 -0
- data/examples/assets/logo@2x.png +0 -0
- data/examples/assets/thumbnail.png +0 -0
- data/examples/assets/thumbnail@2x.png +0 -0
- data/examples/simple.rb +87 -0
- data/lib/passifier.rb +26 -0
- data/lib/passifier/archive.rb +52 -0
- data/lib/passifier/manifest.rb +37 -0
- data/lib/passifier/manifest_signature.rb +33 -0
- data/lib/passifier/pass.rb +82 -0
- data/lib/passifier/signing.rb +38 -0
- data/lib/passifier/spec.rb +31 -0
- data/lib/passifier/static_file.rb +24 -0
- data/lib/passifier/storage.rb +94 -0
- data/lib/passifier/url_source.rb +30 -0
- data/test/assets/background.png +0 -0
- data/test/assets/background@2x.png +0 -0
- data/test/assets/icon.png +0 -0
- data/test/assets/icon@2x.png +0 -0
- data/test/assets/logo.png +0 -0
- data/test/assets/logo@2x.png +0 -0
- data/test/assets/thumbnail.png +0 -0
- data/test/assets/thumbnail@2x.png +0 -0
- data/test/helper.rb +159 -0
- data/test/passifier/test_archive.rb +44 -0
- data/test/passifier/test_manifest.rb +27 -0
- data/test/passifier/test_manifest_signature.rb +13 -0
- data/test/passifier/test_pass.rb +45 -0
- data/test/passifier/test_signing.rb +47 -0
- data/test/passifier/test_spec.rb +20 -0
- data/test/passifier/test_static_file.rb +25 -0
- data/test/passifier/test_storage.rb +157 -0
- data/test/passifier/test_url_source.rb +30 -0
- data/test/test_passifier.rb +10 -0
- metadata +172 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestArchive < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_initialize
|
6
|
+
archive = Helper.new_archive
|
7
|
+
|
8
|
+
assert_not_nil archive
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_data
|
12
|
+
archive = Helper.new_archive
|
13
|
+
archive.save(:scratch_directory => Helper.scratch_directory)
|
14
|
+
|
15
|
+
assert File.exists?(Helper.zip_path)
|
16
|
+
assert_equal File.size(Helper.zip_path), archive.data.size
|
17
|
+
|
18
|
+
archive.destroy
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_save
|
22
|
+
archive = Helper.new_archive
|
23
|
+
archive.save(:scratch_directory => Helper.scratch_directory)
|
24
|
+
|
25
|
+
assert File.exists?(Helper.zip_path)
|
26
|
+
assert File.size(Helper.zip_path) > 0
|
27
|
+
|
28
|
+
archive.destroy
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_destroy
|
32
|
+
archive = Helper.new_archive
|
33
|
+
archive.save(:scratch_directory => Helper.scratch_directory)
|
34
|
+
|
35
|
+
assert File.exists?(Helper.zip_path)
|
36
|
+
assert File.size(Helper.zip_path) > 0
|
37
|
+
|
38
|
+
archive.destroy
|
39
|
+
|
40
|
+
assert !File.exists?(Helper.zip_path)
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestManifest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_to_hash
|
6
|
+
manifest = Helper.new_manifest
|
7
|
+
|
8
|
+
assert_not_nil manifest
|
9
|
+
assert_not_nil manifest.to_hash
|
10
|
+
assert_not_empty manifest.to_hash.values
|
11
|
+
assert_equal Helper.new_image_files.size, manifest.to_hash.values.size
|
12
|
+
assert_equal 1, manifest.to_hash.values.uniq.size
|
13
|
+
assert_equal "sha rite", manifest.to_hash.values.uniq.first
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_content
|
17
|
+
manifest = Helper.new_manifest
|
18
|
+
|
19
|
+
assert_not_nil manifest
|
20
|
+
assert_not_nil manifest.content
|
21
|
+
assert manifest.to_hash.size > 0
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestManifestSignature < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_content
|
6
|
+
manifest_signature = Helper.new_manifest_signature
|
7
|
+
|
8
|
+
assert_not_nil manifest_signature
|
9
|
+
assert_not_nil manifest_signature.content
|
10
|
+
assert_equal "****", manifest_signature.content
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestPass < Test::Unit::TestCase
|
4
|
+
|
5
|
+
include Passifier
|
6
|
+
|
7
|
+
def test_to_image_files
|
8
|
+
pass = Helper.new_pass
|
9
|
+
|
10
|
+
assert_not_nil pass
|
11
|
+
assert_not_empty pass.image_files
|
12
|
+
assert pass.image_files.all? { |file| [StaticFile, UrlSource].include?(file.class) }
|
13
|
+
assert_equal Helper.new_images.size, pass.image_files.size
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_files_for_archive
|
17
|
+
pass = Helper.new_pass
|
18
|
+
|
19
|
+
assert_not_nil pass
|
20
|
+
assert_not_empty pass.files_for_archive
|
21
|
+
assert_equal 11, pass.files_for_archive.size
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_create_archive_class_method
|
25
|
+
archive = Helper.create_archive_through_pass
|
26
|
+
|
27
|
+
assert File.exists?(Helper.zip_path)
|
28
|
+
assert File.size(Helper.zip_path) > 0
|
29
|
+
|
30
|
+
archive.destroy
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_create_archive
|
34
|
+
pass = Helper.new_pass
|
35
|
+
archive = pass.create_archive(Helper.zip_path, :scratch_directory => Helper.scratch_directory)
|
36
|
+
|
37
|
+
assert File.exists?(Helper.zip_path)
|
38
|
+
assert File.size(Helper.zip_path) > 0
|
39
|
+
|
40
|
+
archive.destroy
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestSigning < Test::Unit::TestCase
|
4
|
+
|
5
|
+
include Passifier
|
6
|
+
|
7
|
+
# You must have the following three files for these tests to run.
|
8
|
+
#
|
9
|
+
CERTIFICATE = "test/assets/signing/certificate/certificate.pem"
|
10
|
+
KEY = "test/assets/signing/key/key.pem"
|
11
|
+
|
12
|
+
# The password file is just a text file containing the password.
|
13
|
+
PASS_PHRASE_FILE = "test/assets/signing/pass_phrase.txt"
|
14
|
+
|
15
|
+
if Helper.signing_assets_exist?
|
16
|
+
|
17
|
+
def test_initialize
|
18
|
+
signing = Signing.new(KEY, Helper.signing_pass_phrase, CERTIFICATE)
|
19
|
+
|
20
|
+
assert_not_nil signing
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_sign
|
24
|
+
signing = Signing.new(KEY, Helper.signing_pass_phrase, CERTIFICATE)
|
25
|
+
assert_nothing_raised do
|
26
|
+
signed = signing.sign("hello!")
|
27
|
+
|
28
|
+
assert_not_nil signed
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_sha
|
33
|
+
signing = Signing.new(KEY, Helper.signing_pass_phrase, CERTIFICATE)
|
34
|
+
assert_nothing_raised do
|
35
|
+
sha = signing.sha("hi")
|
36
|
+
|
37
|
+
assert_not_nil sha
|
38
|
+
assert_equal 40, sha.size
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestSpec < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_serial_number
|
6
|
+
spec = Helper.new_spec
|
7
|
+
|
8
|
+
assert_not_nil spec
|
9
|
+
assert_equal Helper.serial, spec.serial_number
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_content
|
13
|
+
spec = Helper.new_spec
|
14
|
+
|
15
|
+
assert_not_nil spec
|
16
|
+
assert spec.content.size > 0
|
17
|
+
assert_equal Helper.spec_hash.to_json, spec.content
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestStaticFile < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_name
|
6
|
+
file = Helper.new_static_file
|
7
|
+
|
8
|
+
assert_equal "background.png", file.name
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_path
|
12
|
+
file = Helper.new_static_file
|
13
|
+
|
14
|
+
assert_equal "test/assets/background.png", file.path
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_content
|
18
|
+
file = Helper.new_static_file
|
19
|
+
size = File.size(file.path)
|
20
|
+
|
21
|
+
assert !size.zero?
|
22
|
+
assert_equal size, file.content.size
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,157 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestStorage < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_initialize
|
6
|
+
storage = Helper.new_storage
|
7
|
+
|
8
|
+
assert_not_nil storage
|
9
|
+
assert_not_nil storage.scratch_directory
|
10
|
+
assert_equal Helper.scratch_directory, storage.scratch_directory
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_path
|
14
|
+
storage = Helper.new_storage
|
15
|
+
|
16
|
+
assert_equal "#{Helper.scratch_directory}/blah", storage.path("blah")
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_ensure_directory_exists
|
20
|
+
storage = Helper.new_storage
|
21
|
+
dir = storage.send(:ensure_directory_exists)
|
22
|
+
|
23
|
+
assert_not_nil dir
|
24
|
+
assert_equal storage.scratch_directory + "/", dir
|
25
|
+
assert File.exists?(storage.scratch_directory)
|
26
|
+
assert File.directory?(storage.scratch_directory)
|
27
|
+
|
28
|
+
storage.cleanup
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_write_file
|
32
|
+
storage = Helper.new_storage
|
33
|
+
asset = storage.assets.first
|
34
|
+
path = storage.path(asset.filename)
|
35
|
+
storage.send(:ensure_directory_exists)
|
36
|
+
storage.send(:write_file, asset)
|
37
|
+
|
38
|
+
assert File.exists?(path)
|
39
|
+
assert_equal File.size(path), asset.content.size
|
40
|
+
|
41
|
+
storage.cleanup
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_store
|
45
|
+
storage = Helper.new_storage
|
46
|
+
storage.store
|
47
|
+
|
48
|
+
assert File.exists?(storage.scratch_directory)
|
49
|
+
assert File.directory?(storage.scratch_directory)
|
50
|
+
Helper.new_image_files.each do |asset|
|
51
|
+
path = storage.path(asset.filename)
|
52
|
+
assert File.exists?(path)
|
53
|
+
assert_equal File.size(path), asset.content.size
|
54
|
+
end
|
55
|
+
|
56
|
+
storage.cleanup
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_remove_temp_files
|
60
|
+
storage = Helper.new_storage
|
61
|
+
storage.store
|
62
|
+
|
63
|
+
assert File.exists?(storage.scratch_directory)
|
64
|
+
assert File.directory?(storage.scratch_directory)
|
65
|
+
|
66
|
+
paths = Helper.new_image_files.map do |asset|
|
67
|
+
path = storage.path(asset.filename)
|
68
|
+
assert File.exists?(path)
|
69
|
+
assert_equal File.size(path), asset.content.size
|
70
|
+
path
|
71
|
+
end.compact
|
72
|
+
|
73
|
+
storage.send(:remove_temp_files)
|
74
|
+
|
75
|
+
paths.each { |path| assert !File.exists?(path) }
|
76
|
+
|
77
|
+
storage.cleanup
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_remove_directory
|
81
|
+
storage = Helper.new_storage
|
82
|
+
storage.store
|
83
|
+
|
84
|
+
assert File.exists?(storage.scratch_directory)
|
85
|
+
assert File.directory?(storage.scratch_directory)
|
86
|
+
|
87
|
+
paths = Helper.new_image_files.map do |asset|
|
88
|
+
path = storage.path(asset.filename)
|
89
|
+
assert File.exists?(path)
|
90
|
+
assert_equal File.size(path), asset.content.size
|
91
|
+
path
|
92
|
+
end.compact
|
93
|
+
|
94
|
+
storage.send(:remove_temp_files)
|
95
|
+
|
96
|
+
paths.each { |path| assert !File.exists?(path) }
|
97
|
+
|
98
|
+
storage.send(:remove_directory)
|
99
|
+
|
100
|
+
assert !File.exists?(storage.scratch_directory)
|
101
|
+
|
102
|
+
storage.cleanup
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_cleanup
|
106
|
+
storage = Helper.new_storage
|
107
|
+
storage.store
|
108
|
+
|
109
|
+
assert File.exists?(storage.scratch_directory)
|
110
|
+
assert File.directory?(storage.scratch_directory)
|
111
|
+
|
112
|
+
paths = Helper.new_image_files.map do |asset|
|
113
|
+
path = storage.path(asset.filename)
|
114
|
+
assert File.exists?(path)
|
115
|
+
assert_equal File.size(path), asset.content.size
|
116
|
+
path
|
117
|
+
end.compact
|
118
|
+
|
119
|
+
storage.cleanup
|
120
|
+
|
121
|
+
paths.each { |path| assert !File.exists?(path) }
|
122
|
+
|
123
|
+
assert !File.exists?(storage.scratch_directory)
|
124
|
+
|
125
|
+
storage.cleanup
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_zip
|
129
|
+
storage = Helper.new_storage
|
130
|
+
path = Helper.zip_path
|
131
|
+
storage.store
|
132
|
+
storage.zip(path)
|
133
|
+
|
134
|
+
assert File.exists?(path)
|
135
|
+
assert File.size(path) > 0
|
136
|
+
|
137
|
+
storage.send(:remove_zip, path)
|
138
|
+
storage.send(:remove_directory, "test/zip")
|
139
|
+
storage.cleanup
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_remove_zip
|
143
|
+
storage = Helper.new_storage
|
144
|
+
path = Helper.zip_path
|
145
|
+
storage.store
|
146
|
+
storage.zip(path)
|
147
|
+
|
148
|
+
assert File.exists?(path)
|
149
|
+
|
150
|
+
storage.send(:remove_zip, path)
|
151
|
+
|
152
|
+
assert !File.exists?(path)
|
153
|
+
|
154
|
+
storage.cleanup
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestUrlSource < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_name
|
6
|
+
image = Helper.new_url_source
|
7
|
+
|
8
|
+
assert_equal "background.png", image.name
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_path
|
12
|
+
image = Helper.new_url_source
|
13
|
+
|
14
|
+
assert_equal Helper.image_url, image.url
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_content
|
18
|
+
image = Helper.new_url_source
|
19
|
+
|
20
|
+
uri = URI(image.url)
|
21
|
+
res = Net::HTTP.get_response(uri)
|
22
|
+
size = res.body.size
|
23
|
+
|
24
|
+
assert !size.zero?
|
25
|
+
assert_equal size, image.content.size
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
|
metadata
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: passifier
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ari Russo
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-09-13 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rubyzip
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rdoc
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '3.12'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.12'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: jeweler
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.8.4
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.8.4
|
94
|
+
description: Generate Apple Passbook passes in Ruby
|
95
|
+
email: ari.russo@gmail.com
|
96
|
+
executables: []
|
97
|
+
extensions: []
|
98
|
+
extra_rdoc_files:
|
99
|
+
- LICENSE.md
|
100
|
+
- README.md
|
101
|
+
files:
|
102
|
+
- Gemfile
|
103
|
+
- LICENSE.md
|
104
|
+
- README.md
|
105
|
+
- Rakefile
|
106
|
+
- examples/assets/background.png
|
107
|
+
- examples/assets/background@2x.png
|
108
|
+
- examples/assets/icon.png
|
109
|
+
- examples/assets/icon@2x.png
|
110
|
+
- examples/assets/logo.png
|
111
|
+
- examples/assets/logo@2x.png
|
112
|
+
- examples/assets/thumbnail.png
|
113
|
+
- examples/assets/thumbnail@2x.png
|
114
|
+
- examples/simple.rb
|
115
|
+
- lib/passifier.rb
|
116
|
+
- lib/passifier/archive.rb
|
117
|
+
- lib/passifier/manifest.rb
|
118
|
+
- lib/passifier/manifest_signature.rb
|
119
|
+
- lib/passifier/pass.rb
|
120
|
+
- lib/passifier/signing.rb
|
121
|
+
- lib/passifier/spec.rb
|
122
|
+
- lib/passifier/static_file.rb
|
123
|
+
- lib/passifier/storage.rb
|
124
|
+
- lib/passifier/url_source.rb
|
125
|
+
- test/assets/background.png
|
126
|
+
- test/assets/background@2x.png
|
127
|
+
- test/assets/icon.png
|
128
|
+
- test/assets/icon@2x.png
|
129
|
+
- test/assets/logo.png
|
130
|
+
- test/assets/logo@2x.png
|
131
|
+
- test/assets/thumbnail.png
|
132
|
+
- test/assets/thumbnail@2x.png
|
133
|
+
- test/helper.rb
|
134
|
+
- test/passifier/test_archive.rb
|
135
|
+
- test/passifier/test_manifest.rb
|
136
|
+
- test/passifier/test_manifest_signature.rb
|
137
|
+
- test/passifier/test_pass.rb
|
138
|
+
- test/passifier/test_signing.rb
|
139
|
+
- test/passifier/test_spec.rb
|
140
|
+
- test/passifier/test_static_file.rb
|
141
|
+
- test/passifier/test_storage.rb
|
142
|
+
- test/passifier/test_url_source.rb
|
143
|
+
- test/test_passifier.rb
|
144
|
+
homepage: http://github.com/paperlesspost/passifier
|
145
|
+
licenses:
|
146
|
+
- MIT
|
147
|
+
post_install_message:
|
148
|
+
rdoc_options: []
|
149
|
+
require_paths:
|
150
|
+
- lib
|
151
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
152
|
+
none: false
|
153
|
+
requirements:
|
154
|
+
- - ! '>='
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
segments:
|
158
|
+
- 0
|
159
|
+
hash: -3690833975389426843
|
160
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ! '>='
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
166
|
+
requirements: []
|
167
|
+
rubyforge_project:
|
168
|
+
rubygems_version: 1.8.24
|
169
|
+
signing_key:
|
170
|
+
specification_version: 3
|
171
|
+
summary: Generate Apple Passbook passes in Ruby
|
172
|
+
test_files: []
|