roku_builder 3.12.8 → 3.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -2
  3. data/CHANGELOG +9 -0
  4. data/Gemfile.lock +17 -11
  5. data/bin/roku +4 -8
  6. data/lib/roku_builder.rb +16 -24
  7. data/lib/roku_builder/config.rb +213 -0
  8. data/lib/roku_builder/config_parser.rb +304 -267
  9. data/lib/roku_builder/config_validator.rb +149 -126
  10. data/lib/roku_builder/controller.rb +34 -184
  11. data/lib/roku_builder/controller_commands.rb +85 -79
  12. data/lib/roku_builder/error_handler.rb +0 -11
  13. data/lib/roku_builder/errors.rb +12 -0
  14. data/lib/roku_builder/inspector.rb +6 -4
  15. data/lib/roku_builder/keyer.rb +1 -1
  16. data/lib/roku_builder/loader.rb +1 -1
  17. data/lib/roku_builder/logger.rb +32 -0
  18. data/lib/roku_builder/manifest_manager.rb +2 -2
  19. data/lib/roku_builder/monitor.rb +1 -1
  20. data/lib/roku_builder/options.rb +113 -0
  21. data/lib/roku_builder/stager.rb +2 -2
  22. data/lib/roku_builder/tester.rb +57 -11
  23. data/lib/roku_builder/util.rb +3 -4
  24. data/lib/roku_builder/version.rb +1 -1
  25. data/roku_builder.gemspec +2 -1
  26. data/test/roku_builder/test_config.rb +168 -0
  27. data/test/roku_builder/test_config_parser.rb +347 -394
  28. data/test/roku_builder/test_config_validator.rb +193 -190
  29. data/test/roku_builder/test_controller.rb +59 -178
  30. data/test/roku_builder/test_controller_commands.rb +407 -394
  31. data/test/roku_builder/test_error_handler.rb +67 -69
  32. data/test/roku_builder/test_files/config_test/bad.json +2 -0
  33. data/test/roku_builder/test_files/config_test/child.json +11 -0
  34. data/test/roku_builder/test_files/config_test/config.json +29 -0
  35. data/test/roku_builder/test_files/config_test/non_json.json +1 -0
  36. data/test/roku_builder/test_files/config_test/parent.json +21 -0
  37. data/test/roku_builder/test_files/config_test/parent_projects.json +35 -0
  38. data/test/roku_builder/test_files/manifest_manager_test/manifest_template_2 +1 -1
  39. data/test/roku_builder/test_helper.rb +55 -45
  40. data/test/roku_builder/test_inspector.rb +278 -213
  41. data/test/roku_builder/test_keyer.rb +144 -147
  42. data/test/roku_builder/test_linker.rb +91 -95
  43. data/test/roku_builder/test_loader.rb +279 -289
  44. data/test/roku_builder/test_logger.rb +47 -0
  45. data/test/roku_builder/test_manifest_manager.rb +92 -94
  46. data/test/roku_builder/test_monitor.rb +101 -103
  47. data/test/roku_builder/test_navigator.rb +240 -245
  48. data/test/roku_builder/test_options.rb +156 -0
  49. data/test/roku_builder/test_packager.rb +108 -108
  50. data/test/roku_builder/test_profiler.rb +20 -19
  51. data/test/roku_builder/test_scripter.rb +83 -81
  52. data/test/roku_builder/test_stager.rb +299 -311
  53. data/test/roku_builder/test_tester.rb +112 -115
  54. data/test/roku_builder/test_util.rb +18 -17
  55. metadata +39 -6
  56. data/lib/roku_builder/config_manager.rb +0 -161
  57. data/test/roku_builder/test_config_manager.rb +0 -372
@@ -2,195 +2,198 @@
2
2
 
3
3
  require_relative "test_helper.rb"
4
4
 
