passifier 0.0.2
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.
- 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: []
|