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
@@ -1,90 +1,88 @@
1
1
  # ********** Copyright Viacom, Inc. Apache 2.0 **********
2
2
 
3
3
  require_relative "test_helper.rb"
4
-
5
- class RokuBuilder::ErrorHandler
6
- class << self
7
- def abort
8
- #do nothing
4
+ module RokuBuilder
5
+ class ErrorHandler
6
+ class << self
7
+ def abort
8
+ #do nothing
9
+ end
9
10
  end
10
11
  end
11
- end
12
12
 
13
- class ErrorHandlerTest < Minitest::Test
14
- def test_handle_error_codes
15
- error_groups = {
16
- fatal: {
13
+ class ErrorHandlerTest < Minitest::Test
14
+ def test_handle_error_codes
15
+ error_groups = {
16
+ fatal: {
17
17
  options_code: [
18
- RokuBuilder::EXTRA_COMMANDS,
19
- RokuBuilder::NO_COMMANDS,
20
- RokuBuilder::EXTRA_SOURCES,
21
- RokuBuilder::NO_SOURCE,
22
- RokuBuilder::BAD_CURRENT,
23
- RokuBuilder::BAD_IN_FILE
24
- ],
18
+ EXTRA_COMMANDS,
19
+ NO_COMMANDS,
20
+ EXTRA_SOURCES,
21
+ NO_SOURCE,
22
+ BAD_CURRENT,
23
+ BAD_IN_FILE
24
+ ],
25
25
  configure_code:[
26
- RokuBuilder::CONFIG_OVERWRITE,
27
- ],
28
- device_code: [
29
- RokuBuilder::BAD_DEVICE,
30
- RokuBuilder::NO_DEVICES,
31
- ],
32
- load_code: [
33
- RokuBuilder::MISSING_CONFIG,
34
- RokuBuilder::INVALID_CONFIG,
35
- RokuBuilder::MISSING_MANIFEST,
36
- RokuBuilder::UNKNOWN_DEVICE,
37
- RokuBuilder::UNKNOWN_PROJECT,
38
- RokuBuilder::UNKNOWN_STAGE,
39
- RokuBuilder::BAD_PROJECT_DIR,
40
- RokuBuilder::BAD_KEY_FILE
41
- ],
26
+ CONFIG_OVERWRITE,
27
+ ],
28
+ device_code: [
29
+ BAD_DEVICE,
30
+ NO_DEVICES,
31
+ ],
32
+ load_code: [
33
+ MISSING_CONFIG,
34
+ INVALID_CONFIG,
35
+ MISSING_MANIFEST,
36
+ UNKNOWN_DEVICE,
37
+ UNKNOWN_PROJECT,
38
+ UNKNOWN_STAGE,
39
+ BAD_PROJECT_DIR,
40
+ BAD_KEY_FILE
41
+ ],
42
42
  command_code: [
43
- RokuBuilder::FAILED_SIDELOAD,
44
- RokuBuilder::FAILED_SIGNING,
45
- RokuBuilder::FAILED_DEEPLINKING,
46
- RokuBuilder::FAILED_NAVIGATING,
47
- RokuBuilder::FAILED_SCREENCAPTURE,
48
- RokuBuilder::MISSING_MANIFEST,
49
- RokuBuilder::BAD_PRINT_ATTRIBUTE
50
- ],
43
+ FAILED_SIDELOAD,
44
+ FAILED_SIGNING,
45
+ FAILED_DEEPLINKING,
46
+ FAILED_NAVIGATING,
47
+ FAILED_SCREENCAPTURE,
48
+ MISSING_MANIFEST,
49
+ BAD_PRINT_ATTRIBUTE
50
+ ],
51
51
  configs_code: [
52
- RokuBuilder::MISSING_OUT_FOLDER
53
- ]
52
+ MISSING_OUT_FOLDER
53
+ ]
54
54
  },
55
- info: {
55
+ info: {
56
56
  device_code: [
57
- RokuBuilder::CHANGED_DEVICE
58
- ],
57
+ CHANGED_DEVICE
58
+ ],
59
59
  configure_code:[
60
- RokuBuilder::SUCCESS
61
- ]
60
+ SUCCESS
61
+ ]
62
62
  },
