MuranoCLI 3.2.0.beta.1 → 3.2.0.beta.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -1
  3. data/.trustme.plugin +137 -0
  4. data/.trustme.sh +217 -117
  5. data/.trustme.vim +9 -3
  6. data/Gemfile +9 -3
  7. data/MuranoCLI.gemspec +8 -5
  8. data/Rakefile +1 -0
  9. data/dockers/Dockerfile.2.2.9 +6 -3
  10. data/dockers/Dockerfile.2.3.6 +6 -3
  11. data/dockers/Dockerfile.2.4.3 +6 -3
  12. data/dockers/Dockerfile.2.5.0 +6 -3
  13. data/dockers/Dockerfile.GemRelease +10 -8
  14. data/dockers/Dockerfile.m4 +23 -5
  15. data/dockers/docker-test.sh +65 -28
  16. data/docs/completions/murano_completion-bash +751 -57
  17. data/docs/develop.rst +10 -9
  18. data/lib/MrMurano/AccountBase.rb +95 -6
  19. data/lib/MrMurano/Commander-Entry.rb +9 -4
  20. data/lib/MrMurano/Config-Migrate.rb +2 -0
  21. data/lib/MrMurano/Config.rb +94 -26
  22. data/lib/MrMurano/Content.rb +1 -1
  23. data/lib/MrMurano/Exchange.rb +77 -42
  24. data/lib/MrMurano/Gateway.rb +1 -1
  25. data/lib/MrMurano/HttpAuthed.rb +20 -7
  26. data/lib/MrMurano/Logs.rb +10 -1
  27. data/lib/MrMurano/ProjectFile.rb +1 -1
  28. data/lib/MrMurano/ReCommander.rb +129 -73
  29. data/lib/MrMurano/Solution-ServiceConfig.rb +18 -11
  30. data/lib/MrMurano/Solution-Services.rb +78 -50
  31. data/lib/MrMurano/Solution-Users.rb +1 -1
  32. data/lib/MrMurano/Solution.rb +13 -63
  33. data/lib/MrMurano/SyncUpDown-Core.rb +185 -77
  34. data/lib/MrMurano/SyncUpDown-Item.rb +29 -4
  35. data/lib/MrMurano/SyncUpDown.rb +11 -11
  36. data/lib/MrMurano/Webservice-Cors.rb +1 -1
  37. data/lib/MrMurano/Webservice-Endpoint.rb +28 -17
  38. data/lib/MrMurano/Webservice-File.rb +103 -43
  39. data/lib/MrMurano/commands/domain.rb +1 -0
  40. data/lib/MrMurano/commands/element.rb +585 -0
  41. data/lib/MrMurano/commands/exchange.rb +211 -204
  42. data/lib/MrMurano/commands/gb.rb +1 -0
  43. data/lib/MrMurano/commands/globals.rb +17 -7
  44. data/lib/MrMurano/commands/init.rb +115 -101
  45. data/lib/MrMurano/commands/keystore.rb +1 -1
  46. data/lib/MrMurano/commands/logs.rb +2 -1
  47. data/lib/MrMurano/commands/postgresql.rb +17 -7
  48. data/lib/MrMurano/commands/service.rb +572 -0
  49. data/lib/MrMurano/commands/show.rb +7 -3
  50. data/lib/MrMurano/commands/solution.rb +2 -1
  51. data/lib/MrMurano/commands/solution_picker.rb +31 -15
  52. data/lib/MrMurano/commands/status.rb +205 -169
  53. data/lib/MrMurano/commands/sync.rb +70 -38
  54. data/lib/MrMurano/commands/token.rb +59 -14
  55. data/lib/MrMurano/commands/usage.rb +1 -0
  56. data/lib/MrMurano/commands.rb +2 -0
  57. data/lib/MrMurano/hash.rb +91 -0
  58. data/lib/MrMurano/http.rb +55 -6
  59. data/lib/MrMurano/makePretty.rb +47 -0
  60. data/lib/MrMurano/optparse.rb +60 -45
  61. data/lib/MrMurano/variegated/TruthyFalsey.rb +48 -0
  62. data/lib/MrMurano/variegated/ruby_dig.rb +64 -0
  63. data/lib/MrMurano/verbosing.rb +113 -3
  64. data/lib/MrMurano/version.rb +1 -1
  65. data/spec/Account_spec.rb +34 -20
  66. data/spec/Business_spec.rb +12 -9
  67. data/spec/Config_spec.rb +7 -1
  68. data/spec/Content_spec.rb +17 -1
  69. data/spec/GatewayBase_spec.rb +5 -2
  70. data/spec/GatewayDevice_spec.rb +4 -2
  71. data/spec/GatewayResource_spec.rb +4 -1
  72. data/spec/GatewaySettings_spec.rb +4 -1
  73. data/spec/HttpAuthed_spec.rb +73 -0
  74. data/spec/Http_spec.rb +32 -35
  75. data/spec/ProjectFile_spec.rb +1 -1
  76. data/spec/Solution-ServiceConfig_spec.rb +4 -1
  77. data/spec/Solution-ServiceEventHandler_spec.rb +6 -3
  78. data/spec/Solution-ServiceModules_spec.rb +4 -1
  79. data/spec/Solution-UsersRoles_spec.rb +4 -1
  80. data/spec/Solution_spec.rb +4 -1
  81. data/spec/SyncUpDown_spec.rb +1 -1
  82. data/spec/Webservice-Cors_spec.rb +4 -1
  83. data/spec/Webservice-Endpoint_spec.rb +9 -6
  84. data/spec/Webservice-File_spec.rb +17 -4
  85. data/spec/Webservice-Setting_spec.rb +6 -2
  86. data/spec/_workspace.rb +2 -0
  87. data/spec/cmd_common.rb +42 -13
  88. data/spec/cmd_content_spec.rb +17 -7
  89. data/spec/cmd_device_spec.rb +1 -1
  90. data/spec/cmd_domain_spec.rb +2 -2
  91. data/spec/cmd_element_spec.rb +400 -0
  92. data/spec/cmd_exchange_spec.rb +2 -2
  93. data/spec/cmd_init_spec.rb +59 -25
  94. data/spec/cmd_keystore_spec.rb +6 -3
  95. data/spec/cmd_link_spec.rb +10 -5
  96. data/spec/cmd_logs_spec.rb +1 -1
  97. data/spec/cmd_setting_application_spec.rb +18 -15
  98. data/spec/cmd_setting_product_spec.rb +7 -7
  99. data/spec/cmd_status_spec.rb +27 -17
  100. data/spec/cmd_syncdown_application_spec.rb +30 -3
  101. data/spec/cmd_syncdown_both_spec.rb +72 -18
  102. data/spec/cmd_syncup_spec.rb +71 -5
  103. data/spec/cmd_token_spec.rb +2 -2
  104. data/spec/cmd_usage_spec.rb +2 -2
  105. data/spec/dry_run_formatter.rb +27 -0
  106. data/spec/fixtures/dumped_config +8 -0
  107. data/spec/fixtures/exchange_element/element-show.json +1 -0
  108. data/spec/fixtures/exchange_element/swagger-mur-6407__10k.yaml +282 -0
  109. data/spec/fixtures/exchange_element/swagger-mur-6407__20k.yaml +588 -0
  110. data/spec/variegated_TruthyFalsey_spec.rb +29 -0
  111. metadata +51 -25