5
- class ConfigValidatorTest < Minitest::Test
6
-
7
- def test_config_manager_validate_devices
8
- config = good_config
9
- config[:devices] = nil
10
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
11
- assert_equal [1], codes
12
- end
13
-
14
- def test_config_manager_validate_devices_default
15
- config = good_config
16
- config[:devices][:default] = nil
17
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
18
- assert_equal [2], codes
19
- end
20
-
21
- def test_config_manager_validate_devices_default_is_symbol
22
- config = good_config
23
- config[:devices][:default] = "bad"
24
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
25
- assert_equal [3], codes
26
- end
27
-
28
- def test_config_manager_validate_device_ip
29
- config = good_config
30
- config[:devices][:roku][:ip] = nil
31
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
32
- assert_equal [7], codes
33
- end
34
-
35
- def test_config_manager_validate_device_ip_empty
36
- config = good_config
37
- config[:devices][:roku][:ip] = ""
38
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
39
- assert_equal [7], codes
40
- end
41
-
42
- def test_config_manager_validate_device_ip_default_value
43
- config = good_config
44
- config[:devices][:roku][:ip] = "xxx.xxx.xxx.xxx"
45
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
46
- assert_equal [7], codes
47
- end
48
-
49
- def test_config_manager_validate_device_user
50
- config = good_config
51
- config[:devices][:roku][:user] = nil
52
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
53
- assert_equal [8], codes
54
- end
55
-
56
- def test_config_manager_validate_device_user_empty
57
- config = good_config
58
- config[:devices][:roku][:user] = ""
59
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
60
- assert_equal [8], codes
61
- end
62
-
63
- def test_config_manager_validate_device_user_default_value
64
- config = good_config
65
- config[:devices][:roku][:user] = "<username>"
66
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
67
- assert_equal [8], codes
68
- end
69
-
70
- def test_config_manager_validate_device_password
71
- config = good_config
72
- config[:devices][:roku][:password] = nil
73
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
74
- assert_equal [9], codes
75
- end
76
-
77
- def test_config_manager_validate_device_password_empty
78
- config = good_config
79
- config[:devices][:roku][:password] = ""
80
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
81
- assert_equal [9], codes
82
- end
83
-
84
- def test_config_manager_validate_device_password_default_value
85
- config = good_config
86
- config[:devices][:roku][:password] = "<password>"
87
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
88
- assert_equal [9], codes
89
- end
90
-
91
- def test_config_manager_validate_projects
92
- config = good_config
93
- config[:projects] = nil
94
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
95
- assert_equal [0], codes
96
- end
97
-
98
- def test_config_manager_validate_projects_default
99
- config = good_config
100
- config[:projects][:default] = nil
101
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
102
- assert_equal [5], codes
103
- end
104
-
105
- def test_config_manager_validate_projects_default_default_value
106
- config = good_config
107
- config[:projects][:default] = "<project id>".to_sym
108
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
109
- assert_equal [5], codes
110
- end
111
-
112
- def test_config_manager_validate_projects_default_is_symbol
113
- config = good_config
114
- config[:projects][:default] = "project_id"
115
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
116
- assert_equal [6], codes
117
- end
118
-
119
- def test_config_manager_validate_project_app_name
120
- config = good_config
121
- config[:projects][:project1][:app_name] = nil
122
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
123
- assert_equal [10], codes
124
- end
125
-
126
- def test_config_manager_validate_project_directory
127
- config = good_config
128
- config[:projects][:project1][:directory] = nil
129
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
130
- assert_equal [11], codes
131
- end
132
-
133
- def test_config_manager_validate_project_folders
134
- config = good_config
135
- config[:projects][:project1][:folders] = nil
136
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
137
- assert_equal [12], codes
138
- end
139
-
140
- def test_config_manager_validate_project_folders_is_array
141
- config = good_config
142
- config[:projects][:project1][:folders] = "Folders"
143
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
144
- assert_equal [13], codes
145
- end
146
-
147
- def test_config_manager_validate_project_files
148
- config = good_config
149
- config[:projects][:project1][:files] = nil
150
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
151
- assert_equal [14], codes
152
- end
153
-
154
- def test_config_manager_validate_project_filess_is_array
155
- config = good_config
156
- config[:projects][:project1][:files] = "Files"
157
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
158
- assert_equal [15], codes
159
- end
160
-
161
- def test_config_manager_validate_project_key
162
- config = good_config
163
- config[:projects][:project2][:stages][:production][:key] = "b"
164
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
165
- assert_equal [22], codes
166
- end
167
-
168
- def test_config_manager_validate_keys_pkg
169
- config = good_config
170
- config[:keys][:a][:keyed_pkg] = nil
171
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
172
- assert_equal [19], codes
173
- config = good_config
174
- config[:keys][:a][:keyed_pkg] = "<path/to/signed/package>"
175
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
176
- assert_equal [19], codes
177
- end
178
-
179
- def test_config_manager_validate_keys_password
180
- config = good_config
181
- config[:keys][:a][:password] = nil
182
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
183
- assert_equal [20], codes
184
- config = good_config
185
- config[:keys][:a][:password] = "<password>"
186
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
187
- assert_equal [20], codes
188
- end
189
-
190
- def test_config_manager_validate_input_mappings
191
- config = good_config
192
- config[:input_mapping]["a"] = ["home"]
193
- codes = RokuBuilder::ConfigValidator.validate_config(config: config)
194
- assert_equal [21], codes
5
+ module RokuBuilder
6
+ class ConfigValidatorTest < Minitest::Test
7
+
8
+ def test_config_manager_validate_devices
9
+ config = good_config
10
+ config[:devices] = nil
11
+ validator = ConfigValidator.new(config: config)
12
+ assert validator.is_fatal?
13
+ assert_equal [1], validator.instance_variable_get(:@codes)
14
+ end
15
+
16
+ def test_config_manager_validate_devices_default
17
+ config = good_config
18
+ config[:devices][:default] = nil
19
+ validator = ConfigValidator.new(config: config)
20
+ assert_equal [2], validator.instance_variable_get(:@codes)
21
+ end
22
+
23
+ def test_config_manager_validate_devices_default_is_symbol
24
+ config = good_config
25
+ config[:devices][:default] = "bad"
26
+ validator = ConfigValidator.new(config: config)
27
+ assert_equal [3], validator.instance_variable_get(:@codes)
28
+ end
29
+
30
+ def test_config_manager_validate_device_ip
31
+ config = good_config
32
+ config[:devices][:roku][:ip] = nil
33
+ validator = ConfigValidator.new(config: config)
34
+ assert_equal [7], validator.instance_variable_get(:@codes)
35
+ end
36
+
37
+ def test_config_manager_validate_device_ip_empty
38
+ config = good_config
39
+ config[:devices][:roku][:ip] = ""
40
+ validator = ConfigValidator.new(config: config)
41
+ assert_equal [7], validator.instance_variable_get(:@codes)
42
+ end
43
+
44
+ def test_config_manager_validate_device_ip_default_value
45
+ config = good_config
46
+ config[:devices][:roku][:ip] = "xxx.xxx.xxx.xxx"
47
+ validator = ConfigValidator.new(config: config)
48
+ assert_equal [7], validator.instance_variable_get(:@codes)
49
+ end
50
+
51
+ def test_config_manager_validate_device_user
52
+ config = good_config
53
+ config[:devices][:roku][:user] = nil
54
+ validator = ConfigValidator.new(config: config)
55
+ assert_equal [8], validator.instance_variable_get(:@codes)
56
+ end
57
+
58
+ def test_config_manager_validate_device_user_empty
59
+ config = good_config
60
+ config[:devices][:roku][:user] = ""
61
+ validator = ConfigValidator.new(config: config)
62
+ assert_equal [8], validator.instance_variable_get(:@codes)
63
+ end
64
+
65
+ def test_config_manager_validate_device_user_default_value
66
+ config = good_config
67
+ config[:devices][:roku][:user] = "<username>"
68
+ validator = ConfigValidator.new(config: config)
69
+ assert_equal [8], validator.instance_variable_get(:@codes)
70
+ end
71
+
72
+ def test_config_manager_validate_device_password
73
+ config = good_config
74
+ config[:devices][:roku][:password] = nil
75
+ validator = ConfigValidator.new(config: config)
76
+ assert_equal [9], validator.instance_variable_get(:@codes)
77
+ end
78
+
79
+ def test_config_manager_validate_device_password_empty
80
+ config = good_config
81
+ config[:devices][:roku][:password] = ""
82
+ validator = ConfigValidator.new(config: config)
83
+ assert_equal [9], validator.instance_variable_get(:@codes)
84
+ end
85
+
86
+ def test_config_manager_validate_device_password_default_value
87
+ config = good_config
88
+ config[:devices][:roku][:password] = "<password>"
89
+ validator = ConfigValidator.new(config: config)
90
+ assert_equal [9], validator.instance_variable_get(:@codes)
91
+ end
92
+
93
+ def test_config_manager_validate_projects
94
+ config = good_config
95
+ config[:projects] = nil
96
+ validator = ConfigValidator.new(config: config)
97
+ assert validator.is_valid?
98
+ end
99
+
100
+ def test_config_manager_validate_projects_default
101
+ config = good_config
102
+ config[:projects][:default] = nil
103
+ validator = ConfigValidator.new(config: config)
104
+ assert_equal [5], validator.instance_variable_get(:@codes)
105
+ end
106
+
107
+ def test_config_manager_validate_projects_default_default_value
108
+ config = good_config
109
+ config[:projects][:default] = "<project id>".to_sym
110
+ validator = ConfigValidator.new(config: config)
111
+ assert_equal [5], validator.instance_variable_get(:@codes)
112
+ end
113
+
114
+ def test_config_manager_validate_projects_default_is_symbol
115
+ config = good_config
116
+ config[:projects][:default] = "project_id"
117
+ validator = ConfigValidator.new(config: config)
118
+ assert_equal [6], validator.instance_variable_get(:@codes)
119
+ end
120
+
121
+ def test_config_manager_validate_project_app_name
122
+ config = good_config
123
+ config[:projects][:project1][:app_name] = nil
124
+ validator = ConfigValidator.new(config: config)
125
+ assert_equal [10], validator.instance_variable_get(:@codes)
126
+ end
127
+
128
+ def test_config_manager_validate_project_directory
129
+ config = good_config
130
+ config[:projects][:project1][:directory] = nil
131
+ validator = ConfigValidator.new(config: config)
132
+ assert_equal [11], validator.instance_variable_get(:@codes)
133
+ end
134
+
135
+ def test_config_manager_validate_project_folders
136
+ config = good_config
137
+ config[:projects][:project1][:folders] = nil
138
+ validator = ConfigValidator.new(config: config)
139
+ assert_equal [12], validator.instance_variable_get(:@codes)
140
+ end
141
+
142
+ def test_config_manager_validate_project_folders_is_array
143
+ config = good_config
144
+ config[:projects][:project1][:folders] = "Folders"
145
+ validator = ConfigValidator.new(config: config)
146
+ assert_equal [13], validator.instance_variable_get(:@codes)
147
+ end
148
+
149
+ def test_config_manager_validate_project_files
150
+ config = good_config
151
+ config[:projects][:project1][:files] = nil
152
+ validator = ConfigValidator.new(config: config)
153
+ assert_equal [14], validator.instance_variable_get(:@codes)
154
+ end
155
+
156
+ def test_config_manager_validate_project_filess_is_array
157
+ config = good_config
158
+ config[:projects][:project1][:files] = "Files"
159
+ validator = ConfigValidator.new(config: config)
160
+ assert_equal [15], validator.instance_variable_get(:@codes)
161
+ end
162
+
163
+ def test_config_manager_validate_project_key
164
+ config = good_config
165
+ config[:projects][:project2][:stages][:production][:key] = "b"
166
+ validator = ConfigValidator.new(config: config)
167
+ assert_equal [22], validator.instance_variable_get(:@codes)
168
+ end
169
+
170
+ def test_config_manager_validate_keys_pkg
171
+ config = good_config
172
+ config[:keys][:a][:keyed_pkg] = nil
173
+ validator = ConfigValidator.new(config: config)
174
+ assert_equal [19], validator.instance_variable_get(:@codes)
175
+ config = good_config
176
+ config[:keys][:a][:keyed_pkg] = "<path/to/signed/package>"
177
+ validator = ConfigValidator.new(config: config)
178
+ assert_equal [19], validator.instance_variable_get(:@codes)
179
+ end
180
+
181
+ def test_config_manager_validate_keys_password
182
+ config = good_config
183
+ config[:keys][:a][:password] = nil
184
+ validator = ConfigValidator.new(config: config)
185
+ assert_equal [20], validator.instance_variable_get(:@codes)
186
+ config = good_config
187
+ config[:keys][:a][:password] = "<password>"
188
+ validator = ConfigValidator.new(config: config)
189
+ assert_equal [20], validator.instance_variable_get(:@codes)
190
+ end
191
+
192
+ def test_config_manager_validate_input_mappings
193
+ config = good_config
194
+ config[:input_mapping]["a"] = ["home"]
195
+ validator = ConfigValidator.new(config: config)
196
+ assert_equal [21], validator.instance_variable_get(:@codes)
197
+ end
195
198
  end
