roku_builder 3.3.3 → 3.3.4

Sign up to get free protection for your applications and to get access to all the features.
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