@@ -54,12 +54,12 @@ RSpec.describe 'murano init', :cmd do
54
54
  expecting += [
55
55
  "This business does not have any applications. Let's create one\n", # 7
56
56
  "\n", # 8
57
- "Please enter the Application name: \n", # 9
57
+ "Enter the Application name [leave blank to skip]: \n", # 9
58
58
  a_string_starting_with('Created new Application: '), # 10
59
59
  "\n", # 11
60
60
  "This business does not have any products. Let's create one\n", # 12
61
61
  "\n", # 13
62
- "Please enter the Product name: \n", # 14
62
+ "Enter the Product name [leave blank to skip]: \n", # 14
63
63
  a_string_starting_with('Created new Product: '), # 15
64
64
  "\n", # 16
65
65
  ]
@@ -107,17 +107,29 @@ RSpec.describe 'murano init', :cmd do
107
107
  "\n",
108
108
  ]
109
109
  end
110
+
111
+ # 2017-12-15: Currently:
112
+ # services{product.id}_event.lua
113
+ # services/user_account.lua
114
+ # specs/resources.yaml
115
+ # 2018-04-11: Currently:
116
+ # "Updating local product resources\n",
117
+ # "Adding item config_service\n",
118
+ # "Adding item config_status\n",
119
+ # "Adding item user_account\n",
120
+ # "Adding item g3vm2aa9xjfy00000_event\n",
121
+ # "Adding item config_service\n",
122
+ # "Adding item config_status\n",
123
+ # "Synced 7 items\n",
110
124
  expecting += [
111
- # 2017-12-15: Currently:
112
- # services{product.id}_event.lua
113
- # services/user_account.lua
114
- # specs/resources.yaml
115
125
  "Updating local product resources\n",
116
- t.a_string_starting_with('Adding item '),
117
- t.a_string_starting_with('Adding item '),
118
- "Synced 3 items\n",
126
+ ]
127
+ 6.times { expecting += [t.a_string_starting_with('Adding item ')] }
128
+ expecting += [
129
+ "Synced 7 items\n",
119
130
  "\n",
120
131
  ]