63
- warn: {
63
+ warn: {
64
64
  load_code: [
65
- RokuBuilder::DEPRICATED_CONFIG
66
- ],
67
- options_code: [
68
- RokuBuilder::DEPRICATED
69
- ]
65
+ DEPRICATED_CONFIG
66
+ ]
70
67
  },
71
- debug: {
68
+ debug: {
72
69
  configs_code: [
73
- RokuBuilder::VALID
74
- ]
70
+ VALID
71
+ ]
72
+ }
75
73
  }
76
- }
77
- error_groups.each_pair do |type,errors|
78
- errors.each_pair do |key,value|
79
- value.each do |code|
80
- logger = Minitest::Mock.new
81
- options = {logger: logger}
82
- options[:options] = {deeplink_depricated: true} if key == :load_code or key == :options_code
83
- options[key] = code
84
- logger.expect(type, nil) {|string| string.class == String}
85
- method = "handle_#{key}s"
86
- RokuBuilder::ErrorHandler.send(method.to_sym, **options)
87
- logger.verify
74
+ error_groups.each_pair do |type,errors|
75
+ errors.each_pair do |key,value|
76
+ value.each do |code|
77
+ logger = Minitest::Mock.new
78
+ options = {logger: logger}
79
+ options[:options] = {deeplink_depricated: true} if key == :load_code or key == :options_code
80
+ options[key] = code
81
+ logger.expect(type, nil) {|string| string.class == String}
82
+ method = "handle_#{key}s"
83
+ ErrorHandler.send(method.to_sym, **options)
84
+ logger.verify
85
+ end
88
86
  end
89
87
  end
90
88
  end
