roku_builder 3.3.3 → 3.3.4

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +1158 -0
  4. data/.travis.yml +3 -0
  5. data/Gemfile.lock +19 -14
  6. data/README.md +5 -0
  7. data/bin/roku +32 -37
  8. data/config.json.example +2 -2
  9. data/lib/roku_builder/config_manager.rb +83 -118
  10. data/lib/roku_builder/config_parser.rb +192 -0
  11. data/lib/roku_builder/config_validator.rb +125 -0
  12. data/lib/roku_builder/controller.rb +97 -484
  13. data/lib/roku_builder/controller_commands.rb +112 -0
  14. data/lib/roku_builder/error_handler.rb +116 -0
  15. data/lib/roku_builder/inspector.rb +5 -18
  16. data/lib/roku_builder/keyer.rb +3 -11
  17. data/lib/roku_builder/linker.rb +3 -15
  18. data/lib/roku_builder/loader.rb +52 -89
  19. data/lib/roku_builder/manifest_manager.rb +2 -3
  20. data/lib/roku_builder/monitor.rb +15 -12
  21. data/lib/roku_builder/navigator.rb +2 -10
  22. data/lib/roku_builder/packager.rb +1 -7
  23. data/lib/roku_builder/tester.rb +1 -0
  24. data/lib/roku_builder/util.rb +39 -0
  25. data/lib/roku_builder/version.rb +1 -1
  26. data/lib/roku_builder.rb +96 -1
  27. data/roku_builder.gemspec +5 -4
  28. data/tests/roku_builder/config_manager_test.rb +80 -241
  29. data/tests/roku_builder/{controller_config_test.rb → config_parser_test.rb} +5 -5
  30. data/tests/roku_builder/config_validator_test.rb +158 -0
  31. data/tests/roku_builder/controller_commands_test.rb +304 -0
  32. data/tests/roku_builder/controller_test.rb +61 -620
  33. data/tests/roku_builder/error_handler_test.rb +76 -0
  34. data/tests/roku_builder/inspector_test.rb +3 -0
  35. data/tests/roku_builder/keyer_test.rb +3 -2
  36. data/tests/roku_builder/linker_test.rb +2 -1
  37. data/tests/roku_builder/loader_test.rb +2 -0
  38. data/tests/roku_builder/manifest_manager_test.rb +3 -6
  39. data/tests/roku_builder/monitor_test.rb +5 -13
  40. data/tests/roku_builder/navigator_test.rb +2 -0
  41. data/tests/roku_builder/test_helper.rb +38 -0
  42. metadata +34 -11
@@ -1,79 +1,70 @@
1
1
  require_relative "test_helper.rb"
2
2
 
3
- class RokuBuilder::Controller
4
- class << self
5
- def abort
6
- #do nothing
7
- end
8
- end
9
- end
10
-
11
3
  class ControllerTest < Minitest::Test
12
4
  def test_controller_validate_options
13
- logger = Logger.new("/dev/null")
14
5
  options = {
15
6
  sideload: true,
16
7
  package: true
17
8
  }
18
- assert_equal RokuBuilder::Controller::EXTRA_COMMANDS, RokuBuilder::Controller.validate_options(options: options, logger: logger)
9
+ assert_equal RokuBuilder::EXTRA_COMMANDS, RokuBuilder::Controller.send(:validate_options, {options: options})
19
10
  options = {}
20
- assert_equal RokuBuilder::Controller::NO_COMMANDS, RokuBuilder::Controller.validate_options(options: options, logger: logger)
11
+ assert_equal RokuBuilder::NO_COMMANDS, RokuBuilder::Controller.send(:validate_options, {options: options})
21
12
  options = {
22
13
  sideload: true,
23
14
  working: true,
24
15
  current: true
25
16
  }
26
- assert_equal RokuBuilder::Controller::EXTRA_SOURCES, RokuBuilder::Controller.validate_options(options: options, logger: logger)
17
+ assert_equal RokuBuilder::EXTRA_SOURCES, RokuBuilder::Controller.send(:validate_options, {options: options})
27
18
  options = {
28
19
  sideload: true,
29
20
  working: true
30
21
  }
31
- assert_equal RokuBuilder::Controller::VALID, RokuBuilder::Controller.validate_options(options: options, logger: logger)
22
+ assert_equal RokuBuilder::VALID, RokuBuilder::Controller.send(:validate_options, {options: options})
32
23
  options = {
33
24
  package: true
34
25
  }