196
199
  end
@@ -1,188 +1,69 @@
1
1
  # ********** Copyright Viacom, Inc. Apache 2.0 **********
2
2
 
3
3
  require_relative "test_helper.rb"
4
-
5
- class ControllerTest < Minitest::Test
6
- def test_controller_validate_options
7
- options = {
8
- sideload: true,
9
- package: true
10
- }
11
- assert_equal RokuBuilder::EXTRA_COMMANDS, RokuBuilder::Controller.send(:validate_options, {options: options})
12
- options = {}
13
- assert_equal RokuBuilder::NO_COMMANDS, RokuBuilder::Controller.send(:validate_options, {options: options})
14
- options = {
15
- sideload: true,
16
- working: true,
17
- current: true
18
- }
19
- assert_equal RokuBuilder::EXTRA_SOURCES, RokuBuilder::Controller.send(:validate_options, {options: options})
20
- options = {
21
- sideload: true,
22
- working: true
23
- }
24
- assert_equal RokuBuilder::VALID, RokuBuilder::Controller.send(:validate_options, {options: options})
25
- options = {
26
- package: true
27
- }
28
- assert_equal RokuBuilder::NO_SOURCE, RokuBuilder::Controller.send(:validate_options, {options: options})
29
- options = {
30
- package: true,
31
- current: true
32
- }
33
- assert_equal RokuBuilder::BAD_CURRENT, RokuBuilder::Controller.send(:validate_options, {options: options})
34
- options = {
35
- package: true,
36
- in: true
37
- }
38
- assert_equal RokuBuilder::BAD_IN_FILE, RokuBuilder::Controller.send(:validate_options, {options: options})
39
- options = {
40
- deeplink: "a:b c:d",
41
- deeplink_depricated: true
42
- }
43
- assert_equal RokuBuilder::DEPRICATED, RokuBuilder::Controller.send(:validate_options, {options: options})
44
- options = {
45
- sideload: true,
46
- current: true
47
- }
48
- assert_equal RokuBuilder::VALID, RokuBuilder::Controller.send(:validate_options, {options: options})
49
- options = {
50
- package: true,
51
- in: "",
52
- set_stage: true
53
- }
54
- assert_equal RokuBuilder::EXTRA_SOURCES, RokuBuilder::Controller.send(:validate_options, {options: options})
55
- end
56
- def test_controller_configure
57
- logger = Logger.new("/dev/null")
58
- target_config = File.join(File.dirname(__FILE__), "test_files", "controller_test", "configure_test.json")
59
- File.delete(target_config) if File.exist?(target_config)
60
- assert !File.exist?(target_config)
61
-
62
- options = {
63
- configure: true,
64
- config: target_config,
65
- }
66
-
67
- code = RokuBuilder::Controller.send(:configure, {options: options, logger: logger})
68
-
69
- assert File.exist?(target_config)
70
-
71
- options = {
72
- configure: true,
73
- config: target_config,
74
- edit_params: "ip:111.222.333.444"
75
- }
76
-
77
- code = RokuBuilder::Controller.send(:configure, {options: options, logger: logger})
78
-
79
- assert File.exist?(target_config)
80
- config = RokuBuilder::ConfigManager.get_config(config: target_config, logger: logger)
81
- assert_equal "111.222.333.444", config[:devices][config[:devices][:default]][:ip]
82
-
83
- options = {
84
- configure: true,
85
- config: target_config
86
- }
87
-
88
- code = RokuBuilder::Controller.send(:configure, {options: options, logger: logger})
89
-
90
- assert_equal RokuBuilder::CONFIG_OVERWRITE, code
91
-
92
- File.delete(target_config) if File.exist?(target_config)
93
- end
94
-
95
- def test_controller_check_devices
96
- logger = Logger.new("/dev/null")
97
- ping = Minitest::Mock.new
98
- options = {sideload: true, device_given: false}
99
- config = {}
100
- config[:devices] = {
101
- a: {ip: "2.2.2.2"},
102
- b: {ip: "3.3.3.3"}
103
- }
104
- configs = {
105
- device_config: {ip: "1.1.1.1"}
106
- }
107
-
108
- Net::Ping::External.stub(:new, ping) do
109
-
110
- ping.expect(:ping?, true, [configs[:device_config][:ip], 1, 0.2, 1])
111
- code, ret = RokuBuilder::Controller.send(:check_devices, {options: options, config: config, configs: configs, logger: logger})
112
- assert_equal RokuBuilder::GOOD_DEVICE, code
113
-
114
- ping.expect(:ping?, false, [configs[:device_config][:ip], 1, 0.2, 1])
115
- ping.expect(:ping?, false, [config[:devices][:a][:ip], 1, 0.2, 1])
116
- ping.expect(:ping?, false, [config[:devices][:b][:ip], 1, 0.2, 1])
117
- code, ret = RokuBuilder::Controller.send(:check_devices, {options: options, config: config, configs: configs, logger: logger})
118
- assert_equal RokuBuilder::NO_DEVICES, code
119
-
120
- ping.expect(:ping?, false, [configs[:device_config][:ip], 1, 0.2, 1])
121
- ping.expect(:ping?, true, [config[:devices][:a][:ip], 1, 0.2, 1])
122
- code, ret = RokuBuilder::Controller.send(:check_devices, {options: options, config: config, configs: configs, logger: logger})
123
- assert_equal RokuBuilder::CHANGED_DEVICE, code
124
- assert_equal config[:devices][:a][:ip], ret[:device_config][:ip]
125
-
126
- options[:device_given] = true
127
- ping.expect(:ping?, false, [configs[:device_config][:ip], 1, 0.2, 1])
128
- code, ret = RokuBuilder::Controller.send(:check_devices, {options: options, config: config, configs: configs, logger: logger})
129
- assert_equal RokuBuilder::BAD_DEVICE, code
130
-
131
- options = {build: true, device_given: false}
132
- code, ret = RokuBuilder::Controller.send(:check_devices, {options: options, config: config, configs: configs, logger: logger})
133
- assert_equal RokuBuilder::GOOD_DEVICE, code
134
- end
135
- end
136
-
137
- def test_controller_run_debug
138
- tests = [
139
- {options: {debug: true}, level: Logger::DEBUG},
140
- {options: {verbose: true}, level: Logger::INFO},
141
- {options: {}, level: Logger::WARN}
142
- ]
143
- tests.each do |test|
144
- logger = Minitest::Mock.new
145
- logger.expect(:level=, nil, [test[:level]])
146
- RokuBuilder::Controller.stub(:validate_options, nil) do
147
- RokuBuilder::ErrorHandler.stub(:handle_options_codes, nil) do
148
- RokuBuilder::Controller.stub(:configure, nil) do
149
- RokuBuilder::ErrorHandler.stub(:handle_configure_codes, nil) do
150
- RokuBuilder::ConfigManager.stub(:load_config, nil) do
151
- RokuBuilder::ErrorHandler.stub(:handle_load_codes, nil) do
152
- RokuBuilder::Controller.stub(:validate_configs, nil) do
153
- RokuBuilder::ErrorHandler.stub(:handle_configs_codes, nil) do
154
- RokuBuilder::Controller.stub(:check_devices, nil) do
155
- RokuBuilder::ErrorHandler.stub(:handle_device_codes, nil) do
156
- RokuBuilder::Controller.stub(:execute_commands, nil) do
157
- RokuBuilder::ErrorHandler.stub(:handle_command_codes, nil) do
158
- RokuBuilder::Controller.run(options: test[:options], logger: logger)
159
- end
160
- end
161
- end
162
- end
163
- end
164
- end
165
- end
166
- end
167
- end
168
- end
169
- end
4
+ module RokuBuilder
5
+ class ControllerTest < Minitest::Test
6
+ def test_controller_check_devices
7
+ ping = Minitest::Mock.new
8
+ options = build_options({sideload: true, device_given: false, working: true})
9
+ raw = {
10
+ devices: {
11
+ a: {ip: "2.2.2.2"},
12
+ b: {ip: "3.3.3.3"}
13
+ }
14
+ }
15
+ parsed = {
16
+ device_config: {ip: "1.1.1.1"}
17
+ }
18
+ config = Config.new(options: options)
19
+ config.instance_variable_set(:@config, raw)
20
+ config.instance_variable_set(:@parsed, parsed)
21
+
22
+ Net::Ping::External.stub(:new, ping) do
23
+
24
+ ping.expect(:ping?, true, [parsed[:device_config][:ip], 1, 0.2, 1])
25
+ code, ret = Controller.send(:check_devices, {options: options, config: config})
26
+ assert_equal GOOD_DEVICE, code
27
+
28
+ ping.expect(:ping?, false, [parsed[:device_config][:ip], 1, 0.2, 1])
29
+ ping.expect(:ping?, false, [raw[:devices][:a][:ip], 1, 0.2, 1])
30
+ ping.expect(:ping?, false, [raw[:devices][:b][:ip], 1, 0.2, 1])
31
+ code = Controller.send(:check_devices, {options: options, config: config})
32
+ assert_equal NO_DEVICES, code
33
+
34
+ ping.expect(:ping?, false, [parsed[:device_config][:ip], 1, 0.2, 1])
35
+ ping.expect(:ping?, true, [raw[:devices][:a][:ip], 1, 0.2, 1])
36
+ code = Controller.send(:check_devices, {options: options, config: config})
37
+ assert_equal CHANGED_DEVICE, code
38
+ assert_equal raw[:devices][:a][:ip], config.parsed[:device_config][:ip]
39
+
40
+ options[:device_given] = true
41
+ ping.expect(:ping?, false, [parsed[:device_config][:ip], 1, 0.2, 1])
42
+ code = Controller.send(:check_devices, {options: options, config: config})
43
+ assert_equal BAD_DEVICE, code
44
+
45
+ options = build_options({build: true, device_given: false, working: true})
46
+ code = Controller.send(:check_devices, {options: options, config: config})
47
+ assert_equal GOOD_DEVICE, code
170
48
  end