132
+
121
133
  expecting += [
122
134
  "Success!\n",
123
135
  "\n",
@@ -148,13 +160,17 @@ RSpec.describe 'murano init', :cmd do
148
160
  murano_solutions_expunge_yes
149
161
 
150
162
  @applctn_name = rname('initEmptyApp')
151
- out, err, status = Open3.capture3(capcmd('murano', 'application', 'create', @applctn_name, '--save'))
163
+ out, err, status = Open3.capture3(
164
+ capcmd('murano', 'application', 'create', @applctn_name, '--save')
165
+ )
152
166
  expect(err).to eq('')
153
167
  expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
154
168
  expect(status.exitstatus).to eq(0)
155
169
 
156
170
  @product_name = rname('initEmptyPrd')
157
- out, err, status = Open3.capture3(capcmd('murano', 'product', 'create', @product_name, '--save'))
171
+ out, err, status = Open3.capture3(
172
+ capcmd('murano', 'product', 'create', @product_name, '--save')
173
+ )
158
174
  expect(err).to eq('')
159
175
  expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
160
176
  expect(status.exitstatus).to eq(0)
@@ -162,19 +178,24 @@ RSpec.describe 'murano init', :cmd do
162
178
  # delete all of this so it is a empty directory.
163
179
  FileUtils.remove_entry('.murano')
164
180
  end
181
+
165
182
  after(:example) do
166
- out, err, status = Open3.capture3(capcmd('murano', 'solution', 'delete', @product_name, '-y'))
183
+ out, err, status = Open3.capture3(
184
+ capcmd('murano', 'solution', 'delete', @product_name, '-y')
185
+ )
167
186
  expect(out).to eq('')
168
187
  expect(err).to eq('')
169
188
  expect(status.exitstatus).to eq(0)
170
189
 
171
- out, err, status = Open3.capture3(capcmd('murano', 'solution', 'delete', @applctn_name, '-y'))
190
+ out, err, status = Open3.capture3(
191
+ capcmd('murano', 'solution', 'delete', @applctn_name, '-y')
192
+ )
172
193
  expect(out).to eq('')
173
194
  expect(err).to eq('')
174
195
  expect(status.exitstatus).to eq(0)
175
196
  end
176
197
 
177
- it 'existing project' do
198
+ it 'existing project', :club_20s, :club_10s do
178
199
  # The test account will have one business, one product, and one application.
179
200
  # So it won't ask any questions.
180
201
  out, err, status = Open3.capture3(capcmd('murano', 'init'))
@@ -204,18 +225,22 @@ RSpec.describe 'murano init', :cmd do
204
225
  @product_name = rname('initCreatingPrd')
205
226
  end
206
227
  after(:example) do
207
- out, err, status = Open3.capture3(capcmd('murano', 'solution', 'delete', @product_name, '-y'))
228
+ out, err, status = Open3.capture3(
229
+ capcmd('murano', 'solution', 'delete', @product_name, '-y')
230
+ )
208
231
  expect(out).to eq('')
209
232
  expect(err).to eq('')
210
233
  expect(status.exitstatus).to eq(0)
211
234
 
212
- out, err, status = Open3.capture3(capcmd('murano', 'solution', 'delete', @applctn_name, '-y'))
235
+ out, err, status = Open3.capture3(
236
+ capcmd('murano', 'solution', 'delete', @applctn_name, '-y')
237
+ )
213
238
  expect(out).to eq('')
214
239
  expect(err).to eq('')
215
240
  expect(status.exitstatus).to eq(0)
216
241
  end
217
242
 
218
- it 'existing project' do
243
+ it 'existing project', :club_20s, :club_10s do
219
244
  # The test account will have one business.
220
245
  # It will ask to create an application and product.
221
246
  # MAGIC_NUMBER: !!!! the 8 is hardcoded indention here !!!!
@@ -288,28 +313,37 @@ RSpec.describe 'murano init', :cmd do
288
313
  FileUtils.move('assets', 'files')
289
314
 
290
315
  @applctn_name = rname('initEmptyApp')
291
- out, err, status = Open3.capture3(capcmd('murano', 'application', 'create', @applctn_name, '--save'))
316
+ out, err, status = Open3.capture3(
317
+ capcmd('murano', 'application', 'create', @applctn_name, '--save')
318
+ )
292
319
  expect(err).to eq('')
293
320
  expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
294
321
  expect(status.exitstatus).to eq(0)
295
322
 
296
323
  @product_name = rname('initEmptyPrd')
297
- out, err, status = Open3.capture3(capcmd('murano', 'product', 'create', @product_name, '--save'))
324
+ out, err, status = Open3.capture3(
325
+ capcmd('murano', 'product', 'create', @product_name, '--save')
326
+ )
298
327
  expect(err).to eq('')
299
328
  expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
300
329
  expect(status.exitstatus).to eq(0)
301
330
  end
331
+
302
332
  after(:example) do
303
333
  Dir.chdir(ENV['HOME']) do
304
334
  if defined?(@product_name)
305
- out, err, status = Open3.capture3(capcmd('murano', 'solution', 'delete', @product_name, '-y'))
335
+ out, err, status = Open3.capture3(
336
+ capcmd('murano', 'solution', 'delete', @product_name, '-y')
337
+ )
306
338
  expect(out).to eq('')
307
339
  expect(err).to eq('')
308
340
  expect(status.exitstatus).to eq(0)
309
341
  end
310
342
 
311
343
  if defined?(@applctn_name)
312
- out, err, status = Open3.capture3(capcmd('murano', 'solution', 'delete', @applctn_name, '-y'))
344
+ out, err, status = Open3.capture3(
345
+ capcmd('murano', 'solution', 'delete', @applctn_name, '-y')
346
+ )
313
347
  expect(out).to eq('')
314
348
  expect(err).to eq('')
315
349
  expect(status.exitstatus).to eq(0)
@@ -317,7 +351,7 @@ RSpec.describe 'murano init', :cmd do
317
351
  end
318
352
  end
319
353
 
320
- it 'without ProjectFile' do
354
+ it 'without ProjectFile', :club_20s, :club_10s do
321
355
  # The test account will have one business, one product, and one application.
322
356
  # So it won't ask any questions.
323
357
  out, err, status = Open3.capture3(capcmd('murano', 'init'))
@@ -340,7 +374,7 @@ RSpec.describe 'murano init', :cmd do
340
374
  expect(File.directory?('specs')).to be true
341
375
  end
342
376
 
343
- it 'with ProjectFile' do
377
+ it 'with ProjectFile', :club_20s, :club_10s do
344
378
  FileUtils.copy(File.join(@testdir, 'spec/fixtures/ProjectFiles/only_meta.yaml'), 'test.murano')
345
379
  # The test account will have one business, one product, and one application.
346
380
  # So it won't ask any questions.
@@ -365,7 +399,7 @@ RSpec.describe 'murano init', :cmd do
365
399
  expect(File.directory?('specs')).to be true
366
400
  end
367
401
 
368
- it 'with SolutionFile 0.2.0' do
402
+ it 'with SolutionFile 0.2.0', :club_20s, :club_10s do
369
403
  File.open('Solutionfile.json', 'wb') do |io|
370
404
  io << {
371
405
  default_page: 'index.html',
@@ -405,7 +439,7 @@ RSpec.describe 'murano init', :cmd do
405
439
  expect(File.directory?('specs')).to be true
406
440
  end
407
441
 
408
- it 'with SolutionFile 0.3.0' do
442
+ it 'with SolutionFile 0.3.0', :club_20s, :club_10s do
409
443
  File.open('Solutionfile.json', 'wb') do |io|
410
444
  io << {
411
445
  default_page: 'index.html',
@@ -14,6 +14,8 @@ RSpec.describe 'murano keystore', :cmd, :needs_password do
14
14
  include_context 'CI_CMD'
15
15
 
16
16
  before(:example) do
17
+ murano_solutions_expunge_yes
18
+
17
19
  @product_name = rname('keystoreTest')
18
20
  out, err, status = Open3.capture3(capcmd('murano', 'application', 'create', @product_name, '--save'))
19
21
  expect(err).to eq('')
@@ -25,6 +27,7 @@ RSpec.describe 'murano keystore', :cmd, :needs_password do
25
27
  expect(err).to eq('')
26
28
  expect(status.exitstatus).to eq(0)
27
29
  end
30
+
28
31
  after(:example) do
29
32
  out, err, status = Open3.capture3(capcmd('murano', 'solution', 'delete', @product_name, '-y'))
30
33
  expect(out).to eq('')
@@ -57,7 +60,7 @@ RSpec.describe 'murano keystore', :cmd, :needs_password do
57
60
  )
58
61
  end
59
62
 
60
- it 'deletes' do
63
+ it 'deletes', :club_10s do
61
64
  out, err, status = Open3.capture3(capcmd('murano', 'keystore', 'delete', 'bob'))
62
65
  expect(out.chomp).to eq('')
63
66
  expect(err).to eq('')
@@ -69,7 +72,7 @@ RSpec.describe 'murano keystore', :cmd, :needs_password do
69
72
  expect(status.exitstatus).to eq(0)
70
73
  end
71
74
 
72
- it 'clearAll' do
75
+ it 'clearAll', :club_10s do
73
76
  out, err, status = Open3.capture3(capcmd('murano', 'keystore', 'set', 'another', 'value'))
74
77
  expect(out.chomp).to eq('')
75
78
  expect(err).to eq('')
@@ -86,7 +89,7 @@ RSpec.describe 'murano keystore', :cmd, :needs_password do
86
89
  expect(status.exitstatus).to eq(0)
87
90
  end
88
91
 
89
- it 'can call other commands' do
92
+ it 'can call other commands', :club_10s do
90
93
  out, err, status = Open3.capture3(capcmd('murano', 'keystore', 'command', 'lpush', 'another', 'value'))
91
94
  expect(out.chomp).to eq('1')
92
95
  expect(err).to eq('')
@@ -37,9 +37,14 @@ RSpec.describe 'murano link', :cmd, :needs_password do
37
37
  context 'using commander' do
38
38
  it 'will not list' do
39
39
  # Because we run from the context of the rspec command, the :env
40
- # config file will have loaded, so business.id will be set.
41
- expect { murano_command_run('link list') }.to raise_error(SystemExit)
42
- $exited_abnormally = false
40
+ # config file will have loaded, so business.id will not be set.
41
+ stdout, stderr = murano_command_run('link list')
42
+ expect(stdout).to eq(
43
+ %(Please change to a project directory, or run `murano init` to create a new project.\n)
44
+ )
45
+ expect(stderr).to eq(
46
+ %(The "link list" command only works in a Murano project.\n)
47
+ )
43
48
  end
44
49
  end
45
50
  end
@@ -49,7 +54,7 @@ RSpec.describe 'murano link', :cmd, :needs_password do
49
54
  before(:example) { project_up(skip_link: true) }
50
55
  after(:example) { project_down }
51
56
 
52
- it 'links and lists' do
57
+ it 'links and lists', :club_20s, :club_10s do
53
58
  out, err, status = Open3.capture3(capcmd('murano', 'assign', 'set'))
54
59
  olines = out.lines
55
60
 
@@ -71,7 +76,7 @@ RSpec.describe 'murano link', :cmd, :needs_password do
71
76
  expect(status.exitstatus).to eq(0)
72
77
  end
73
78
 
74
- it 'unlinks' do
79
+ it 'unlinks', :club_20s, :club_10s do
75
80
  out, err, status = Open3.capture3(capcmd('murano', 'assign', 'set'))
76
81
  #expect(out).to a_string_starting_with("Linked product #{@solz_name}")
77
82
  olines = out.lines
@@ -29,7 +29,7 @@ RSpec.describe 'murano logs', :cmd, :needs_password do
29
29
  $cfg.set('net.protocol', 'http', :project)
30
30
  $cfg.set('application.id', 'XYZ', :project)
31
31
 
32
- @acc = MrMurano::Account.instance
32
+ @acc = MrMurano::Account.new
33
33
  allow(@acc).to receive(:login_info).and_return(email: 'bob', password: 'v')
34
34
  end
35
35
 
@@ -11,16 +11,19 @@ require 'open3'
11
11
  require 'vine'
12
12
  require 'cmd_common'
13
13
 
14
- RSpec.describe 'murano setting', :cmd, :needs_password do
14
+ RSpec.describe 'murano application setting', :cmd, :needs_password do
15
15
  include_context 'CI_CMD'
16
16
 
17
17
  before(:example) do
18
+ murano_solutions_expunge_yes
19
+
18
20
  @product_name = rname('settingtest')
19
21
  out, err, status = Open3.capture3(capcmd('murano', 'application', 'create', @product_name, '--save'))
20
22
  expect(err).to eq('')
21
23
  expect(out.chomp).to match(/^[a-zA-Z0-9]+$/)
22
24
  expect(status.exitstatus).to eq(0)
23
25
  end
26
+
24
27
  after(:example) do
25
28
  out, err, status = Open3.capture3(capcmd('murano', 'solution', 'delete', @product_name, '-y'))
26
29
  expect(out).to eq('')
@@ -56,7 +59,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
56
59
  # 'credentials'=>true}
57
60
 
58
61
  context 'a bool value' do
59
- it 'Yes' do
62
+ it 'Yes', :club_10s do
60
63
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'origin', '--bool', 'Yes'))
61
64
  expect(err).to eq('')