35
- assert_equal RokuBuilder::Controller::NO_SOURCE, RokuBuilder::Controller.validate_options(options: options, logger: logger)
26
+ assert_equal RokuBuilder::NO_SOURCE, RokuBuilder::Controller.send(:validate_options, {options: options})
36
27
  options = {
37
28
  package: true,
38
29
  current: true
39
30
  }
40
- assert_equal RokuBuilder::Controller::BAD_CURRENT, RokuBuilder::Controller.validate_options(options: options, logger: logger)
31
+ assert_equal RokuBuilder::BAD_CURRENT, RokuBuilder::Controller.send(:validate_options, {options: options})
41
32
  options = {
42
33
  deeplink: true
43
34
  }
44
- assert_equal RokuBuilder::Controller::BAD_DEEPLINK, RokuBuilder::Controller.validate_options(options: options, logger: logger)
35
+ assert_equal RokuBuilder::BAD_DEEPLINK, RokuBuilder::Controller.send(:validate_options, {options: options})
45
36
  options = {
46
37
  deeplink: true,
47
38
  deeplink_options: ""
48
39
  }
49
- assert_equal RokuBuilder::Controller::BAD_DEEPLINK, RokuBuilder::Controller.validate_options(options: options, logger: logger)
40
+ assert_equal RokuBuilder::BAD_DEEPLINK, RokuBuilder::Controller.send(:validate_options, {options: options})
50
41
  options = {
51
42
  sideload: true,
52
43
  in: "",
53
44
  current: true
54
45
  }
55
- assert_equal RokuBuilder::Controller::VALID, RokuBuilder::Controller.validate_options(options: options, logger: logger)
46
+ assert_equal RokuBuilder::VALID, RokuBuilder::Controller.send(:validate_options, {options: options})
56
47
  options = {
57
48
  package: true,
58
49
  in: "",
59
50
  set_stage: true
60
51
  }
61
- assert_equal RokuBuilder::Controller::BAD_IN_FILE, RokuBuilder::Controller.validate_options(options: options, logger: logger)
52
+ assert_equal RokuBuilder::BAD_IN_FILE, RokuBuilder::Controller.send(:validate_options, {options: options})
62
53
  end
63
54
  def test_controller_configure
64
55
  logger = Logger.new("/dev/null")
65
56
  target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
66
- File.delete(target_config) if File.exists?(target_config)
67
- assert !File.exists?(target_config)
57
+ File.delete(target_config) if File.exist?(target_config)
58
+ assert !File.exist?(target_config)
68
59
 
69
60
  options = {
70
61
  configure: true,
71
62
  config: target_config,
72
63
  }
73
64
 
74
- RokuBuilder::Controller.handle_options(options: options, logger: logger)
65
+ code = RokuBuilder::Controller.send(:configure, {options: options, logger: logger})
75
66
 
76
- assert File.exists?(target_config)
67
+ assert File.exist?(target_config)
77
68
 
78
69
  options = {
79
70
  configure: true,
@@ -81,562 +72,22 @@ class ControllerTest < Minitest::Test
81
72
  edit_params: "ip:111.222.333.444"
82
73
  }
83
74
 
84
- RokuBuilder::Controller.handle_options(options: options, logger: logger)
75
+ code = RokuBuilder::Controller.send(:configure, {options: options, logger: logger})
85
76
 
86
- assert File.exists?(target_config)
77
+ assert File.exist?(target_config)
87
78
  config = RokuBuilder::ConfigManager.get_config(config: target_config, logger: logger)
88
- assert_equal "111.222.333.444", config[:devices][:roku][:ip]
79
+ assert_equal "111.222.333.444", config[:devices][config[:devices][:default]][:ip]
89
80
 
90
81
  options = {
91
82
  configure: true,
92
83
  config: target_config
93
84
  }
94
85
 