171
- logger.verify
172
49
  end
173
- end
174
50
 
175
- def test_controller_validate_configs
176
- configs = {out: {folder: "/out/folder"}}
177
- exist = lambda {|args| assert_equal "/out/folder", args; true}
178
- Dir.stub(:exist?, exist) do
179
- assert_equal RokuBuilder::VALID, RokuBuilder::Controller.send(:validate_configs, configs: configs)
180
- end
51
+ def test_controller_run_debug
52
+ tests = [
53
+ {options: {debug: true}, method: :set_debug},
54
+ {options: {verbose: true}, method: :set_info},
55
+ {options: {}, method: :set_warn}
56
+ ]
57
+ tests.each do |test|
58
+ logger = Minitest::Mock.new
59
+ logger.expect(:call, nil)
60
+
61
+ Logger.stub(test[:method], logger) do
62
+ Controller.initialize_logger(options: test[:options])
63
+ end
181
64
 
182
- configs = {out: {folder: "/out/folder"}}
183
- exist = lambda {|args| assert_equal "/out/folder", args; false}
184
- Dir.stub(:exist?, exist) do
185
- assert_equal RokuBuilder::MISSING_OUT_FOLDER, RokuBuilder::Controller.send(:validate_configs, configs: configs)
65
+ logger.verify
66
+ end
186
67
  end
187
68
  end
188
69
  end