train 1.5.11 → 1.6.3

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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/lib/train/transports/winrm.rb +16 -4
  3. data/lib/train/version.rb +1 -1
  4. metadata +3 -165
  5. data/.rubocop.yml +0 -77
  6. data/CHANGELOG.md +0 -900
  7. data/Gemfile +0 -41
  8. data/README.md +0 -212
  9. data/Rakefile +0 -73
  10. data/test/fixtures/plugins/train-test-fixture/LICENSE +0 -201
  11. data/test/fixtures/plugins/train-test-fixture/README.md +0 -5
  12. data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/connection.rb +0 -35
  13. data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/platform.rb +0 -18
  14. data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/transport.rb +0 -14
  15. data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/version.rb +0 -5
  16. data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture.rb +0 -4
  17. data/test/fixtures/plugins/train-test-fixture/pkg/train-test-fixture-0.1.0.gem +0 -0
  18. data/test/fixtures/plugins/train-test-fixture/train-test-fixture.gemspec +0 -35
  19. data/test/integration/.kitchen.yml +0 -43
  20. data/test/integration/Berksfile +0 -3
  21. data/test/integration/bootstrap.sh +0 -22
  22. data/test/integration/chefignore +0 -1
  23. data/test/integration/cookbooks/test/metadata.rb +0 -1
  24. data/test/integration/cookbooks/test/recipes/default.rb +0 -100
  25. data/test/integration/cookbooks/test/recipes/prep_files.rb +0 -56
  26. data/test/integration/docker_run.rb +0 -153
  27. data/test/integration/docker_test.rb +0 -24
  28. data/test/integration/docker_test_container.rb +0 -24
  29. data/test/integration/helper.rb +0 -61
  30. data/test/integration/sudo/customcommand.rb +0 -15
  31. data/test/integration/sudo/nopasswd.rb +0 -16
  32. data/test/integration/sudo/passwd.rb +0 -21
  33. data/test/integration/sudo/reqtty.rb +0 -17
  34. data/test/integration/sudo/run_as.rb +0 -12
  35. data/test/integration/test-travis-centos.yml +0 -6
  36. data/test/integration/test-travis-debian.yml +0 -6
  37. data/test/integration/test-travis-fedora.yml +0 -8
  38. data/test/integration/test-travis-oel.yml +0 -6
  39. data/test/integration/test-travis-ubuntu.yml +0 -8
  40. data/test/integration/test_local.rb +0 -19
  41. data/test/integration/test_ssh.rb +0 -39
  42. data/test/integration/tests/path_block_device_test.rb +0 -74
  43. data/test/integration/tests/path_character_device_test.rb +0 -74
  44. data/test/integration/tests/path_file_test.rb +0 -99
  45. data/test/integration/tests/path_folder_test.rb +0 -90
  46. data/test/integration/tests/path_missing_test.rb +0 -76
  47. data/test/integration/tests/path_pipe_test.rb +0 -62
  48. data/test/integration/tests/path_symlink_test.rb +0 -95
  49. data/test/integration/tests/run_command_test.rb +0 -35
  50. data/test/unit/extras/command_wrapper_test.rb +0 -110
  51. data/test/unit/extras/stat_test.rb +0 -210
  52. data/test/unit/file/local/unix_test.rb +0 -224
  53. data/test/unit/file/local/windows_test.rb +0 -101
  54. data/test/unit/file/local_test.rb +0 -121
  55. data/test/unit/file/remote/aix_test.rb +0 -81
  56. data/test/unit/file/remote/linux_test.rb +0 -221
  57. data/test/unit/file/remote/qnx_test.rb +0 -80
  58. data/test/unit/file/remote/unix_test.rb +0 -119
  59. data/test/unit/file/remote/windows_test.rb +0 -72
  60. data/test/unit/file/remote_test.rb +0 -62
  61. data/test/unit/file_test.rb +0 -129
  62. data/test/unit/helper.rb +0 -7
  63. data/test/unit/platforms/detect/os_common_test.rb +0 -85
  64. data/test/unit/platforms/detect/os_linux_test.rb +0 -132
  65. data/test/unit/platforms/detect/os_windows_test.rb +0 -107
  66. data/test/unit/platforms/detect/scanner_test.rb +0 -61
  67. data/test/unit/platforms/detect/uuid_test.rb +0 -133
  68. data/test/unit/platforms/family_test.rb +0 -32
  69. data/test/unit/platforms/os_detect_test.rb +0 -249
  70. data/test/unit/platforms/platform_test.rb +0 -405
  71. data/test/unit/platforms/platforms_test.rb +0 -52
  72. data/test/unit/plugins/connection_test.rb +0 -219
  73. data/test/unit/plugins/transport_test.rb +0 -111
  74. data/test/unit/plugins_test.rb +0 -22
  75. data/test/unit/train_test.rb +0 -247
  76. data/test/unit/transports/aws_test.rb +0 -120
  77. data/test/unit/transports/azure_test.rb +0 -145
  78. data/test/unit/transports/cisco_ios_connection.rb +0 -92
  79. data/test/unit/transports/gcp_test.rb +0 -266
  80. data/test/unit/transports/helpers/azure/file_credentials_test.rb +0 -129
  81. data/test/unit/transports/local_test.rb +0 -183
  82. data/test/unit/transports/mock_test.rb +0 -150
  83. data/test/unit/transports/ssh_test.rb +0 -330
  84. data/test/unit/transports/vmware_test.rb +0 -159
  85. data/test/unit/version_test.rb +0 -8
  86. data/test/windows/local_test.rb +0 -243
  87. data/test/windows/winrm_test.rb +0 -187
  88. data/train.gemspec +0 -45