95
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
96
-
97
- assert_equal RokuBuilder::Controller::CONFIG_OVERWRITE, code
98
-
99
- File.delete(target_config) if File.exists?(target_config)
100
- end
101
-
102
- def test_controller_validate
103
- logger = Logger.new("/dev/null")
104
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
105
- File.delete(target_config) if File.exists?(target_config)
106
-
107
- # Test Missing Config
108
- options = {validate: true, config: target_config}
109
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
110
- assert_equal RokuBuilder::Controller::MISSING_CONFIG, code
111
-
112
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
113
-
114
- # Test Invalid config json
115
- options = {validate: true, config: target_config}
116
- RokuBuilder::ConfigManager.stub(:get_config, nil) do
117
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
118
- end
119
- assert_equal RokuBuilder::Controller::INVALID_CONFIG, code
120
-
121
- # Test Invalid config
122
- options = {validate: true, config: target_config}
123
- RokuBuilder::ConfigManager.stub(:validate_config, [1]) do
124
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
125
- end
126
- assert_equal RokuBuilder::Controller::INVALID_CONFIG, code
127
-
128
- # Test Depricated Config
129
- options = {validate: true, stage: 'production', config: target_config}
130
- RokuBuilder::ConfigManager.stub(:validate_config, [-1]) do
131
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
132
- end
133
- assert_equal RokuBuilder::Controller::DEPRICATED_CONFIG, code
134
-
135
- # Test valid Config
136
- options = {validate: true, stage: 'production', config: target_config}
137
- RokuBuilder::ConfigManager.stub(:validate_config, [0]) do
138
- RokuBuilder::Controller.stub(:check_devices, [0, nil]) do
139
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
140
- end
141
- end
142
- assert_equal RokuBuilder::Controller::SUCCESS, code
143
-
144
- # Test valid config in pwd
145
- options = {validate: true, stage: 'production', config: target_config}
146
- RokuBuilder::ConfigManager.stub(:validate_config, [0]) do
147
- RokuBuilder::Controller.stub(:system, "/dev/null/test") do
148
- RokuBuilder::Controller.stub(:check_devices, [0, nil]) do
149
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
150
- end
151
- end
152
- end
153
- assert_equal RokuBuilder::Controller::SUCCESS, code
154
-
155
- File.delete(target_config) if File.exists?(target_config)
156
- end
157
-
158
- def test_controller_sideload
159
- logger = Logger.new("/dev/null")
160
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
161
- File.delete(target_config) if File.exists?(target_config)
162
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
163
- loader = Minitest::Mock.new
164
-
165
- code = nil
166
- options = {sideload: true, stage: 'production', config: target_config}
167
- sideload_config = {
168
- root_dir: "/dev/null",
169
- branch: "master",
170
- update_manifest: nil,
171
- fetch: nil,
172
- folders: ["resources", "source"],
173
- files: ["manifest"]
174
- }
175
- # Test Success
176
- loader.expect(:sideload, true, [sideload_config])
177
- RokuBuilder::Loader.stub(:new, loader) do
178
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, sideload_config: sideload_config}]) do
179
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
180
- end
181
- end
182
- assert_equal RokuBuilder::Controller::SUCCESS, code
183
-
184
- # Test Failure
185
- loader.expect(:sideload, false, [sideload_config])
186
- RokuBuilder::Loader.stub(:new, loader) do
187
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, sideload_config: sideload_config}]) do
188
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
189
- end
190
- end
191
- assert_equal RokuBuilder::Controller::FAILED_SIDELOAD, code
192
-
193
- loader.verify
194
- File.delete(target_config) if File.exists?(target_config)
195
- end
196
-
197
- def test_controller_package
198
- logger = Logger.new("/dev/null")
199
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
200
- File.delete(target_config) if File.exists?(target_config)
201
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
202
- keyer = Minitest::Mock.new
203
- loader = Minitest::Mock.new
204
- packager = Minitest::Mock.new
205
- inspector = Minitest::Mock.new
206
-
207
- options = {package: true, inspect: true, stage: 'production', out_folder: "/tmp", config: target_config}
208
- configs = {
209
- device_config: {},
210
- sideload_config: {},
211
- key: {},
212
- package_config: {
213
- app_name_version: "app - production - build_version",
214
- out_file: "/tmp/app_production_build_version.pkg"
215
- },
216
- project_config: {app_name: "app"},
217
- inspect_config: {}
218
- }
219
- info = {app_name: "app", dev_id: "id", creation_date: "date", dev_zip: ""}
220
-
221
- loader.expect(:sideload, "build_version", [configs[:sideload_config]])
222
- keyer.expect(:rekey, true, [configs[:key]])
223
- packager.expect(:package, true, [configs[:package_config]])
224
- inspector.expect(:inspect, info, [configs[:inspect_config]])
225
-
226
- code = nil
227
- RokuBuilder::Keyer.stub(:new, keyer) do
228
- RokuBuilder::Loader.stub(:new, loader) do
229
- RokuBuilder::Packager.stub(:new, packager) do
230
- RokuBuilder::Inspector.stub(:new, inspector) do
231
- RokuBuilder::Controller.stub(:check_devices, [0, configs]) do
232
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
233
- end
234
- end
235
- end
236
- end
237
- end
238
- assert_equal RokuBuilder::Controller::SUCCESS, code
239
-
240
- keyer.verify
241
- loader.verify
242
- packager.verify
243
- inspector.verify
244
- File.delete(target_config) if File.exists?(target_config)
245
- end
246
-
247
- def test_controller_package_outfile
248
- logger = Logger.new("/dev/null")
249
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
250
- File.delete(target_config) if File.exists?(target_config)
251
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
252
- keyer = Minitest::Mock.new
253
- loader = Minitest::Mock.new
254
- packager = Minitest::Mock.new
255
- inspector = Minitest::Mock.new
256
-
257
- options = {package: true, inspect: true, stage: 'production', out: "/tmp/out.pkg", config: target_config}
258
- configs = {
259
- device_config: {},
260
- sideload_config: {},
261
- key: {},
262
- package_config: {
263
- app_name_version: "app - production - build_version",
264
- out_file: "/tmp/out.pkg"
265
- },
266
- project_config: {app_name: "app"},
267
- inspect_config: {}
268
- }
269
- info = {app_name: "app", dev_id: "id", creation_date: "date", dev_zip: ""}
270
-
271
- loader.expect(:sideload, "build_version", [configs[:sideload_config]])
272
- keyer.expect(:rekey, true, [configs[:key]])
273
- packager.expect(:package, true, [configs[:package_config]])
274
- inspector.expect(:inspect, info, [configs[:inspect_config]])
275
-
276
- code = nil
277
- RokuBuilder::Keyer.stub(:new, keyer) do
278
- RokuBuilder::Loader.stub(:new, loader) do
279
- RokuBuilder::Packager.stub(:new, packager) do
280
- RokuBuilder::Inspector.stub(:new, inspector) do
281
- RokuBuilder::Controller.stub(:check_devices, [0, configs]) do
282
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
283
- end
284
- end
285
- end
286
- end
287
- end
288
- assert_equal RokuBuilder::Controller::SUCCESS, code
289
-
290
- keyer.verify
291
- loader.verify
292
- packager.verify
293
- inspector.verify
294
- File.delete(target_config) if File.exists?(target_config)
295
- end
296
-
297
- def test_controller_build
298
- logger = Logger.new("/dev/null")
299
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
300
- File.delete(target_config) if File.exists?(target_config)
301
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
302
- loader = Minitest::Mock.new
303
-
304
- code = nil
305
- options = {build: true, stage: 'production', out_folder: "/tmp", config: target_config}
306
- build_config = {
307
- root_dir: "/dev/null",
308
- branch: "master",
309
- outfile: "/tmp/app_production_1.zip",
310
- fetch: nil,
311
- folders: ["resources", "source"],
312
- files: ["manifest"]
313
- }
314
- loader.expect(:build, "/tmp/build", [build_config])
315
- RokuBuilder::Loader.stub(:new, loader) do
316
- RokuBuilder::ManifestManager.stub(:build_version, "1") do
317
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, manifest_config: {}, project_config: {}, build_config: build_config}]) do
318
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
319
- end
320
- end
321
- end
322
- assert_equal RokuBuilder::Controller::SUCCESS, code
323
- loader.verify
324
- File.delete(target_config) if File.exists?(target_config)
325
- end
326
- def test_controller_update
327
- logger = Logger.new("/dev/null")
328
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
329
- File.delete(target_config) if File.exists?(target_config)
330
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
331
- mock = Minitest::Mock.new
332
-
333
- code = nil
334
- options = {update: true, stage: 'production', out_folder: "/tmp", config: target_config}
335
- manifest_config = {
336
- root_dir: "/dev/null"
337
- }
338
- mock.expect(:call, "1", [manifest_config])
339
- mock.expect(:call, "2", [manifest_config])
340
- RokuBuilder::ManifestManager.stub(:build_version, mock) do
341
- RokuBuilder::ManifestManager.stub(:update_build, mock) do
342
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, manifest_config: manifest_config}]) do
343
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
344
- end
345
- end
346
- end
347
- mock.verify
348
- assert_equal RokuBuilder::Controller::SUCCESS, code
349
- File.delete(target_config) if File.exists?(target_config)
350
- end
351
-
352
- def test_controller_deeplink
353
- logger = Logger.new("/dev/null")
354
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
355
- File.delete(target_config) if File.exists?(target_config)
356
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
357
- mock = Minitest::Mock.new
358
-
359
- code = nil
360
- options = {deeplink: true, stage: 'production', deeplink_options: "a:b", config: target_config}
361
- deeplink_config = {
362
- root_dir: "/dev/null"
363
- }
364
- mock.expect(:link, "true", [deeplink_config])
365
- RokuBuilder::Linker.stub(:new, mock) do
366
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, deeplink_config: deeplink_config}]) do
367
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
368
- end
369
- end
370
- mock.verify
371
- assert_equal RokuBuilder::Controller::SUCCESS, code
372
- File.delete(target_config) if File.exists?(target_config)
373
- end
374
- def test_controller_delete
375
- logger = Logger.new("/dev/null")
376
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
377
- File.delete(target_config) if File.exists?(target_config)
378
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
379
- loader = Minitest::Mock.new
380
-
381
- options = {delete: true, stage: 'production', config: target_config}
382
- loader.expect(:unload, nil)
383
- code = nil
384
- RokuBuilder::Loader.stub(:new, loader) do
385
- RokuBuilder::ManifestManager.stub(:build_version, "1") do
386
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}}]) do
387
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
388
- end
389
- end
390
- end
391
- assert_equal RokuBuilder::Controller::SUCCESS, code
392
- loader.verify
393
- File.delete(target_config) if File.exists?(target_config)
394
- end
395
- def test_controller_monitor
396
- logger = Logger.new("/dev/null")
397
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
398
- File.delete(target_config) if File.exists?(target_config)
399
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
400
- monitor = Minitest::Mock.new
86
+ code = RokuBuilder::Controller.send(:configure, {options: options, logger: logger})
401
87
 