62
65
  expect(out).to eq('')
@@ -71,7 +74,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
71
74
  expect(json_after).to match(@json_before)
72
75
  end
73
76
 
74
- it 'true' do
77
+ it 'true', :club_10s do
75
78
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'origin', '--bool', 'true'))
76
79
  expect(err).to eq('')
77
80
  expect(out).to eq('')
@@ -86,7 +89,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
86
89
  expect(json_after).to match(@json_before)
87
90
  end
88
91
 
89
- it 'on' do
92
+ it 'on', :club_30s, :club_20s, :club_10s do
90
93
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'origin', '--bool', 'on'))
91
94
  expect(err).to eq('')
92
95
  expect(out).to eq('')
@@ -101,7 +104,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
101
104
  expect(json_after).to match(@json_before)
102
105
  end
103
106
 
104
- it '1' do
107
+ it '1', :club_10s do
105
108
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'origin', '--bool', '1'))
106
109
  expect(err).to eq('')
107
110
  expect(out).to eq('')
@@ -116,14 +119,14 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
116
119
  expect(json_after).to match(@json_before)
117
120
  end
118
121
 
119
- it 'bob' do
122
+ it 'bob', :club_10s do
120
123
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'origin', '--bool', 'bob'))
121
124
  expect(err).to eq("\e[31mValue \"bob\" is not a bool type!\e[0m\n")