@@ -0,0 +1,11 @@
1
+ {
2
+ "parent_config": "./parent.json",
3
+ "devices": {
4
+ "default": "roku",
5
+ "roku": {
6
+ "ip": "111.222.333.444",
7
+ "user": "user",
8
+ "password": "pass"
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "devices": {
3
+ "default": "roku",
4
+ "roku": {
5
+ "ip": "111.222.333.444",
6
+ "user": "user",
7
+ "password": "pass"
8
+ }
9
+ },
10
+ "projects": {
11
+ "default": "p1",
12
+ "p1": {
13
+ "directory": "/tmp",
14
+ "folders": ["resources","source"],
15
+ "files": ["manifest"],
16
+ "app_name": "app",
17
+ "stage_method": "git",
18
+ "stages":{
19
+ "production": {
20
+ "branch": "master",
21
+ "key": {
22
+ "keyed_pkg": "/tmp/package.pkg",
23
+ "password": "password"
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "projects": {
3
+ "default": "p1",
4
+ "p1": {
5
+ "directory": "/tmp",
6
+ "folders": ["resources","source"],
7
+ "files": ["manifest"],
8
+ "app_name": "app",
9
+ "stage_method": "git",
10
+ "stages":{
11
+ "production": {
12
+ "branch": "master",
13
+ "key": {
14
+ "keyed_pkg": "/tmp/package.pkg",
15
+ "password": "password"
16
+ }
17
+ }
18
+ }
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "devices": {
3
+ "default": "roku",
4
+ "roku": {
5
+ "ip": "111.222.333.444",
6
+ "user": "user",
7
+ "password": "pass"
8
+ }
9
+ },
10
+ "projects": {
11
+ "default": "p1",
12
+ "p1": {
13
+ "parent": "parent2"
14
+ },
15
+ "parent1": {
16
+ "directory": "/tmp",
17
+ "folders": ["resources","source"],
18
+ "files": ["manifest"],
19
+ "app_name": "app",
20
+ "stage_method": "git",
21
+ "stages":{
22
+ "production": {
23
+ "branch": "master",
24
+ "key": {
25
+ "keyed_pkg": "/tmp/package.pkg",
26
+ "password": "password"
27
+ }
28
+ }
29
+ }
30
+ },
31
+ "parent2": {
32
+ "parent": "parent1"
33
+ }
34
+ }
35
+ }
@@ -1,6 +1,6 @@
1
1
  title=Test
2
2
  major_version=1
3
3
  minor_version=0
4
- build_version=010101
4
+ build_version=1
5
5
  mm_icon_focus_hd=pkg:/images/focus.png
6
6
  mm_icon_focus_sd=pkg:/images/focus.png
@@ -13,57 +13,67 @@ require "byebug"
13
13
  require "roku_builder"
14
14
  require "minitest/autorun"
15
15
 
16
+ RokuBuilder::Logger.set_testing
17
+
18
+ def test_files_path(klass)
19
+ klass = klass.to_s.split("::")[1].underscore
20
+ File.join(File.dirname(__FILE__), "test_files", klass)
21
+ end
22
+
23
+ def build_options(options)
24
+ RokuBuilder::Options.new(options: options)
25
+ end
16
26
 
17
27
  def good_config
18
28
  {
19
29
  devices: {
20
- default: :roku,
21
- roku: {
22
- ip: "192.168.0.100",
23
- user: "user",
24
- password: "password"
25
- }
26
- },
30
+ default: :roku,
31
+ roku: {
32
+ ip: "192.168.0.100",
33
+ user: "user",
34
+ password: "password"
35
+ }
36
+ },
27
37
  projects: {
28
- default: :project1,
29
- project1: {
30
- directory: "/tmp",
31
- folders: ["resources","source"],
32
- files: ["manifest"],
33
- app_name: "<app name>",
34
- stage_method: :git,
35
- stages:{
36
- production: {
37
- branch: "production",
38
- key: {
39
- keyed_pkg: "/tmp",
40
- password: "<password for pkg>"
41
- }
42
- }
43
- }
44
- },
45
- project2: {
46
- directory: "/tmp",
47
- folders: ["resources","source"],
48
- files: ["manifest"],
49
- app_name: "<app name>",
50
- stage_method: :git,
51
- stages:{
52
- production: {
53
- branch: "production",
54
- key: "a"
55
- }
56
- }
57
- }
58
- },
38
+ default: :project1,
39
+ project1: {
40
+ directory: "/tmp",
41
+ folders: ["resources","source"],
42
+ files: ["manifest"],
43
+ app_name: "<app name>",
44
+ stage_method: :git,
45
+ stages:{
46
+ production: {
47
+ branch: "production",
48
+ key: {
49
+ keyed_pkg: "/tmp",
50
+ password: "<password for pkg>"
51
+ }
52
+ }
53
+ }
54
+ },
55
+ project2: {
56
+ directory: "/tmp",
57
+ folders: ["resources","source"],
58
+ files: ["manifest"],
59
+ app_name: "<app name>",
60
+ stage_method: :git,
61
+ stages:{
62
+ production: {
63
+ branch: "production",
64
+ key: "a"
65
+ }
66
+ }
67
+ }
68
+ },
59
69
  keys: {
60
- a: {
61
- keyed_pkg: "/tmp",
62
- password: "password"
63
- }
64
- },
70
+ a: {
71
+ keyed_pkg: "/tmp",
72
+ password: "password"
73
+ }
74
+ },
65
75
  input_mapping: {
66
- "a": ["home", "Home"]
67
- }
76
+ "a": ["home", "Home"]
77
+ }
68
78
  }
69
79
  end
@@ -1,233 +1,298 @@
1
1
  # ********** Copyright Viacom, Inc. Apache 2.0 **********
2
2
 
3
3
  require_relative "test_helper.rb"
4
+ module RokuBuilder
5
+ class InspectorTest < Minitest::Test
6
+ def test_inspector_inspect
7
+ connection = Minitest::Mock.new
8
+ faraday = Minitest::Mock.new
9
+ io = Minitest::Mock.new
10
+ response = Minitest::Mock.new
4
11
 
5
- class InspectorTest < Minitest::Test
6
- def test_inspector_inspect
7
- connection = Minitest::Mock.new
8
- faraday = Minitest::Mock.new
9
- io = Minitest::Mock.new
10
- response = Minitest::Mock.new
11
-
12
- device_config = {
13
- ip: "111.222.333",
14
- user: "user",
15
- password: "password",
16
- logger: Logger.new("/dev/null")
17
- }
18
- path = "/plugin_inspect"
19
- password = "password"
20
- payload ={
21
- mysubmit: "Inspect",
22
- password: password,
23
- archive: io
24
- }
25
- body = "r1.insertCell(0).innerHTML = 'App Name: ';"+
26
- " r1.insertCell(1).innerHTML = '<div class=\"roku-color-c3\">app_name</div>';"+
27
- ""+
28
- " var r2 = table.insertRow(1);"+
29
- " r2.insertCell(0).innerHTML = 'Dev ID: ';"+
30
- " r2.insertCell(1).innerHTML = '<div class=\"roku-color-c3\"><font face=\"Courier\">dev_id</font></div>';"+
31
- " "+
32
- " var dd = new Date(628232400);"+
33
- " var ddStr = \"\";"+
34
- " ddStr += (dd.getMonth()+1);"+
35
- " ddStr += \"/\";"+
36
- " ddStr += dd.getDate();"+
37
- " ddStr += \"/\";"+
38
- " ddStr += dd.getFullYear();"+
39
- " ddStr += \" \";"+
40
- " ddStr += dd.getHours();"+
41
- " ddStr += \":\";"+
42
- " ddStr += dd.getMinutes();"+
43
- " ddStr += \":\";"+
44
- " ddStr += dd.getSeconds(); "+
45
- " "+
46
- " var r3 = table.insertRow(2);"+
47
- " r3.insertCell(0).innerHTML = 'Creation Date: ';"+
48
- " r3.insertCell(1).innerHTML = '<div class=\"roku-color-c3\">'+ddStr+'</div>';"+
49
- " "+
50
- " var r4 = table.insertRow(3);"+
51
- " r4.insertCell(0).innerHTML = 'dev.zip: ';"+
52
- " r4.insertCell(1).innerHTML = '<div class=\"roku-color-c3\"><font face=\"Courier\">dev_zip</font></div>';"
53
-
54
- connection.expect(:post, response) do |arg1, arg2|
55
- assert_equal path, arg1
56
- assert_equal payload[:mysubmit], arg2[:mysubmit]
57
- assert_equal payload[:password], arg2[:passwd]
58
- assert payload[:archive] === arg2[:archive]
59
- end
60
- faraday.expect(:headers, {})
61
- faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
62
- faraday.expect(:request, nil, [:multipart])
63
- faraday.expect(:request, nil, [:url_encoded])
64
- faraday.expect(:adapter, nil, [Faraday.default_adapter])
65
- response.expect(:body, body)
66
- response.expect(:body, body)
67
- response.expect(:body, body)
68
- response.expect(:body, body)
69
- response.expect(:body, body)
70
-
71
-
72
- package_info = {}
73
- inspector = RokuBuilder::Inspector.new(**device_config)
74
- Faraday.stub(:new, connection, faraday) do
75
- Faraday::UploadIO.stub(:new, io) do
76
- package_info = inspector.inspect(pkg: "pkg/path", password: password)
12
+ device_config = {
13
+ ip: "111.222.333",
14
+ user: "user",
15
+ password: "password"
16
+ }
17
+ path = "/plugin_inspect"
18
+ password = "password"
19
+ payload ={
20
+ mysubmit: "Inspect",
21
+ password: password,
22
+ archive: io
23
+ }
24
+ body = "r1.insertCell(0).innerHTML = 'App Name: ';"+
25
+ " r1.insertCell(1).innerHTML = '<div class=\"roku-color-c3\">app_name</div>';"+
26
+ ""+
27
+ " var r2 = table.insertRow(1);"+
28
+ " r2.insertCell(0).innerHTML = 'Dev ID: ';"+
29
+ " r2.insertCell(1).innerHTML = '<div class=\"roku-color-c3\"><font face=\"Courier\">dev_id</font></div>';"+
30
+ " "+
31
+ " var dd = new Date(628232400);"+
32
+ " var ddStr = \"\";"+
33
+ " ddStr += (dd.getMonth()+1);"+
34
+ " ddStr += \"/\";"+
35
+ " ddStr += dd.getDate();"+
36
+ " ddStr += \"/\";"+
37
+ " ddStr += dd.getFullYear();"+
38
+ " ddStr += \" \";"+
39
+ " ddStr += dd.getHours();"+
40
+ " ddStr += \":\";"+
41
+ " ddStr += dd.getMinutes();"+
42
+ " ddStr += \":\";"+
43
+ " ddStr += dd.getSeconds(); "+
44
+ " "+
45
+ " var r3 = table.insertRow(2);"+
46
+ " r3.insertCell(0).innerHTML = 'Creation Date: ';"+
47
+ " r3.insertCell(1).innerHTML = '<div class=\"roku-color-c3\">'+ddStr+'</div>';"+
48
+ " "+
49
+ " var r4 = table.insertRow(3);"+
50
+ " r4.insertCell(0).innerHTML = 'dev.zip: ';"+
51
+ " r4.insertCell(1).innerHTML = '<div class=\"roku-color-c3\"><font face=\"Courier\">dev_zip</font></div>';"
52
+
53
+ connection.expect(:post, response) do |arg1, arg2|
54
+ assert_equal path, arg1
55
+ assert_equal payload[:mysubmit], arg2[:mysubmit]
56
+ assert_equal payload[:password], arg2[:passwd]
57
+ assert payload[:archive] === arg2[:archive]
77
58
  end
78
- end
59
+ faraday.expect(:headers, {})
60
+ faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
61
+ faraday.expect(:request, nil, [:multipart])
62
+ faraday.expect(:request, nil, [:url_encoded])
63
+ faraday.expect(:adapter, nil, [Faraday.default_adapter])
64
+ response.expect(:body, body)
65
+ response.expect(:body, body)
66
+ response.expect(:body, body)
67
+ response.expect(:body, body)
68
+ response.expect(:body, body)
79
69
 
80
- assert_equal "app_name", package_info[:app_name]
81
- assert_equal "dev_id", package_info[:dev_id]
82
- assert_equal Time.at(628232400).to_s, package_info[:creation_date]
83
- assert_equal "dev_zip", package_info[:dev_zip]
84
70
 
85
- connection.verify
86
- faraday.verify
87
- io.verify
88
- response.verify
89
- end
90
- def test_inspector_inspect_old_interface
91
- connection = Minitest::Mock.new
92
- faraday = Minitest::Mock.new
93
- io = Minitest::Mock.new
94
- response = Minitest::Mock.new
95
-
96
- device_config = {
97
- ip: "111.222.333",
98
- user: "user",
99
- password: "password",
100
- logger: Logger.new("/dev/null")
101
- }
102
- path = "/plugin_inspect"
103
- password = "password"
104
- payload ={
105
- mysubmit: "Inspect",
106
- password: password,
107
- archive: io
108
- }
109
- body = " <table cellpadding=\"2\">"+
110
- " <tbody><tr><td> App Name: </td><td> <font color=\"blue\">app_name</font> </td></tr>"+
111
- " <tr><td> Dev ID: </td><td> <font face=\"Courier\" color=\"blue\">dev_id</font> </td></tr>"+
112
- " <tr><td> Creation Date: </td><td> <font color=\"blue\">"+
113
- " <script type=\"text/javascript\">"+
114
- " var d = new Date(628232400)"+
115
- " document.write(d.getMonth()+1)"+
116
- " document.write(\"/\")"+
117
- " document.write(d.getDate())"+
118
- " document.write(\"/\");"+
119
- " document.write(d.getFullYear())"+
120
- " document.write(\" \")"+
121
- " document.write(d.getHours())"+
122
- " document.write(\":\")"+
123
- " document.write(d.getMinutes())"+
124
- " document.write(\":\")"+
125
- " document.write(d.getSeconds())"+
126
- " </script>1/17/1970 16:42:28"+
127
- " </font> </td></tr>"+
128
- " <tr><td> dev.zip: </td><td> <font face=\"Courier\" color=\"blue\">dev_zip</font> </td></tr>"+
129
- " </tbody></table>"
130
-
131
- connection.expect(:post, response) do |arg1, arg2|
132
- assert_equal path, arg1
133
- assert_equal payload[:mysubmit], arg2[:mysubmit]
134
- assert_equal payload[:password], arg2[:passwd]
135
- assert payload[:archive] === arg2[:archive]
136
- end
137
- faraday.expect(:headers, {})
138
- faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
139
- faraday.expect(:request, nil, [:multipart])
140
- faraday.expect(:request, nil, [:url_encoded])
141
- faraday.expect(:adapter, nil, [Faraday.default_adapter])
142
- response.expect(:body, body)
143
- response.expect(:body, body)
144
- response.expect(:body, body)
145
- response.expect(:body, body)
146
-
147
-
148
- package_info = {}
149
- inspector = RokuBuilder::Inspector.new(**device_config)
150
- Faraday.stub(:new, connection, faraday) do
151
- Faraday::UploadIO.stub(:new, io) do
152
- package_info = inspector.inspect(pkg: "pkg/path", password: password)
71
+ package_info = {}
72
+ inspector = Inspector.new(**device_config)
73
+ Faraday.stub(:new, connection, faraday) do
74
+ Faraday::UploadIO.stub(:new, io) do
75
+ package_info = inspector.inspect(pkg: "pkg/path", password: password)
76
+ end
153
77
  end
78
+
79
+ assert_equal "app_name", package_info[:app_name]
80
+ assert_equal "dev_id", package_info[:dev_id]
81
+ assert_equal Time.at(628232400).to_s, package_info[:creation_date]
82
+ assert_equal "dev_zip", package_info[:dev_zip]
83
+
84
+ connection.verify
85
+ faraday.verify
86
+ io.verify
87
+ response.verify
154
88
  end
89
+ def test_inspector_inspect_old_interface
90
+ connection = Minitest::Mock.new
91
+ faraday = Minitest::Mock.new
92
+ io = Minitest::Mock.new
93
+ response = Minitest::Mock.new
155
94
 
156
- assert_equal "app_name", package_info[:app_name]
157
- assert_equal "dev_id", package_info[:dev_id]
158
- assert_equal Time.at(628232400).to_s, package_info[:creation_date]
159
- assert_equal "dev_zip", package_info[:dev_zip]
95
+ device_config = {
96
+ ip: "111.222.333",
97
+ user: "user",
98
+ password: "password"
99
+ }
100
+ path = "/plugin_inspect"
101
+ password = "password"
102
+ payload ={
103
+ mysubmit: "Inspect",
104
+ password: password,
105
+ archive: io
106
+ }
107
+ body = " <table cellpadding=\"2\">"+
108
+ " <tbody><tr><td> App Name: </td><td> <font color=\"blue\">app_name</font> </td></tr>"+
109
+ " <tr><td> Dev ID: </td><td> <font face=\"Courier\" color=\"blue\">dev_id</font> </td></tr>"+
110
+ " <tr><td> Creation Date: </td><td> <font color=\"blue\">"+
111
+ " <script type=\"text/javascript\">"+
112
+ " var d = new Date(628232400)"+
113
+ " document.write(d.getMonth()+1)"+
114
+ " document.write(\"/\")"+
115
+ " document.write(d.getDate())"+
116
+ " document.write(\"/\");"+
117
+ " document.write(d.getFullYear())"+
118
+ " document.write(\" \")"+
119
+ " document.write(d.getHours())"+
120
+ " document.write(\":\")"+
121
+ " document.write(d.getMinutes())"+
122
+ " document.write(\":\")"+
123
+ " document.write(d.getSeconds())"+
124
+ " </script>1/17/1970 16:42:28"+
125
+ " </font> </td></tr>"+
126
+ " <tr><td> dev.zip: </td><td> <font face=\"Courier\" color=\"blue\">dev_zip</font> </td></tr>"+
127
+ " </tbody></table>"
160
128
 
161
- connection.verify
162
- faraday.verify
163
- io.verify
164
- response.verify
165
- end
129
+ connection.expect(:post, response) do |arg1, arg2|
130
+ assert_equal path, arg1
131
+ assert_equal payload[:mysubmit], arg2[:mysubmit]
132
+ assert_equal payload[:password], arg2[:passwd]
133
+ assert payload[:archive] === arg2[:archive]
134
+ end
135
+ faraday.expect(:headers, {})
136
+ faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
137
+ faraday.expect(:request, nil, [:multipart])
138
+ faraday.expect(:request, nil, [:url_encoded])
139
+ faraday.expect(:adapter, nil, [Faraday.default_adapter])
140
+ response.expect(:body, body)
141
+ response.expect(:body, body)
142
+ response.expect(:body, body)
143
+ response.expect(:body, body)
144
+
145
+
146
+ package_info = {}
147
+ inspector = Inspector.new(**device_config)
148
+ Faraday.stub(:new, connection, faraday) do
149
+ Faraday::UploadIO.stub(:new, io) do
150
+ package_info = inspector.inspect(pkg: "pkg/path", password: password)
151
+ end
152
+ end
153
+
154
+ assert_equal "app_name", package_info[:app_name]
155
+ assert_equal "dev_id", package_info[:dev_id]
156
+ assert_equal Time.at(628232400).to_s, package_info[:creation_date]
157
+ assert_equal "dev_zip", package_info[:dev_zip]
166
158
 
167
- def test_screencapture
168
- connection = Minitest::Mock.new
169
- faraday = Minitest::Mock.new
170
- response = Minitest::Mock.new
171
- io = Minitest::Mock.new
172
-
173
- device_config = {
174
- ip: "111.222.333",
175
- user: "user",
176
- password: "password",
177
- logger: Logger.new("/dev/null")
178
- }
179
- screencapture_config = {
180
- out_folder: "out/folder/path",
181
- out_file: nil
182
- }
183
- path = "/plugin_inspect"
184
- password = "password"
185
- payload ={
186
- mysubmit: "Screenshot",
187
- password: password,
188
- archive: io
189
- }
190
- body = "<hr /><img src=\"pkgs/dev.jpg?time=1455629573\">"
191
- connection.expect(:post, response) do |arg1, arg2|
192
- assert_equal path, arg1
193
- assert_equal payload[:mysubmit], arg2[:mysubmit]
194
- assert_equal payload[:password], arg2[:passwd]
195
- assert payload[:archive] === arg2[:archive]
159
+ connection.verify
160
+ faraday.verify
161
+ io.verify
162
+ response.verify
196
163
  end
197
- faraday.expect(:headers, {})
198
- faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
199
- faraday.expect(:request, nil, [:multipart])
200
- faraday.expect(:request, nil, [:url_encoded])
201
- faraday.expect(:adapter, nil, [Faraday.default_adapter])
202
- response.expect(:body, body)
203
- response.expect(:body, body)
204
-
205
-
206
- path2 = "pkgs/dev.jpg?time=1455629573"
207
- body2 = "<screencapture>"
208
- connection.expect(:get, response, [path2])
209
- faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
210
- faraday.expect(:adapter, nil, [Faraday.default_adapter])
211
- response.expect(:body, body2)
212
- response.expect(:success?, true)
213
- io.expect("write", nil, [body2])
214
-
215
-
216
- success = false
217
- inspector = RokuBuilder::Inspector.new(**device_config)
218
- Faraday.stub(:new, connection, faraday) do
219
- Faraday::UploadIO.stub(:new, io) do
220
- File.stub(:open, nil, io) do
221
- success = inspector.screencapture(**screencapture_config)
164
+
165
+ def test_screencapture
166
+ connection = Minitest::Mock.new
167
+ faraday = Minitest::Mock.new
168
+ response = Minitest::Mock.new
169
+ io = Minitest::Mock.new
170
+
171
+ device_config = {
172
+ ip: "111.222.333",
173
+ user: "user",
174
+ password: "password"
175
+ }
176
+ screencapture_config = {
177
+ out_folder: "out/folder/path",
178
+ out_file: nil
179
+ }
180
+ path = "/plugin_inspect"
181
+ password = "password"
182
+ payload ={
183
+ mysubmit: "Screenshot",
184
+ password: password,
185
+ archive: io
186
+ }
187
+ body = "<hr /><img src=\"pkgs/dev.jpg?time=1455629573\">"
188
+ connection.expect(:post, response) do |arg1, arg2|
189
+ assert_equal path, arg1
190
+ assert_equal payload[:mysubmit], arg2[:mysubmit]
191
+ assert_equal payload[:password], arg2[:passwd]
192
+ assert payload[:archive] === arg2[:archive]
193
+ end
194
+ faraday.expect(:headers, {})
195
+ faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
196
+ faraday.expect(:request, nil, [:multipart])
197
+ faraday.expect(:request, nil, [:url_encoded])
198
+ faraday.expect(:adapter, nil, [Faraday.default_adapter])
199
+ response.expect(:body, body)
200
+ response.expect(:body, body)
201
+ response.expect(:body, body)
202
+
203
+
204
+ path2 = "pkgs/dev.jpg?time=1455629573"
205
+ body2 = "<screencapture>"
206
+ connection.expect(:get, response, [path2])
207
+ faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
208
+ faraday.expect(:adapter, nil, [Faraday.default_adapter])
209
+ response.expect(:body, body2)
210
+ response.expect(:success?, true)
211
+ io.expect("write", nil, [body2])
212
+
213
+
214
+ success = false
215
+ inspector = Inspector.new(**device_config)
216
+ Faraday.stub(:new, connection, faraday) do
217
+ Faraday::UploadIO.stub(:new, io) do
218
+ File.stub(:open, nil, io) do
219
+ success = inspector.screencapture(**screencapture_config)
220
+ end
222
221
  end
223
222
  end
223
+
224
+ assert success
225
+
226
+ connection.verify
227
+ faraday.verify
228
+ io.verify
229
+ response.verify
224
230
  end
231
+ def test_screencapture_png
232
+ connection = Minitest::Mock.new
233
+ faraday = Minitest::Mock.new
234
+ response = Minitest::Mock.new
235
+ io = Minitest::Mock.new
236
+
237
+ device_config = {
238
+ ip: "111.222.333",
239
+ user: "user",
240
+ password: "password"
241
+ }
242
+ screencapture_config = {
243
+ out_folder: "out/folder/path",
244
+ out_file: nil
245
+ }
246
+ path = "/plugin_inspect"
247
+ password = "password"
248
+ payload ={
249
+ mysubmit: "Screenshot",
250
+ password: password,
251
+ archive: io
252
+ }
253
+ body = "<hr /><img src=\"pkgs/dev.png?time=1455629573\">"
254
+ connection.expect(:post, response) do |arg1, arg2|
255
+ assert_equal path, arg1
256
+ assert_equal payload[:mysubmit], arg2[:mysubmit]
257
+ assert_equal payload[:password], arg2[:passwd]
258
+ assert payload[:archive] === arg2[:archive]
259
+ end
260
+ faraday.expect(:headers, {})
261
+ faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
262
+ faraday.expect(:request, nil, [:multipart])
263
+ faraday.expect(:request, nil, [:url_encoded])
264
+ faraday.expect(:adapter, nil, [Faraday.default_adapter])
265
+ response.expect(:body, body)
266
+ response.expect(:body, body)
267
+ response.expect(:body, body)
268
+
269
+
270
+ path2 = "pkgs/dev.png?time=1455629573"
271
+ body2 = "<screencapture>"
272
+ connection.expect(:get, response, [path2])
273
+ faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
274
+ faraday.expect(:adapter, nil, [Faraday.default_adapter])
275
+ response.expect(:body, body2)
276
+ response.expect(:success?, true)
277
+ io.expect("write", nil, [body2])
278
+
225
279
 
226
- assert success
280
+ success = false
281
+ inspector = Inspector.new(**device_config)
282
+ Faraday.stub(:new, connection, faraday) do
283
+ Faraday::UploadIO.stub(:new, io) do
284
+ File.stub(:open, nil, io) do
285
+ success = inspector.screencapture(**screencapture_config)
286
+ end
287
+ end
288
+ end
227
289
 
228
- connection.verify
229
- faraday.verify
230
- io.verify
231
- response.verify
290
+ assert success
291
+
292
+ connection.verify
293
+ faraday.verify
294
+ io.verify
295
+ response.verify
296
+ end
232
297
  end
233
298
  end