402
- options = {monitor: "main", stage: 'production', config: target_config}
403
- monitor.expect(:monitor, nil, [{}])
404
- code = nil
405
- RokuBuilder::Monitor.stub(:new, monitor) do
406
- RokuBuilder::ManifestManager.stub(:build_version, "1") do
407
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, monitor_config: {}}]) do
408
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
409
- end
410
- end
411
- end
412
- assert_equal RokuBuilder::Controller::SUCCESS, code
413
- monitor.verify
414
- File.delete(target_config) if File.exists?(target_config)
415
- end
416
- def test_controller_navigate
417
- logger = Logger.new("/dev/null")
418
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
419
- File.delete(target_config) if File.exists?(target_config)
420
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
421
- navigator = Minitest::Mock.new
88
+ assert_equal RokuBuilder::CONFIG_OVERWRITE, code
422
89
 
423
- options = {navigate: "up", stage: 'production', config: target_config}
424
- navigator.expect(:nav, true, [{}])
425
- code = nil
426
- RokuBuilder::Navigator.stub(:new, navigator) do
427
- RokuBuilder::ManifestManager.stub(:build_version, "1") do
428
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, navigate_config: {}}]) do
429
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
430
- end
431
- end
432
- end
433
- assert_equal RokuBuilder::Controller::SUCCESS, code
434
- navigator.verify
435
- File.delete(target_config) if File.exists?(target_config)
436
- end
437
- def test_controller_navigate_fail
438
- logger = Logger.new("/dev/null")
439
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
440
- File.delete(target_config) if File.exists?(target_config)
441
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
442
- navigator = Minitest::Mock.new
443
-
444
- options = {navigate: "up", stage: 'production', config: target_config}
445
- navigator.expect(:nav, nil, [{}])
446
- code = nil
447
- RokuBuilder::Navigator.stub(:new, navigator) do
448
- RokuBuilder::ManifestManager.stub(:build_version, "1") do
449
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, navigate_config: {}}]) do
450
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
451
- end
452
- end
453
- end
454
- assert_equal RokuBuilder::Controller::FAILED_NAVIGATING, code
455
- navigator.verify
456
- File.delete(target_config) if File.exists?(target_config)
457
- end
458
- def test_controller_screen
459
- logger = Logger.new("/dev/null")
460
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
461
- File.delete(target_config) if File.exists?(target_config)
462
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
463
- navigator = Minitest::Mock.new
464
-
465
- options = {screen: "secret", stage: 'production', config: target_config}
466
- navigator.expect(:screen, true, [{}])
467
- code = nil
468
- RokuBuilder::Navigator.stub(:new, navigator) do
469
- RokuBuilder::ManifestManager.stub(:build_version, "1") do
470
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, screen_config: {}}]) do
471
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
472
- end
473
- end
474
- end
475
- assert_equal RokuBuilder::Controller::SUCCESS, code
476
- navigator.verify
477
- File.delete(target_config) if File.exists?(target_config)
478
- end
479
- def test_controller_screens
480
- logger = Logger.new("/dev/null")
481
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
482
- File.delete(target_config) if File.exists?(target_config)
483
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
484
- navigator = Minitest::Mock.new
485
-
486
- options = {screens: true, stage: 'production', config: target_config}
487
- navigator.expect(:screens, true)
488
- code = nil
489
- RokuBuilder::Navigator.stub(:new, navigator) do
490
- RokuBuilder::ManifestManager.stub(:build_version, "1") do
491
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}}]) do
492
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
493
- end
494
- end
495
- end
496
- assert_equal RokuBuilder::Controller::SUCCESS, code
497
- navigator.verify
498
- File.delete(target_config) if File.exists?(target_config)
499
- end
500
- def test_controller_text
501
- logger = Logger.new("/dev/null")
502
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
503
- File.delete(target_config) if File.exists?(target_config)
504
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
505
- navigator = Minitest::Mock.new
506
-
507
- options = {text: "text string", stage: 'production', config: target_config}
508
- navigator.expect(:type, true, [{}])
509
- code = nil
510
- RokuBuilder::Navigator.stub(:new, navigator) do
511
- RokuBuilder::ManifestManager.stub(:build_version, "1") do
512
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, text_config: {}}]) do
513
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
514
- end
515
- end
516
- end
517
- assert_equal RokuBuilder::Controller::SUCCESS, code
518
- navigator.verify
519
- File.delete(target_config) if File.exists?(target_config)
520
- end
521
- def test_controller_test
522
- logger = Logger.new("/dev/null")
523
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
524
- File.delete(target_config) if File.exists?(target_config)
525
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
526
- tester = Minitest::Mock.new
527
-
528
- options = {test: true, stage: 'production', config: target_config}
529
- tester.expect(:run_tests, true, [{}])
530
- code = nil
531
- RokuBuilder::Tester.stub(:new, tester) do
532
- RokuBuilder::ManifestManager.stub(:build_version, "1") do
533
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, test_config: {}}]) do
534
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
535
- end
536
- end
537
- end
538
- assert_equal RokuBuilder::Controller::SUCCESS, code
539
- tester.verify
540
- File.delete(target_config) if File.exists?(target_config)
541
- end
542
- def test_controller_screencapture
543
- logger = Logger.new("/dev/null")
544
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
545
- File.delete(target_config) if File.exists?(target_config)
546
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
547
- inspector = Minitest::Mock.new
548
-
549
- options = {screencapture: true, stage: 'production', out: "/tmp/capture.jpg", config: target_config}
550
- inspector.expect(:screencapture, true, [{}])
551
- code = nil
552
- RokuBuilder::Inspector.stub(:new, inspector) do
553
- RokuBuilder::ManifestManager.stub(:build_version, "1") do
554
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, screencapture_config: {}}]) do
555
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
556
- end
557
- end
558
- end
559
- assert_equal RokuBuilder::Controller::SUCCESS, code
560
- inspector.verify
561
- File.delete(target_config) if File.exists?(target_config)
562
- end
563
- def test_controller_screencapture_fail
564
- logger = Logger.new("/dev/null")
565
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
566
- File.delete(target_config) if File.exists?(target_config)
567
- FileUtils.cp(File.join(File.dirname(target_config), "valid_config.json"), target_config)
568
- inspector = Minitest::Mock.new
569
-
570
- options = {screencapture: true, stage: 'production', out: "/tmp", config: target_config}
571
- inspector.expect(:screencapture, false, [{}])
572
- code = nil
573
- RokuBuilder::Inspector.stub(:new, inspector) do
574
- RokuBuilder::ManifestManager.stub(:build_version, "1") do
575
- RokuBuilder::Controller.stub(:check_devices, [0, {device_config: {}, screencapture_config: {}}]) do
576
- code = RokuBuilder::Controller.handle_options(options: options, logger: logger)
577
- end
578
- end
579
- end
580
- assert_equal RokuBuilder::Controller::FAILED_SCREENCAPTURE, code
581
- inspector.verify
582
- File.delete(target_config) if File.exists?(target_config)
583
- end
584
-
585
- def test_controller_handel_error_codes
586
- errors = {
587
- fatal: {
588
- options_code: [
589
- RokuBuilder::Controller::EXTRA_COMMANDS,
590
- RokuBuilder::Controller::NO_COMMANDS,
591
- RokuBuilder::Controller::EXTRA_SOURCES,
592
- RokuBuilder::Controller::NO_SOURCE,
593
- RokuBuilder::Controller::BAD_CURRENT,
594
- RokuBuilder::Controller::BAD_DEEPLINK,
595
- RokuBuilder::Controller::BAD_IN_FILE
596
- ],
597
- device_code: [
598
- RokuBuilder::Controller::BAD_DEVICE,
599
- RokuBuilder::Controller::NO_DEVICES,
600
- ],
601
- handle_code: [
602
- RokuBuilder::Controller::CONFIG_OVERWRITE,
603
- RokuBuilder::Controller::MISSING_CONFIG,
604
- RokuBuilder::Controller::INVALID_CONFIG,
605
- RokuBuilder::Controller::MISSING_MANIFEST,
606
- RokuBuilder::Controller::UNKNOWN_DEVICE,
607
- RokuBuilder::Controller::UNKNOWN_PROJECT,
608
- RokuBuilder::Controller::UNKNOWN_STAGE,
609
- RokuBuilder::Controller::FAILED_SIDELOAD,
610
- RokuBuilder::Controller::FAILED_SIGNING,
611
- RokuBuilder::Controller::FAILED_DEEPLINKING,
612
- RokuBuilder::Controller::FAILED_NAVIGATING,
613
- RokuBuilder::Controller::FAILED_SCREENCAPTURE
614
- ]
615
- },
616
- info: {
617
- device_code: [
618
- RokuBuilder::Controller::CHANGED_DEVICE
619
- ]
620
- },
621
- warn: {
622
- handle_code: [
623
- RokuBuilder::Controller::DEPRICATED_CONFIG
624
- ]
625
- }
626
- }
627
-
628
- errors.each_pair do |type,errors|
629
- errors.each_pair do |key,value|
630
- value.each do |code|
631
- logger = Minitest::Mock.new
632
- options = {options: {}, logger: logger}
633
- options[key] = code
634
- logger.expect(type, nil) {|string| string.class == String}
635
- RokuBuilder::Controller.handle_error_codes(**options)
636
- logger.verify
637
- end
638
- end
639
- end
90
+ File.delete(target_config) if File.exist?(target_config)
640
91
  end
