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.
Files changed (43) hide show
  1. data/Gemfile +15 -0
  2. data/LICENSE.md +22 -0
  3. data/README.md +125 -0
  4. data/Rakefile +48 -0
  5. data/examples/assets/background.png +0 -0
  6. data/examples/assets/background@2x.png +0 -0
  7. data/examples/assets/icon.png +0 -0
  8. data/examples/assets/icon@2x.png +0 -0
  9. data/examples/assets/logo.png +0 -0
  10. data/examples/assets/logo@2x.png +0 -0
  11. data/examples/assets/thumbnail.png +0 -0
  12. data/examples/assets/thumbnail@2x.png +0 -0
  13. data/examples/simple.rb +87 -0
  14. data/lib/passifier.rb +26 -0
  15. data/lib/passifier/archive.rb +52 -0
  16. data/lib/passifier/manifest.rb +37 -0
  17. data/lib/passifier/manifest_signature.rb +33 -0
  18. data/lib/passifier/pass.rb +82 -0
  19. data/lib/passifier/signing.rb +38 -0
  20. data/lib/passifier/spec.rb +31 -0
  21. data/lib/passifier/static_file.rb +24 -0
  22. data/lib/passifier/storage.rb +94 -0
  23. data/lib/passifier/url_source.rb +30 -0
  24. data/test/assets/background.png +0 -0
  25. data/test/assets/background@2x.png +0 -0
  26. data/test/assets/icon.png +0 -0
  27. data/test/assets/icon@2x.png +0 -0
  28. data/test/assets/logo.png +0 -0
  29. data/test/assets/logo@2x.png +0 -0
  30. data/test/assets/thumbnail.png +0 -0
  31. data/test/assets/thumbnail@2x.png +0 -0
  32. data/test/helper.rb +159 -0
  33. data/test/passifier/test_archive.rb +44 -0
  34. data/test/passifier/test_manifest.rb +27 -0
  35. data/test/passifier/test_manifest_signature.rb +13 -0
  36. data/test/passifier/test_pass.rb +45 -0
  37. data/test/passifier/test_signing.rb +47 -0
  38. data/test/passifier/test_spec.rb +20 -0
  39. data/test/passifier/test_static_file.rb +25 -0
  40. data/test/passifier/test_storage.rb +157 -0
  41. data/test/passifier/test_url_source.rb +30 -0
  42. data/test/test_passifier.rb +10 -0
  43. 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
+
@@ -0,0 +1,10 @@
1
+ require 'helper'
2
+
3
+ class TestPassifier < Test::Unit::TestCase
4
+
5
+ def test_initialize
6
+ assert_not_nil Passifier
7
+ assert_equal Module, Passifier.class
8
+ end
9
+
10
+ end
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: []