122
125
  expect(out).to eq('')
123
126
  expect(status.exitstatus).to eq(2)
124
127
  end
125
128
 
126
- it 'No' do
129
+ it 'No', :club_10s do
127
130
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'origin', '--bool', 'No'))
128
131
  expect(err).to eq('')
129
132
  expect(out).to eq('')
@@ -138,7 +141,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
138
141
  expect(json_after).to match(@json_before)
139
142
  end
140
143
 
141
- it 'false' do
144
+ it 'false', :club_10s do
142
145
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'origin', '--bool', 'false'))
143
146
  expect(err).to eq('')
144
147
  expect(out).to eq('')
@@ -153,7 +156,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
153
156
  expect(json_after).to match(@json_before)
154
157
  end
155
158
 
156
- it 'off' do
159
+ it 'off', :club_10s do
157
160
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'origin', '--bool', 'Off'))
158
161
  expect(err).to eq('')
159
162
  expect(out).to eq('')
@@ -168,7 +171,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
168
171
  expect(json_after).to match(@json_before)
169
172
  end
170
173
 
171
- it '0' do
174
+ it '0', :club_30s, :club_20s, :club_10s do
172
175
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'origin', '--bool', '0'))
173
176
  expect(err).to eq('')
174
177
  expect(out).to eq('')