641
92
 
642
93
  def test_controller_check_devices
@@ -655,74 +106,64 @@ class ControllerTest < Minitest::Test
655
106
  Net::Ping::External.stub(:new, ping) do
656
107
 
657
108
  ping.expect(:ping?, true, [configs[:device_config][:ip], 1, 0.2, 1])
658
- code, ret = RokuBuilder::Controller.check_devices(options: options, config: config, configs: configs, logger: logger)
659
- assert_equal RokuBuilder::Controller::GOOD_DEVICE, code
109
+ code, ret = RokuBuilder::Controller.send(:check_devices, {options: options, config: config, configs: configs, logger: logger})
110
+ assert_equal RokuBuilder::GOOD_DEVICE, code
660
111
 
661
112
  ping.expect(:ping?, false, [configs[:device_config][:ip], 1, 0.2, 1])
662
113
  ping.expect(:ping?, false, [config[:devices][:a][:ip], 1, 0.2, 1])
663
114
  ping.expect(:ping?, false, [config[:devices][:b][:ip], 1, 0.2, 1])
664
- code, ret = RokuBuilder::Controller.check_devices(options: options, config: config, configs: configs, logger: logger)
665
- assert_equal RokuBuilder::Controller::NO_DEVICES, code
115
+ code, ret = RokuBuilder::Controller.send(:check_devices, {options: options, config: config, configs: configs, logger: logger})
116
+ assert_equal RokuBuilder::NO_DEVICES, code
666
117
 