@@ -1,121 +0,0 @@
1
- require 'helper'
2
- require 'train/transports/local'
3
-
4
- describe Train::File::Local do
5
- let(:transport) { Train::Transports::Local.new }
6
- let(:connection) { transport.connection }
7
-
8
- it 'gets file contents' do
9
- res = rand.to_s
10
- File.stub :read, res do
11
- connection.file(rand.to_s).content.must_equal(res)
12
- end
13
- end
14
-
15
- {
16
- exist?: :exist?,
17
- file?: :file?,
18
- socket?: :socket?,
19
- directory?: :directory?,
20
- symlink?: :symlink?,
21
- pipe?: :pipe?,
22
- character_device?: :chardev?,
23
- block_device?: :blockdev?,
24
- }.each do |method, file_method|
25
- it "checks if file is a #{method}" do
26
- File.stub file_method.to_sym, true do
27
- connection.file(rand.to_s).method(method.to_sym).call.must_equal(true)
28
- end
29
- end
30
- end
31
-
32
- describe '#type' do
33
- it 'returns the type block_device if it is block device' do
34
- File.stub :ftype, "blockSpecial" do
35
- connection.file(rand.to_s).type.must_equal :block_device
36
- end
37
- end
38
-
39
- it 'returns the type character_device if it is character device' do
40
- File.stub :ftype, "characterSpecial" do
41
- connection.file(rand.to_s).type.must_equal :character_device
42
- end
43
- end
44
-
45
- it 'returns the type symlink if it is symlink' do
46
- File.stub :ftype, "link" do
47
- connection.file(rand.to_s).type.must_equal :symlink
48
- end
49
- end
50
-
51
- it 'returns the type file if it is file' do
52
- File.stub :ftype, "file" do
53
- connection.file(rand.to_s).type.must_equal :file
54
- end
55
- end
56
-
57
- it 'returns the type directory if it is block directory' do
58
- File.stub :ftype, "directory" do
59
- connection.file(rand.to_s).type.must_equal :directory
60
- end
61
- end
62
-
63
- it 'returns the type pipe if it is pipe' do
64
- File.stub :ftype, "fifo" do
65
- connection.file(rand.to_s).type.must_equal :pipe
66
- end
67
- end
68
-
69
- it 'returns the type socket if it is socket' do
70
- File.stub :ftype, "socket" do
71
- connection.file(rand.to_s).type.must_equal :socket
72
- end
73
- end
74
-
75
- it 'returns the unknown if not known' do
76
- File.stub :ftype, "unknown" do
77
- connection.file(rand.to_s).type.must_equal :unknown
78
- end
79
- end
80
- end
81
-
82
- describe '#path' do
83
- it 'returns the path if it is not a symlink' do
84
- File.stub :symlink?, false do
85
- filename = rand.to_s
86
- connection.file(filename).path.must_equal filename
87
- end
88
- end
89
-
90
- it 'returns the link_path if it is a symlink' do
91
- File.stub :symlink?, true do
92
- file_obj = connection.file(rand.to_s)
93
- file_obj.stub :link_path, '/path/to/resolved_link' do
94
- file_obj.path.must_equal '/path/to/resolved_link'
95
- end
96
- end
97
- end
98
- end
99
-
100
- describe '#link_path' do
101
- it 'returns file\'s link path' do
102
- out = rand.to_s
103
- File.stub :realpath, out do
104
- File.stub :symlink?, true do
105
- connection.file(rand.to_s).link_path.must_equal out
106
- end
107
- end
108
- end
109
- end
110
-
111
- describe '#shallow_shlink_path' do
112
- it 'returns file\'s direct link path' do
113
- out = rand.to_s
114
- File.stub :readlink, out do
115
- File.stub :symlink?, true do
116
- connection.file(rand.to_s).shallow_link_path.must_equal out
117
- end
118
- end
119
- end
120
- end
121
- end
@@ -1,81 +0,0 @@
1
- require 'helper'
2
- require 'train/transports/local'
3
- require 'train/file/remote/aix'
4
- require 'train/transports/mock'
5
-
6
- describe Train::File::Remote::Aix do
7
- let(:cls) { Train::File::Remote::Aix }
8
- let(:backend) {
9
- backend = Train::Transports::Mock.new.connection
10
- backend.mock_os({ name: 'aix', family: 'unix' })
11
- backend
12
- }
13
-
14
- it 'returns a nil link_path if the object is not a symlink' do
15
- file = cls.new(backend, 'path')
16
- file.stubs(:symlink?).returns(false)
17
- file.link_path.must_be_nil
18
- end
19
-
20
- it 'returns a correct link_path' do
21
- file = cls.new(backend, 'path')
22
- file.stubs(:symlink?).returns(true)
23
- backend.mock_command("perl -e 'print readlink shift' path", 'our_link_path')
24
- file.link_path.must_equal 'our_link_path'
25
- end
26
-
27
- it 'returns a correct shallow_link_path' do
28
- file = cls.new(backend, 'path')
29
- file.stubs(:symlink?).returns(true)
30
- backend.mock_command("perl -e 'print readlink shift' path", 'our_link_path')
31
- file.link_path.must_equal 'our_link_path'
32
- end
33
-
34
- describe '#md5sum' do
35
- let(:md5_checksum) { '57d4c6f9d15313fd5651317e588c035d' }
36
-
37
- let(:ruby_md5_mock) do
38
- checksum_mock = mock
39
- checksum_mock.expects(:update).returns('')
40
- checksum_mock.expects(:hexdigest).returns(md5_checksum)
41
- checksum_mock
42
- end
43
-
44
- it 'defaults to a Ruby based checksum if other methods fail' do
45
- backend.mock_command('md5sum /tmp/testfile', '', '', 1)
46
- Digest::MD5.expects(:new).returns(ruby_md5_mock)
47
- cls.new(backend, '/tmp/testfile').md5sum.must_equal md5_checksum
48
- end
49
-
50
- it 'calculates the correct md5sum on the `aix` platform family' do
51
- output = "#{md5_checksum} /tmp/testfile"
52
- backend.mock_command('md5sum /tmp/testfile', output)
53
- cls.new(backend, '/tmp/testfile').md5sum.must_equal md5_checksum
54
- end
55
- end
56
-
57
- describe '#sha256sum' do
58
- let(:sha256_checksum) {
59
- '491260aaa6638d4a64c714a17828c3d82bad6ca600c9149b3b3350e91bcd283d'
60
- }
61
-
62
- let(:ruby_sha256_mock) do
63
- checksum_mock = mock
64
- checksum_mock.expects(:update).returns('')
65
- checksum_mock.expects(:hexdigest).returns(sha256_checksum)
66
- checksum_mock
67
- end
68
-
69
- it 'defaults to a Ruby based checksum if other methods fail' do
70
- backend.mock_command('sha256sum /tmp/testfile', '', '', 1)
71
- Digest::SHA256.expects(:new).returns(ruby_sha256_mock)
72
- cls.new(backend, '/tmp/testfile').sha256sum.must_equal sha256_checksum
73
- end
74
-
75
- it 'calculates the correct sha256sum on the `aix` platform family' do
76
- output = "#{sha256_checksum} /tmp/testfile"
77
- backend.mock_command('sha256sum /tmp/testfile', output)
78
- cls.new(backend, '/tmp/testfile').sha256sum.must_equal sha256_checksum
79
- end
80
- end
81
- end
@@ -1,221 +0,0 @@
1
- require 'helper'
2
- require 'train/transports/local'
3
- require 'train/file/remote/linux'
4
- require 'train/transports/mock'
5
-
6
- describe Train::File::Remote::Linux do
7
- let(:cls) { Train::File::Remote::Linux }
8
- let(:backend) {
9
- backend = Train::Transports::Mock.new.connection
10
- backend.mock_os({ name: 'linux', family: 'unix' })
11
- backend
12
- }
13
-
14
- def mock_stat(args, out, err = '', code = 0)
15
- backend.mock_command(
16
- "stat #{args} 2>/dev/null --printf '%s\n%f\n%U\n%u\n%G\n%g\n%X\n%Y\n%C'",
17
- out, err, code
18
- )
19
- end
20
-
21
- it 'works on nil path' do
22
- cls.new(backend, nil).path.must_equal ''
23
- end
24
-
25
- it 'provides the full path' do
26
- cls.new(backend, '/dir/file').path.must_equal '/dir/file'
27
- end
28
-
29
- it 'provides the basename to a unix path' do
30
- cls.new(backend, '/dir/file').basename.must_equal 'file'
31
- end
32
-
33
- it 'reads file contents' do
34
- out = rand.to_s
35
- backend.mock_command('cat path || echo -n', out)
36
- cls.new(backend, 'path').content.must_equal out
37
- end
38
-
39
- it 'reads file contents' do
40
- backend.mock_command('cat path || echo -n', '')
41
- mock_stat('-L path', '', 'some error...', 1)
42
- cls.new(backend, 'path').content.must_be_nil
43
- end
44
-
45
- it 'reads file contents' do
46
- out = rand.to_s
47
- backend.mock_command('cat /spaced\\ path || echo -n', out)
48
- cls.new(backend, '/spaced path').content.must_equal out
49
- end
50
-
51
- it 'checks for file existance' do
52
- backend.mock_command('test -e path', true)
53
- cls.new(backend, 'path').exist?.must_equal true
54
- end
55
-
56
- it 'checks for file existance' do
57
- backend.mock_command('test -e path', nil, nil, 1)
58
- cls.new(backend, 'path').exist?.must_equal false
59
- end
60
-
61
- it 'retrieves the link path via #path()' do
62
- out = rand.to_s
63
- mock_stat('path', "13\na1ff\nz\n1001\nz\n1001\n1444573475\n1444573475\n?")
64
- backend.mock_command('readlink -n path -f', out)
65
- cls.new(backend, 'path').path.must_equal File.join(Dir.pwd, out)
66
- end
67
-
68
- it 'retrieves the link path' do
69
- out = rand.to_s
70
- mock_stat('path', "13\na1ff\nz\n1001\nz\n1001\n1444573475\n1444573475\n?")
71
- backend.mock_command('readlink -n path -f', out)
72
- cls.new(backend, 'path').link_path.must_equal File.join(Dir.pwd, out)
73
- end
74
-
75
- it 'provide the source path' do
76
- cls.new(backend, 'path').source_path.must_equal 'path'
77
- end
78
-
79
- it 'checks a mounted path' do
80
- backend.mock_command("mount | grep -- ' on /mount/path '", rand.to_s)
81
- cls.new(backend, '/mount/path').mounted?.must_equal true
82
- end
83
-
84
- it 'has nil product version' do
85
- cls.new(backend, 'path').product_version.must_be_nil
86
- end
87
-
88
- it 'has nil file version' do
89
- cls.new(backend, 'path').file_version.must_be_nil
90
- end
91
-
92
- describe 'stat on a file' do
93
- before { mock_stat('-L path', "13\na1ff\nz\n1001\nz2\n1002\n1444573475\n1444573475\nlabels") }
94
- let(:f) { cls.new(backend, 'path') }
95
-
96
- it 'retrieves the file type' do
97
- f.type.must_equal :symlink
98
- end
99
-
100
- it 'retrieves the file mode' do
101
- f.mode.must_equal 00777
102
- end
103
-
104
- it 'retrieves the file owner' do
105
- f.owner.must_equal 'z'
106
- end
107
-
108
- it 'retrieves the file uid' do
109
- f.uid.must_equal 1001
110
- end
111
-
112
- it 'retrieves the file group' do
113
- f.group.must_equal 'z2'
114
- end
115
-
116
- it 'retrieves the file gid' do
117
- f.gid.must_equal 1002
118
- end
119
-
120
- it 'retrieves the file mtime' do
121
- f.mtime.must_equal 1444573475
122
- end
123
-
124
- it 'retrieves the file size' do
125
- f.size.must_equal 13
126
- end
127
-
128
- it 'retrieves the file selinux_label' do
129
- f.selinux_label.must_equal 'labels'
130
- end
131
- end
132
-
133
- describe 'stat on the source file' do
134
- before { mock_stat('path', "13\na1ff\nz\n1001\nz2\n1002\n1444573475\n1444573475\nlabels") }
135
- let(:f) { cls.new(backend, 'path').source }
136
-
137
- it 'retrieves the file type' do
138
- f.type.must_equal :symlink
139
- end
140
-
141
- it 'retrieves the file mode' do
142
- f.mode.must_equal 00777
143
- end
144
-
145
- it 'retrieves the file owner' do
146
- f.owner.must_equal 'z'
147
- end
148
-
149
- it 'retrieves the file uid' do
150
- f.uid.must_equal 1001
151
- end
152
-
153
- it 'retrieves the file group' do
154
- f.group.must_equal 'z2'
155
- end
156
-
157
- it 'retrieves the file gid' do
158
- f.gid.must_equal 1002
159
- end
160
-
161
- it 'retrieves the file mtime' do
162
- f.mtime.must_equal 1444573475
163
- end
164
-
165
- it 'retrieves the file size' do
166
- f.size.must_equal 13
167
- end
168
-
169
- it 'retrieves the file selinux_label' do
170
- f.selinux_label.must_equal 'labels'
171
- end
172
- end
173
-
174
- describe '#md5sum' do
175
- let(:md5_checksum) { '57d4c6f9d15313fd5651317e588c035d' }
176
-
177
- let(:ruby_md5_mock) do
178
- checksum_mock = mock
179
- checksum_mock.expects(:update).returns('')
180
- checksum_mock.expects(:hexdigest).returns(md5_checksum)
181
- checksum_mock
182
- end
183
-
184
- it 'defaults to a Ruby based checksum if other methods fail' do
185
- backend.mock_command('md5sum /tmp/testfile', '', '', 1)
186
- Digest::MD5.expects(:new).returns(ruby_md5_mock)
187
- cls.new(backend, '/tmp/testfile').md5sum.must_equal md5_checksum
188
- end
189
-
190
- it 'calculates the correct md5sum on the `linux` platform family' do
191
- output = "#{md5_checksum} /tmp/testfile"
192
- backend.mock_command('md5sum /tmp/testfile', output)
193
- cls.new(backend, '/tmp/testfile').md5sum.must_equal md5_checksum
194
- end
195
- end
196
-
197
- describe '#sha256sum' do
198
- let(:sha256_checksum) {
199
- '491260aaa6638d4a64c714a17828c3d82bad6ca600c9149b3b3350e91bcd283d'
200
- }
201
-
202
- let(:ruby_sha256_mock) do
203
- checksum_mock = mock
204
- checksum_mock.expects(:update).returns('')
205
- checksum_mock.expects(:hexdigest).returns(sha256_checksum)
206
- checksum_mock
207
- end
208
-
209
- it 'defaults to a Ruby based checksum if other methods fail' do
210
- backend.mock_command('sha256sum /tmp/testfile', '', '', 1)
211
- Digest::SHA256.expects(:new).returns(ruby_sha256_mock)
212
- cls.new(backend, '/tmp/testfile').sha256sum.must_equal sha256_checksum
213
- end
214
-
215
- it 'calculates the correct sha256sum on the `linux` platform family' do
216
- output = "#{sha256_checksum} /tmp/testfile"
217
- backend.mock_command('sha256sum /tmp/testfile', output)
218
- cls.new(backend, '/tmp/testfile').sha256sum.must_equal sha256_checksum
219
- end
220
- end
221
- end
@@ -1,80 +0,0 @@
1
- require 'helper'
2
- require 'train/transports/local'
3
- require 'train/file/remote/qnx'
4
- require 'train/transports/mock'
5
-
6
- describe Train::File::Remote::Qnx do
7
- let(:cls) { Train::File::Remote::Qnx }
8
- let(:backend) {
9
- backend = Train::Transports::Mock.new.connection
10
- backend.mock_os({ family: 'qnx' })
11
- backend
12
- }
13
-
14
- it 'returns file contents when the file exists' do
15
- out = rand.to_s
16
- backend.mock_command('cat path', out)
17
- file = cls.new(backend, 'path')
18
- file.stubs(:exist?).returns(true)
19
- file.content.must_equal out
20
- end
21
-
22
- it 'returns nil contents when the file does not exist' do
23
- file = cls.new(backend, 'path')
24
- file.stubs(:exist?).returns(false)
25
- file.content.must_be_nil
26
- end
27
-
28
- it 'returns a file type' do
29
- backend.mock_command('file path', 'blah directory blah')
30
- cls.new(backend, 'path').type.must_equal :directory
31
- end
32
-
33
- it 'returns a directory type' do
34
- backend.mock_command('file path', 'blah regular file blah')
35
- cls.new(backend, 'path').type.must_equal :file
36
- end
37
-
38
- it 'raises exception for unimplemented methods' do
39
- file = cls.new(backend, 'path')
40
- %w{mode owner group uid gid mtime size selinux_label link_path mounted stat}.each do |m|
41
- proc { file.send(m) }.must_raise NotImplementedError
42
- end
43
- end
44
-
45
- describe '#md5sum' do
46
- let(:md5_checksum) { '17404a596cbd0d1e6c7d23fcd845ab82' }
47
-
48
- let(:ruby_md5_mock) do
49
- checksum_mock = mock
50
- checksum_mock.expects(:update).returns('')
51
- checksum_mock.expects(:hexdigest).returns(md5_checksum)
52
- checksum_mock
53
- end
54
-
55
- it 'defaults to a Ruby based checksum if other methods fail' do
56
- backend.mock_command('md5sum /tmp/testfile', '', '', 1)
57
- Digest::MD5.expects(:new).returns(ruby_md5_mock)
58
- cls.new(backend, '/tmp/testfile').md5sum.must_equal md5_checksum
59
- end
60
- end
61
-
62
- describe '#sha256sum' do
63
- let(:sha256_checksum) {
64
- 'ec864fe99b539704b8872ac591067ef22d836a8d942087f2dba274b301ebe6e5'
65
- }
66
-
67
- let(:ruby_sha256_mock) do
68
- checksum_mock = mock
69
- checksum_mock.expects(:update).returns('')
70
- checksum_mock.expects(:hexdigest).returns(sha256_checksum)
71
- checksum_mock
72
- end
73
-
74
- it 'defaults to a Ruby based checksum if other methods fail' do
75
- backend.mock_command('sha256sum /tmp/testfile', '', '', 1)
76
- Digest::SHA256.expects(:new).returns(ruby_sha256_mock)
77
- cls.new(backend, '/tmp/testfile').sha256sum.must_equal sha256_checksum
78
- end
79
- end
80
- end
@@ -1,119 +0,0 @@
1
- require 'helper'
2
- require 'train/transports/mock'
3
- require 'train/file/remote/unix'
4
-
5
- describe Train::File::Remote::Unix do
6
- let(:cls) { Train::File::Remote::Unix }
7
-
8
- let(:backend) {
9
- backend = Train::Transports::Mock.new.connection
10
- backend.mock_os({ family: 'linux' })
11
- backend
12
- }
13
-
14
- def mockup(stubs)
15
- Class.new(cls) do
16
- stubs.each do |k,v|
17
- define_method k.to_sym do
18
- v
19
- end
20
- end
21
- end.new(nil, nil, false)
22
- end
23
-
24
- describe 'unix_mode_mask' do
25
- let(:fc) { mockup(type: :file) }
26
-
27
- it 'check owner mode calculation' do
28
- fc.unix_mode_mask('owner', 'x').must_equal 0100
29
- fc.unix_mode_mask('owner', 'w').must_equal 0200
30
- fc.unix_mode_mask('owner', 'r').must_equal 0400
31
- end
32
-
33
- it 'check group mode calculation' do
34
- fc.unix_mode_mask('group', 'x').must_equal 0010
35
- fc.unix_mode_mask('group', 'w').must_equal 0020
36
- fc.unix_mode_mask('group', 'r').must_equal 0040
37
- end
38
-
39
- it 'check other mode calculation' do
40
- fc.unix_mode_mask('other', 'x').must_equal 0001
41
- fc.unix_mode_mask('other', 'w').must_equal 0002
42
- fc.unix_mode_mask('other', 'r').must_equal 0004
43
- end
44
-
45
- it 'check all mode calculation' do
46
- fc.unix_mode_mask('all', 'x').must_equal 0111
47
- fc.unix_mode_mask('all', 'w').must_equal 0222
48
- fc.unix_mode_mask('all', 'r').must_equal 0444
49
- end
50
- end
51
-
52
- describe '#md5sum' do
53
- let(:md5_checksum) { '57d4c6f9d15313fd5651317e588c035d' }
54
-
55
- let(:ruby_md5_mock) do
56
- checksum_mock = mock
57
- checksum_mock.expects(:update).returns('')
58
- checksum_mock.expects(:hexdigest).returns(md5_checksum)
59
- checksum_mock
60
- end
61
-
62
- it 'defaults to a Ruby based checksum if other methods fail' do
63
- backend.mock_command('md5 -r /tmp/testfile', '', '', 1)
64
- Digest::MD5.expects(:new).returns(ruby_md5_mock)
65
- cls.new(backend, '/tmp/testfile').md5sum.must_equal md5_checksum
66
- end
67
-
68
-
69
- it 'calculates the correct md5sum on the `darwin` platform family' do
70
- output = "#{md5_checksum} /tmp/testfile"
71
- backend.mock_os(family: 'darwin')
72
- backend.mock_command('md5 -r /tmp/testfile', output)
73
- cls.new(backend, '/tmp/testfile').md5sum.must_equal md5_checksum
74
- end
75
-
76
- it 'calculates the correct md5sum on the `solaris` platform family' do
77
- # The `digest` command doesn't output the filename by default
78
- output = "#{md5_checksum}"
79
- backend.mock_os(family: 'solaris')
80
- backend.mock_command('digest -a md5 /tmp/testfile', output)
81
- cls.new(backend, '/tmp/testfile').md5sum.must_equal md5_checksum
82
- end
83
- end
84
-
85
- describe '#sha256sum' do
86
- let(:sha256_checksum) {
87
- '491260aaa6638d4a64c714a17828c3d82bad6ca600c9149b3b3350e91bcd283d'
88
- }
89
-
90
- let(:ruby_sha256_mock) do
91
- checksum_mock = mock
92
- checksum_mock.expects(:update).returns('')
93
- checksum_mock.expects(:hexdigest).returns(sha256_checksum)
94
- checksum_mock
95
- end
96
-
97
- it 'defaults to a Ruby based checksum if other methods fail' do
98
- backend.mock_command('shasum -a 256 /tmp/testfile', '', '', 1)
99
- Digest::SHA256.expects(:new).returns(ruby_sha256_mock)
100
- cls.new(backend, '/tmp/testfile').sha256sum.must_equal sha256_checksum
101
- end
102
-
103
-
104
- it 'calculates the correct sha256sum on the `darwin` platform family' do
105
- output = "#{sha256_checksum} /tmp/testfile"
106
- backend.mock_os(family: 'darwin')
107
- backend.mock_command('shasum -a 256 /tmp/testfile', output)
108
- cls.new(backend, '/tmp/testfile').sha256sum.must_equal sha256_checksum
109
- end
110
-
111
- it 'calculates the correct sha256sum on the `solaris` platform family' do
112
- # The `digest` command doesn't output the filename by default
113
- output = "#{sha256_checksum}"
114
- backend.mock_os(family: 'solaris')
115
- backend.mock_command('digest -a sha256 /tmp/testfile', output)
116
- cls.new(backend, '/tmp/testfile').sha256sum.must_equal sha256_checksum
117
- end
118
- end
119
- end
@@ -1,72 +0,0 @@
1
- require 'helper'
2
- require 'train/transports/mock'
3
- require 'train/file/remote/windows'
4
-
5
- describe Train::File::Remote::Windows do
6
- let(:cls) { Train::File::Remote::Windows }
7
- let(:backend) {
8
- backend = Train::Transports::Mock.new.connection
9
- backend.mock_os({ family: 'windows' })
10
- backend
11
- }
12
-
13
- describe '#md5sum' do
14
- let(:md5_checksum) { '4ce0c733cdcf1d2f78532bbd9ce3441d' }
15
- let(:filepath) { 'C:\Windows\explorer.exe' }
16
-
17
- let(:ruby_md5_mock) do
18
- checksum_mock = mock
19
- checksum_mock.expects(:update).returns('')
20
- checksum_mock.expects(:hexdigest).returns(md5_checksum)
21
- checksum_mock
22
- end
23
-
24
- it 'defaults to a Ruby based checksum if other methods fail' do
25
- backend.mock_command("CertUtil -hashfile #{filepath} MD5", '', '', 1)
26
- Digest::MD5.expects(:new).returns(ruby_md5_mock)
27
- cls.new(backend, '/tmp/testfile').md5sum.must_equal md5_checksum
28
- end
29
-
30
- it 'calculates the correct md5sum on the `windows` platform family' do
31
- output = <<-EOC
32
- MD5 hash of file C:\\Windows\\explorer.exe:\r
33
- 4c e0 c7 33 cd cf 1d 2f 78 53 2b bd 9c e3 44 1d\r
34
- CertUtil: -hashfile command completed successfully.\r
35
- EOC
36
-
37
- backend.mock_command("CertUtil -hashfile #{filepath} MD5", output)
38
- cls.new(backend, filepath).md5sum.must_equal md5_checksum
39
- end
40
- end
41
-
42
- describe '#sha256sum' do
43
- let(:sha256_checksum) {
44
- '85270240a5fd51934f0627c92b2282749d071fdc9ac351b81039ced5b10f798b'
45
- }
46
- let(:filepath) { 'C:\Windows\explorer.exe' }
47
-
48
- let(:ruby_sha256_mock) do
49
- checksum_mock = mock
50
- checksum_mock.expects(:update).returns('')
51
- checksum_mock.expects(:hexdigest).returns(sha256_checksum)
52
- checksum_mock
53
- end
54
-
55
- it 'defaults to a Ruby based checksum if other methods fail' do
56
- backend.mock_command("CertUtil -hashfile #{filepath} SHA256", '', '', 1)
57
- Digest::SHA256.expects(:new).returns(ruby_sha256_mock)
58
- cls.new(backend, '/tmp/testfile').sha256sum.must_equal sha256_checksum
59
- end
60
-
61
- it 'calculates the correct sha256sum on the `windows` platform family' do
62
- output = <<-EOC
63
- SHA256 hash of file C:\\Windows\\explorer.exe:\r
64
- 85 27 02 40 a5 fd 51 93 4f 06 27 c9 2b 22 82 74 9d 07 1f dc 9a c3 51 b8 10 39 ce d5 b1 0f 79 8b\r
65
- CertUtil: -hashfile command completed successfully.\r
66
- EOC
67
-
68
- backend.mock_command("CertUtil -hashfile #{filepath} SHA256", output)
69
- cls.new(backend, filepath).sha256sum.must_equal sha256_checksum
70
- end
71
- end
72
- end