@@ -183,7 +186,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
183
186
  expect(json_after).to match(@json_before)
184
187
  end
185
188
 
186
- it 'on STDIN' do
189
+ it 'on STDIN', :club_10s do
187
190
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'origin', '--bool'), stdin_data: 'true')
188
191
  expect(err).to eq('')
189
192
  expect(out).to eq('')
@@ -199,7 +202,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
199
202
  end
200
203
  end
201
204
 
202
- it 'a json array blob' do
205
+ it 'a json array blob', :club_10s do
203
206
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'headers', '--json', '["fidget", "forgotten", "tokens"]'))
204
207
  expect(err).to eq('')
205
208
  expect(out).to eq('')
@@ -214,7 +217,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
214
217
  expect(json_after).to match(@json_before)
215
218
  end
216
219
 
217
- it 'a json array blob with STDIN' do
220
+ it 'a json array blob with STDIN', :club_10s do
218
221
  out, err, status = Open3.capture3(
219
222
  capcmd(
220
223
  'murano',
@@ -239,7 +242,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
239
242
  expect(json_after).to match(@json_before)
240
243
  end
241
244
 
242
- it 'an array' do
245
+ it 'an array', :club_10s do
243
246
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'headers', '--array', 'fidget', 'forgotten', 'tokens'))
244
247
  expect(err).to eq('')
245
248
  expect(out).to eq('')
@@ -254,7 +257,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
254
257
  expect(json_after).to match(@json_before)
255
258
  end
256
259
 
257
- it 'appends an array' do
260
+ it 'appends an array', :club_10s do
258
261
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Webservice.cors', 'headers', '--array', '--append', 'fidget', 'forgotten', 'tokens'))
259
262
  expect(err).to eq('')
260
263
  expect(out).to eq('')
@@ -11,7 +11,7 @@ require 'open3'
11
11
  require 'vine'
12
12
  require 'cmd_common'
13
13
 
14
- RSpec.describe 'murano setting', :cmd, :needs_password do
14
+ RSpec.describe 'murano product setting', :cmd, :needs_password do
15
15
  include_context 'CI_CMD'
16
16
 
17
17
  before(:example) do
@@ -37,7 +37,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
37
37
  end
38
38
  # {'prefix'=>'', 'type'=>'opaque', 'options'=>{'casing'=>'mixed', 'length'=>0}}
39
39
 
40
- it 'a string value' do
40
+ it 'a string value', :club_10s do
41
41
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'prefix', 'fidget'))
42
42
  expect(err).to eq('')
43
43
  expect(out).to eq('')