667
118
  ping.expect(:ping?, false, [configs[:device_config][:ip], 1, 0.2, 1])
668
119
  ping.expect(:ping?, true, [config[:devices][:a][:ip], 1, 0.2, 1])
669
- code, ret = RokuBuilder::Controller.check_devices(options: options, config: config, configs: configs, logger: logger)
670
- assert_equal RokuBuilder::Controller::CHANGED_DEVICE, code
120
+ code, ret = RokuBuilder::Controller.send(:check_devices, {options: options, config: config, configs: configs, logger: logger})
121
+ assert_equal RokuBuilder::CHANGED_DEVICE, code
671
122
  assert_equal config[:devices][:a][:ip], ret[:device_config][:ip]
672
123
 
673
124
  options[:device_given] = true
674
125
  ping.expect(:ping?, false, [configs[:device_config][:ip], 1, 0.2, 1])
675
- code, ret = RokuBuilder::Controller.check_devices(options: options, config: config, configs: configs, logger: logger)
676
- assert_equal RokuBuilder::Controller::BAD_DEVICE, code
126
+ code, ret = RokuBuilder::Controller.send(:check_devices, {options: options, config: config, configs: configs, logger: logger})
127
+ assert_equal RokuBuilder::BAD_DEVICE, code
677
128
  end
678
129
  end
679
130
 
680
131
  def test_controller_run_debug
681
- logger = Minitest::Mock.new
682
- options = {debug: true}
683
-
684
- logger.expect(:formater=, nil) do |proc_object|
685
- proc_object.class == PROC and proc_object.arity == 4
686
- end
687
- logger.expect(:level=, nil, [Logger::DEBUG])
688
- RokuBuilder::Controller.stub(:validate_options, nil) do
689
- RokuBuilder::Controller.stub(:handle_options, nil) do
690
- RokuBuilder::Controller.stub(:handle_error_codes, nil) do
691
- RokuBuilder::Controller.run(options: options)
692
- end
693
- end
694
- end
695
- end
696
- def test_controller_run_info
697
- logger = Minitest::Mock.new
698
- options = {verbose: true}
699
-
700
- logger.expect(:formater=, nil) do |proc_object|
701
- proc_object.class == PROC and proc_object.arity == 4
702
- end
703
- logger.expect(:level=, nil, [Logger::INFO])
704
- RokuBuilder::Controller.stub(:validate_options, nil) do
705
- RokuBuilder::Controller.stub(:handle_options, nil) do
706
- RokuBuilder::Controller.stub(:handle_error_codes, nil) do
707
- RokuBuilder::Controller.run(options: options)
708
- end
709
- end
710
- end
711
- end
712
- def test_controller_run_warn
713
- logger = Minitest::Mock.new
714
- options = {}
715
-
716
- logger.expect(:formater=, nil) do |proc_object|
717
- proc_object.class == PROC and proc_object.arity == 4
718
- end
719
- logger.expect(:level=, nil, [Logger::WARN])
720
- RokuBuilder::Controller.stub(:validate_options, nil) do
721
- RokuBuilder::Controller.stub(:handle_options, nil) do
722
- RokuBuilder::Controller.stub(:handle_error_codes, nil) do
723
- RokuBuilder::Controller.run(options: options)
132
+ tests = [
133
+ {options: {debug: true}, level: Logger::DEBUG},
134
+ {options: {verbose: true}, level: Logger::INFO},
135
+ {options: {}, level: Logger::WARN}
136
+ ]
137
+ tests.each do |test|
138
+ logger = Minitest::Mock.new
139
+ logger.expect(:formatter=, nil) do |proc_object|
140
+ proc_object.class == Proc and proc_object.arity == 4
141
+ end
142
+ logger.expect(:level=, nil, [test[:level]])
143
+ Logger.stub(:new, logger) do
144
+ RokuBuilder::Controller.stub(:validate_options, nil) do
145
+ RokuBuilder::ErrorHandler.stub(:handle_options_codes, nil) do
146
+ RokuBuilder::Controller.stub(:configure, nil) do
147
+ RokuBuilder::ErrorHandler.stub(:handle_configure_codes, nil) do
148
+ RokuBuilder::ConfigManager.stub(:load_config, nil) do
149
+ RokuBuilder::ErrorHandler.stub(:handle_load_codes, nil) do
150
+ RokuBuilder::Controller.stub(:check_devices, nil) do
151
+ RokuBuilder::ErrorHandler.stub(:handle_device_codes, nil) do
152
+ RokuBuilder::Controller.stub(:execute_commands, nil) do
153
+ RokuBuilder::ErrorHandler.stub(:handle_command_codes, nil) do
154
+ RokuBuilder::Controller.run(options: test[:options])
155
+ end
156
+ end
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
162
+ end
163
+ end
724
164
  end
725
165
  end
166
+ logger.verify
726
167
  end
727
168
  end
728
169
  end