@@ -52,7 +52,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
52
52
  expect(json_after).to match(@json_before)
53
53
  end
54
54
 
55
- it 'a forced string value' do
55
+ it 'a forced string value', :club_10s do
56
56
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'prefix', '--string', 'fidget'))
57
57
  expect(err).to eq('')
58
58
  expect(out).to eq('')
@@ -67,7 +67,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
67
67
  expect(json_after).to match(@json_before)
68
68
  end
69
69
 
70
- it 'a forced string value on STDIN' do
70
+ it 'a forced string value on STDIN', :club_10s do
71
71
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'prefix', '--string'), stdin_data: 'fidget')
72
72
  expect(err).to eq('')
73
73
  expect(out).to eq('')
@@ -99,7 +99,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
99
99
  # end
100
100
 
101
101
  context 'a number value' do
102
- it 'integer 12' do
102
+ it 'integer 12', :club_10s do
103
103
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'options.length', '--num', '12'))
104
104
  expect(err).to eq('')
105
105
  expect(out).to eq('')
@@ -114,7 +114,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
114
114
  expect(json_after).to match(@json_before)
115
115
  end
116
116
 
117
- it 'float 12.67' do
117
+ it 'float 12.67', :club_10s do
118
118
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', 'options.length', '--num', '12.67'))
119
119
  expect(err).to eq('')
120
120
  expect(out).to eq('')
@@ -191,7 +191,7 @@ RSpec.describe 'murano setting', :cmd, :needs_password do
191
191
  # expect(json_after).to match(@json_before)
192
192
  # end
193
193
 
194
- it 'merges into a dictionary' do
194
+ it 'merges into a dictionary', :club_10s do
195
195
  out, err, status = Open3.capture3(capcmd('murano', 'setting', 'write', 'Device2.identity_format', '.', '--dict', '--merge', 'prefix', 'tix', 'type', 'base10'))
196
196
  expect(err).to eq('')
197
197
  expect(out).to eq('')
@@ -104,7 +104,11 @@ RSpec.describe 'murano status', :cmd, :needs_password do
104
104
 
105
105
  def match_remote_boilerplate_v1_0_0_service(slice)
106
106
  expect(slice).to include(
107
+ a_string_matching(/ - \w config_service/),
108
+ a_string_matching(/ - \w config_status/),
107
109
  a_string_matching(/ - \w user_account\.lua/),
110
+ a_string_matching(/ - \w config_service/),
111
+ a_string_matching(/ - \w config_status/),
108
112
  )
109
113
  end
110
114
 
@@ -119,7 +123,7 @@ RSpec.describe 'murano status', :cmd, :needs_password do
119
123
  )
120
124
  end
121
125
 
122
- it 'status' do
126
+ it 'status', :club_20s, :club_10s do
123
127
  out, err, status = Open3.capture3(capcmd('murano', 'status'))
124
128
  expect(err).to eq('')
125
129
  # Two problems with this output.
@@ -129,8 +133,10 @@ RSpec.describe 'murano status', :cmd, :needs_password do
129
133
  expect(olines[0]).to eq("Only on local machine:\n")
130
134
  match_syncable_contents_resources(olines[1..4])
131
135
  match_syncable_contents(olines[5..12])
132
- #expect(olines[13]).to eq("Only on remote server:\n")
133
- expect(olines[13]).to eq("Nothing new remotely\n")
136
+ #expect(olines[13]).to eq("Nothing new remotely\n")
137
+ expect(olines[13]).to eq("Only on remote server:\n")
138
+ expect(olines[14]).to eq(" - I config_service\n")
139
+ expect(olines[15]).to eq(" - I config_status\n")
134
140
  # FIMXE/2017-06-23: We should DRY this long list which is same in each test.
135
141
  # FIXME/2017-06-23: The interfaces the server creates for a new project
136
142
  # will problem vary depending on what modules are loaded, and are likely
@@ -151,13 +157,13 @@ RSpec.describe 'murano status', :cmd, :needs_password do
151
157
  # a_string_matching(%r{ M \w .*services/tsdb_exportJob\.lua}),
152
158
  # )
153
159
  #else
154
- expect(olines[14]).to eq("Nothing that differs\n")
160
+ expect(olines[16]).to eq("Nothing that differs\n")
155
161
  #end
156
162
 
157
163
  expect(status.exitstatus).to eq(0)
158
164
  end
159
165
 
160
- it 'matches file path', :broken_on_windows do
166
+ it 'matches file path', :broken_on_windows, :club_20s, :club_10s do
161
167
  # capcmd calls shellwords, which escapes strings so that Open3 doesn't
162
168
  # expand them. E.g., **/ would expand to the local directory name.
163
169
  status_cmd = capcmd('murano', 'status', '**/icon.png')
@@ -174,7 +180,7 @@ RSpec.describe 'murano status', :cmd, :needs_password do
174
180
  expect(status.exitstatus).to eq(0)
175
181
  end
176
182
 
177
- it 'matches route', :broken_on_windows do
183
+ it 'matches route', :broken_on_windows, :club_20s, :club_10s do
178
184
  out, err, status = Open3.capture3(capcmd('murano', 'status', '#put#'))
179
185
  expect(err).to eq('')
180
186
  expect(out.lines).to match(
@@ -207,14 +213,18 @@ RSpec.describe 'murano status', :cmd, :needs_password do
207
213
  )
208
214
  end
209
215
 
210
- it 'status' do
216
+ it 'status', :club_20s, :club_10s do
211
217
  out, err, status = Open3.capture3(capcmd('murano', 'status'))
212
218
  expect(err).to eq('')
213
219
  olines = out.lines
220
+
214
221
  expect(olines[0]).to eq("Only on local machine:\n")
215
222
  match_syncable_contents_resources(olines[1..4])
216
223
  match_syncable_contents(olines[5..12])
217
- expect(olines[13]).to eq("Nothing new remotely\n")
224
+ #expect(olines[13]).to eq("Nothing new remotely\n")
225
+ expect(olines[13]).to eq("Only on remote server:\n")
226
+ expect(olines[14]).to eq(" - I config_service\n")
227
+ expect(olines[15]).to eq(" - I config_status\n")
218
228
 
219
229
  # NOTE: On Windows, touch doesn't work, so items differ.
220
230
  # Check the platform, e.g., 'linux-gnu', or other.
@@ -222,13 +232,13 @@ RSpec.describe 'murano status', :cmd, :needs_password do
222
232
  # RbConfig::CONFIG['host_os'] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
223
233
  #)
224
234
  if OS.windows?
225
- expect(olines[14]).to eq("Items that differ:\n")
226
- expect(olines[15..16]).to include(
235
+ expect(olines[16]).to eq("Items that differ:\n")
236
+ expect(olines[17..18]).to include(
227
237
  a_string_matching(%r{ M \w .*services/timer_timer\.lua}),
228
238
  a_string_matching(%r{ M \w .*services/tsdb_exportJob\.lua}),
229
239
  )
230
240
  else
231
- expect(olines[14]).to eq("Nothing that differs\n")
241
+ expect(olines[16]).to eq("Nothing that differs\n")
232
242
  end
233
243
 
234
244
  expect(status.exitstatus).to eq(0)
@@ -262,7 +272,7 @@ RSpec.describe 'murano status', :cmd, :needs_password do
262
272
  end
263
273
  end
264
274
 
265
- it 'status' do
275
+ it 'status', :club_20s, :club_10s do
266
276
  out, err, status = Open3.capture3(capcmd('murano', 'status'))
267
277
  expect(err).to eq('')
268
278
  # Not a single match, because the order of items within groups can shift
@@ -271,8 +281,8 @@ RSpec.describe 'murano status', :cmd, :needs_password do
271
281
  match_syncable_contents_resources(olines[1..4])
272
282
  match_syncable_contents_except_single_route(olines[5..11])
273
283
  expect(olines[12]).to eq("Only on remote server:\n")
274
- match_remote_boilerplate_v1_0_0_service(olines[13..13])
275
- expect(olines[14]).to eq("Nothing that differs\n")
284
+ match_remote_boilerplate_v1_0_0_service(olines[13..17])
285
+ expect(olines[18]).to eq("Nothing that differs\n")
276
286
  expect(status.exitstatus).to eq(0)
277
287
  end
278
288
  end
@@ -307,7 +317,7 @@ RSpec.describe 'murano status', :cmd, :needs_password do
307
317
  end
308
318
  end
309
319
 
310
- it 'status' do
320
+ it 'status', :club_20s, :club_10s do
311
321
  out, err, status = Open3.capture3(capcmd('murano', 'status'))
312
322
  expect(err).to eq('')
313
323
  olines = out.lines
@@ -315,8 +325,8 @@ RSpec.describe 'murano status', :cmd, :needs_password do
315
325
  match_syncable_contents_resources(olines[1..4])
316
326
  match_syncable_contents_except_single_route(olines[5..11])
317
327
  expect(olines[12]).to eq("Only on remote server:\n")
318
- match_remote_boilerplate_v1_0_0_service(olines[13..13])
319
- expect(olines[14]).to eq("Nothing that differs\n")
328
+ match_remote_boilerplate_v1_0_0_service(olines[13..17])
329
+ expect(olines[18]).to eq("Nothing that differs\n")
320
330
  expect(status.exitstatus).to eq(0)
321
331
  end
322
332
  end