lorj 0.2.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +46 -0
  4. data/Gemfile +15 -15
  5. data/README.md +22 -17
  6. data/Rakefile +12 -2
  7. data/bin/cloud_test.rb +13 -65
  8. data/example/students_1/process/students.rb +39 -0
  9. data/example/students_1/students.rb +22 -5
  10. data/example/students_2/process/students.rb +48 -0
  11. data/example/students_2/students.rb +39 -16
  12. data/example/students_3/controller/yaml_students.rb +50 -43
  13. data/example/students_3/controller/yaml_students_controller.rb +100 -87
  14. data/example/students_3/process/students.rb +161 -97
  15. data/example/students_3/students.rb +85 -56
  16. data/example/yaml_students/students.rb +40 -40
  17. data/example/yaml_students/yaml_students.rb +103 -90
  18. data/lib/core/core.rb +356 -696
  19. data/lib/core/core_controller.rb +227 -0
  20. data/lib/core/core_internal.rb +339 -0
  21. data/lib/core/core_model.rb +328 -0
  22. data/lib/core/core_object_data.rb +330 -0
  23. data/lib/core/core_object_params.rb +230 -0
  24. data/lib/core/core_process.rb +391 -0
  25. data/lib/core/core_process_setup.rb +353 -0
  26. data/lib/core/core_setup_ask.rb +241 -0
  27. data/lib/core/core_setup_encrypt.rb +146 -0
  28. data/lib/core/core_setup_init.rb +229 -0
  29. data/lib/core/core_setup_list.rb +160 -0
  30. data/lib/core/definition.rb +647 -469
  31. data/lib/core/definition_internal.rb +264 -308
  32. data/lib/core/lorj_basecontroller.rb +95 -0
  33. data/lib/core/lorj_basedefinition.rb +307 -0
  34. data/lib/core/lorj_baseprocess.rb +265 -0
  35. data/lib/core/lorj_data.rb +583 -0
  36. data/lib/core/lorj_keypath.rb +119 -0
  37. data/lib/core_process/cloud/process/common.rb +63 -0
  38. data/lib/core_process/cloud/process/connection.rb +93 -0
  39. data/lib/core_process/cloud/process/external_network.rb +94 -0
  40. data/lib/core_process/cloud/process/flavor.rb +99 -0
  41. data/lib/core_process/cloud/process/images.rb +87 -0
  42. data/lib/core_process/cloud/process/internet_network.rb +34 -0
  43. data/lib/core_process/cloud/process/internet_server.rb +30 -0
  44. data/lib/core_process/cloud/process/keypairs.rb +276 -0
  45. data/lib/core_process/cloud/process/network.rb +108 -0
  46. data/lib/core_process/cloud/process/public_ip.rb +100 -0
  47. data/lib/core_process/cloud/process/router.rb +260 -0
  48. data/lib/core_process/cloud/process/rules.rb +120 -0
  49. data/lib/core_process/cloud/process/security_groups.rb +121 -0
  50. data/lib/core_process/cloud/process/server.rb +127 -0
  51. data/lib/core_process/cloud/process/server_log.rb +35 -0
  52. data/lib/core_process/cloud/process/subnetwork.rb +108 -0
  53. data/lib/core_process/cloud_process.rb +30 -0
  54. data/lib/logging.rb +298 -0
  55. data/lib/lorj/version.rb +18 -1
  56. data/lib/lorj.rb +58 -18
  57. data/lib/lorj_account.rb +556 -0
  58. data/lib/lorj_config.rb +468 -0
  59. data/lib/lorj_defaults.rb +278 -0
  60. data/lib/prc.rb +136 -104
  61. data/lib/prc_base_config.rb +285 -0
  62. data/lib/prc_core_config.rb +878 -0
  63. data/lib/prc_section_config.rb +57 -0
  64. data/lib/providers/hpcloud/compute.rb +81 -93
  65. data/lib/providers/hpcloud/hpcloud.rb +462 -0
  66. data/lib/providers/hpcloud/network.rb +96 -98
  67. data/lib/providers/hpcloud/security_groups.rb +41 -40
  68. data/lib/providers/mock/mock.rb +144 -0
  69. data/lib/providers/openstack/openstack.rb +45 -0
  70. data/lib/providers/templates/compute.rb +21 -23
  71. data/lib/providers/templates/mycloud.rb +72 -0
  72. data/lib/providers/templates/network.rb +11 -12
  73. data/lib/rh.rb +339 -0
  74. data/lorj-spec/defaults.yaml +4 -0
  75. data/lorj.gemspec +6 -0
  76. data/spec/00_lorj_log_spec.rb +53 -0
  77. data/spec/01_hash_rh_spec.rb +243 -0
  78. data/spec/02_prc_base_config_spec.rb +216 -0
  79. data/spec/04_prc_core_config_spec.rb +83 -0
  80. data/spec/11_lorj_config_spec.rb +263 -0
  81. data/spec/12_lorj_account_spec.rb +181 -0
  82. metadata +76 -28
  83. data/Gemfile.lock +0 -37
  84. data/example/students_1/process/Students.rb +0 -20
  85. data/example/students_2/process/Students.rb +0 -27
  86. data/example/students_4/controller/yaml_students.rb +0 -82
  87. data/example/students_4/controller/yaml_students_controller.rb +0 -141
  88. data/example/students_4/process/students.rb +0 -112
  89. data/example/students_4/students.rb +0 -103
  90. data/lib/core/lorj-basecontroller.rb +0 -90
  91. data/lib/core/lorj-basedefinition.rb +0 -1139
  92. data/lib/core/lorj-baseprocess.rb +0 -236
  93. data/lib/core/lorj-data.rb +0 -567
  94. data/lib/core/lorj-keypath.rb +0 -115
  95. data/lib/core_process/CloudProcess.rb +0 -337
  96. data/lib/core_process/global_process.rb +0 -502
  97. data/lib/core_process/network_process.rb +0 -605
  98. data/lib/prc-account.rb +0 -339
  99. data/lib/prc-config.rb +0 -1030
  100. data/lib/prc-logging.rb +0 -261
  101. data/lib/providers/hpcloud/Hpcloud.rb +0 -426
  102. data/lib/providers/mock/Mock.rb +0 -141
  103. data/lib/providers/openstack/Openstack.rb +0 -47
  104. data/lib/providers/templates/core.rb +0 -61
  105. data/spec/forj-account_spec.rb +0 -75
  106. data/spec/forj-config_spec.rb +0 -196
@@ -0,0 +1,216 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ # require 'byebug'
19
+
20
+ $LOAD_PATH << File.join('..', 'lib')
21
+
22
+ require 'rh.rb'
23
+ require 'prc.rb'
24
+ require 'prc_base_config.rb' # Load PRC_core framework
25
+
26
+ describe 'class: PRC::BaseConfig,' do
27
+ context 'when creating a new instance' do
28
+ it 'should be loaded' do
29
+ config = PRC::BaseConfig.new
30
+ expect(config).to be
31
+ end
32
+
33
+ it 'should be initialized with Hash data.' do
34
+ config = PRC::BaseConfig.new(:test => :toto)
35
+ expect(config.data).to eq(:test => :toto)
36
+ end
37
+ end
38
+
39
+ context 'config[*keys] = value' do
40
+ before(:all) do
41
+ @config = PRC::BaseConfig.new
42
+ end
43
+
44
+ it 'should be able to create a key/value in the config object.' do
45
+ @config[:test1] = 'value'
46
+ expect(@config.data).to eq(:test1 => 'value')
47
+ end
48
+
49
+ it 'should be able to create a key tree/value in the config object.' do
50
+ @config[:test1, :test2] = 'value'
51
+ expect(@config.data).to eq(:test1 => { :test2 => 'value' })
52
+ end
53
+ end
54
+
55
+ context 'config.del(*keys)' do
56
+ before(:all) do
57
+ @config = PRC::BaseConfig.new(:test1 => 'value',
58
+ :test2 => { :test2 => 'value' })
59
+ end
60
+
61
+ it 'should be able to delete a key/value in the config object.' do
62
+ expect(@config.del(:test1)).to eq('value')
63
+ expect(@config.data).to eq(:test2 => { :test2 => 'value' })
64
+ end
65
+
66
+ it 'should be able to delete a key/value in the config object.' do
67
+ expect(@config.del(:test2)).to eq(:test2 => 'value')
68
+ expect(@config.data).to eq({})
69
+ end
70
+ end
71
+
72
+ context 'config[*keys]' do
73
+ before(:all) do
74
+ @config = PRC::BaseConfig.new(:test1 => { :test2 => 'value' })
75
+ end
76
+
77
+ it 'with no parameter should return nil' do
78
+ expect(@config[]).to equal(nil)
79
+ end
80
+
81
+ it "with keys = [:test1], should return {:test2 =>'value'}." do
82
+ expect(@config[:test1]).to eq(:test2 => 'value')
83
+ end
84
+
85
+ it "with keys = [:test1, :test2], should return {:test2 =>'value'}." do
86
+ expect(@config[:test1, :test2]).to eq('value')
87
+ end
88
+ end
89
+
90
+ context 'config.exist?(*keys)' do
91
+ before(:all) do
92
+ @config = PRC::BaseConfig.new(:test1 => { :test2 => 'value' })
93
+ end
94
+
95
+ it 'with no parameter should return nil' do
96
+ expect(@config.exist?).to equal(nil)
97
+ end
98
+
99
+ it 'with keys = [test1], should return true.' do
100
+ expect(@config.exist?(:test1)).to equal(true)
101
+ end
102
+
103
+ it 'with keys = [:test1, :test2], should return true.' do
104
+ expect(@config.exist?(:test1, :test2)).to equal(true)
105
+ end
106
+
107
+ it 'with keys = [:test], should return false.' do
108
+ expect(@config.exist?(:test)).to equal(false)
109
+ end
110
+
111
+ it 'with keys = [:test1, :test], should return false.' do
112
+ expect(@config.exist?(:test1, :test)).to equal(false)
113
+ end
114
+
115
+ it 'with keys = [:test1, :test2, :test3], should return false.' do
116
+ expect(@config.exist?(:test1, :test2, :test3)).to equal(false)
117
+ end
118
+ end
119
+
120
+ context "config.erase on :test1 => { :test2 => 'value' }" do
121
+ it 'with no parameter should return {} and cleanup internal data.' do
122
+ config = PRC::BaseConfig.new(:test1 => { :test2 => 'value' })
123
+ expect(config.erase).to eq({})
124
+ expect(config.data).to eq({})
125
+ end
126
+ end
127
+
128
+ context 'config.save and config.load' do
129
+ before(:all) do
130
+ @config = PRC::BaseConfig.new(:test1 => { :test2 => 'value' })
131
+ end
132
+
133
+ it 'save with no parameter should fail' do
134
+ expect { @config.save }.to raise_error RuntimeError
135
+ end
136
+
137
+ it 'save with filename set, save should true' do
138
+ file = '~/.lorj_rspec.yaml'
139
+ @config.filename = file
140
+ filename = File.expand_path(file)
141
+
142
+ expect(@config.filename).to eq(filename)
143
+ expect(@config.save).to equal(true)
144
+
145
+ File.delete(filename)
146
+ end
147
+
148
+ it 'save with filename given, returns true, and file saved.' do
149
+ file = '~/.lorj_rspec2.yaml'
150
+ old_file = @config.filename
151
+ filename = File.expand_path(file)
152
+
153
+ expect(@config.save(file)).to equal(true)
154
+ expect(@config.filename).not_to eq(old_file)
155
+ expect(@config.filename).to eq(filename)
156
+ end
157
+
158
+ it 'load returns true and file is loaded.' do
159
+ @config.erase
160
+
161
+ expect(@config.load).to equal(true)
162
+ expect(@config.data).to eq(:test1 => { :test2 => 'value' })
163
+
164
+ File.delete(@config.filename)
165
+ end
166
+
167
+ it 'load raises if file given is not found.' do
168
+ @config.erase
169
+
170
+ expect { @config.load('~/.lorj_rspec.yaml') }.to raise_error
171
+ end
172
+ end
173
+
174
+ context 'config.data_options(options)' do
175
+ it 'with no parameter should return {} ie no options.' do
176
+ config = PRC::BaseConfig.new
177
+ expect(config.data_options).to eq({})
178
+ end
179
+
180
+ it 'with :readonly => true should return {} ie no options.' do
181
+ config = PRC::BaseConfig.new
182
+ expect(config.data_options(:readonly => true)).to eq(:readonly => true)
183
+ end
184
+
185
+ it 'with any unknown options like :section => "test" should return '\
186
+ '{:section => "test"}.' do
187
+ config = PRC::BaseConfig.new
188
+ expect(config.data_options(:section => 'test')).to eq(:section => 'test')
189
+ end
190
+
191
+ it 'with any existing options set we replace it all.' do
192
+ config = PRC::BaseConfig.new
193
+ config.data_options(:section => 'test')
194
+ expect(config.data_options(:toto => 'tata')).to eq(:toto => 'tata')
195
+ end
196
+
197
+ it 'with :data_readonly => true, we cannot set a data.' do
198
+ config = PRC::BaseConfig.new(:test => 'toto')
199
+ config.data_options(:data_readonly => true)
200
+ config[:test] = 'titi'
201
+ expect(config.data).to eq(:test => 'toto')
202
+ end
203
+
204
+ it 'with :file_readonly => true, we cannot save data to a file.' do
205
+ config = PRC::BaseConfig.new(:test => 'toto')
206
+ file = '~/.rspec_test.yaml'
207
+ file_path = File.expand_path(file)
208
+ config.data_options(:file_readonly => true)
209
+ system('rm -f ~/.rspec_test.yaml')
210
+ expect(config.save(file)).to equal(false)
211
+ expect(config.filename).to equal(nil)
212
+ expect { config.load(file) }.to raise_error
213
+ expect(config.filename).to eq(file_path)
214
+ end
215
+ end
216
+ end
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ # require 'byebug'
19
+
20
+ $LOAD_PATH << File.join('..', 'lib')
21
+
22
+ require 'rh.rb'
23
+ require 'prc.rb'
24
+ require 'prc_base_config.rb'
25
+ require 'prc_core_config.rb'
26
+
27
+ describe 'class: PRC::CoreConfig,' do
28
+ context 'when creating a new instance' do
29
+ before(:all) do
30
+ @config = PRC::CoreConfig.new
31
+ end
32
+
33
+ it 'should be loaded' do
34
+ expect(@config).to be
35
+ end
36
+
37
+ it 'runtime set works' do
38
+ expect(@config[:test] = :toto).to eq(:toto)
39
+ expect(@config.exist?(:test)).to eq(true)
40
+ expect(@config[:test]).to eq(:toto)
41
+ end
42
+ end
43
+
44
+ context 'from a child class, with local layer set to :test => :found_local'\
45
+ ' and runtime layer' do
46
+ before(:all) do
47
+ # Child class definition for rSpec.
48
+ class Test1 < PRC::CoreConfig
49
+ def initialize
50
+ local = PRC::BaseConfig.new(:test => :found_local)
51
+ layers = []
52
+ layers << PRC::CoreConfig.define_layer(:name => 'local',
53
+ :config => local)
54
+ layers << PRC::CoreConfig.define_layer # runtime
55
+
56
+ initialize_layers(layers)
57
+ end
58
+ end
59
+ @config = Test1.new
60
+ end
61
+
62
+ it 'should be loaded' do
63
+ expect(@config).to be
64
+ expect(@config.layers).to eq(%w(runtime local))
65
+ end
66
+
67
+ it 'config.where?(:test) should be ["local"]' do
68
+ expect(@config.where?(:test)).to eq(['local'])
69
+ end
70
+
71
+ it 'config.[:test] = :where set in "runtime".' do
72
+ expect(@config[:test] = :where).to eq(:where)
73
+ expect(@config.where?(:test)).to eq(%w(runtime local))
74
+ expect(@config[:test]).to equal(:where)
75
+ end
76
+
77
+ it 'config.del(:test) remove the data from runtime, '\
78
+ 'and restore from local.' do
79
+ expect(@config.del(:test)).to eq(:where)
80
+ expect(@config[:test]).to equal(:found_local)
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,263 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ app_path = File.dirname(__FILE__)
19
+
20
+ $LOAD_PATH << File.join('..', 'lib')
21
+
22
+ require 'lorj' # Load lorj framework
23
+
24
+ describe 'class: Lorj::Config,' do
25
+ context 'new instance, with no default local config files, ' do
26
+ before(:all) do
27
+ PrcLib.log_file = 'lorj-rspec.log'
28
+ PrcLib.level = Logger::FATAL
29
+ PrcLib.app_name = 'lorj-spec'
30
+ PrcLib.app_defaults = File.expand_path(File.join(app_path, '..',
31
+ 'lorj-spec'))
32
+ @local = File.join(PrcLib.data_path, 'config.yaml')
33
+ File.delete(@local) if File.exist?(@local)
34
+ end
35
+
36
+ it 'should be loaded' do
37
+ expect(File.exist?(@local)).to equal(false)
38
+ config = Lorj::Config.new
39
+ expect(config).to be
40
+ end
41
+ it 'local config file gets created.' do
42
+ expect(File.exist?(@local)).to equal(true)
43
+ end
44
+ it 'local config is empty.' do
45
+ expect(YAML.load_file(@local)).to eq(:default => nil)
46
+ end
47
+ end
48
+
49
+ context 'CoreConfig original functions,' do
50
+ before(:all) do
51
+ @config = Lorj::Config.new
52
+ end
53
+
54
+ it 'config.file return nil. (runtime)' do
55
+ expect(@config.file).to equal(nil)
56
+ end
57
+
58
+ it "config.file(nil, :name => 'local') return local config file." do
59
+ file = File.join(PrcLib.data_path, 'config.yaml')
60
+ expect(@config.file(nil, :name => 'local')).to eq(file)
61
+ end
62
+
63
+ it "config.file(nil, :name => 'default') return default "\
64
+ 'application file.' do
65
+ file = File.join(PrcLib.app_defaults, 'defaults.yaml')
66
+ expect(@config.file(nil, :name => 'default')).to eq(file)
67
+ end
68
+
69
+ it 'config.layers returns all config names.' do
70
+ expect(@config.layers).to eq(%w(runtime local default))
71
+ end
72
+
73
+ it 'config.where?(:test1) return false' do
74
+ expect(@config.where?(:test1)).to equal(false)
75
+ end
76
+
77
+ it 'config.exist?(:test1) returns false' do
78
+ expect(@config.exist?(:test1)).to equal(false)
79
+ end
80
+
81
+ it "config.where?(:maestro_url) return ['defaults'] "\
82
+ '(see lorj-spec/defaults.yaml)' do
83
+ expect(@config.where?(:maestro_url)).to eq(['default'])
84
+ end
85
+
86
+ it 'config.exist?(:maestro_url) returns true' do
87
+ expect(@config.exist?(:maestro_url)).to equal(true)
88
+ end
89
+ end
90
+
91
+ context 'redefined CoreConfig functions' do
92
+ before(:all) do
93
+ @config = Lorj::Config.new
94
+ end
95
+
96
+ it "config[:maestro_url] returns 'http://example.org'" do
97
+ expect(@config[:maestro_url]).to eq('http://example.org')
98
+ end
99
+
100
+ it "config.get(:maestro_url) returns 'http://example.org'" do
101
+ expect(@config.get(:maestro_url)).to eq('http://example.org')
102
+ end
103
+
104
+ it 'config[:test1, :none] returns :none' do
105
+ expect(@config[:test1, :none]).to equal(:none)
106
+ end
107
+
108
+ it "config[:maestro_url, :none] returns 'http://example.org'" do
109
+ expect(@config[:maestro_url, :none]).to eq('http://example.org')
110
+ end
111
+
112
+ it 'config[:maestro_url] = :none returns :none' do
113
+ expect(@config[:maestro_url] = :none).to eq(:none)
114
+ end
115
+
116
+ it 'config[:maestro_url, :none] returns :none' do
117
+ expect(@config[:maestro_url]).to eq(:none)
118
+ end
119
+
120
+ it 'config.where?(:maestro_url) returns [runtime, default]' do
121
+ expect(@config.where?(:maestro_url)).to eq(%w(runtime default))
122
+ end
123
+
124
+ it 'config.del(:maestro_url) returns :none' do
125
+ expect(@config.del(:maestro_url)).to eq(:none)
126
+ end
127
+ it 'config.where?(:maestro_url) now returns [default]' do
128
+ expect(@config.where?(:maestro_url)).to eq(%w(default))
129
+ end
130
+
131
+ it 'config.set(:maestro_url, :none) is equivalent as '\
132
+ 'config[:maestro_url] = :none' do
133
+ expect(@config.set(:maestro_url, :none)).to eq(:none)
134
+ expect(@config.where?(:maestro_url)).to eq(%w(runtime default))
135
+ end
136
+ end
137
+
138
+ context 'Lorj::Config specific functions' do
139
+ before(:all) do
140
+ @config = Lorj::Config.new
141
+ end
142
+
143
+ it 'config.config_filename is identical than '\
144
+ "config.file(nil, :name => 'local')" do
145
+ file = @config.file(nil, :name => 'local')
146
+ expect(@config.config_filename).to eq(file)
147
+ end
148
+
149
+ it "config.config_filename('default') is identical than "\
150
+ "config.file(nil, :name => 'default')" do
151
+ file = @config.file(nil, :name => 'default')
152
+ expect(@config.config_filename('default')).to eq(file)
153
+ end
154
+
155
+ it "config.file('test2.yaml', 'runtime') returns false - not authorized." do
156
+ expect(@config.file('test2.yaml', :name => 'runtime')).to equal(false)
157
+ expect(@config.config_filename('runtime')).to equal(nil)
158
+ end
159
+
160
+ it "config.file('test2.yaml', 'local') returns false - not authorized." do
161
+ expect(@config.file('test2.yaml', :name => 'local')).to equal(false)
162
+ file = File.join(PrcLib.data_path, 'config.yaml')
163
+ expect(@config.config_filename).to eq(file)
164
+ end
165
+
166
+ it "config.file('test2.yaml', 'default') returns false - not authorized." do
167
+ expect(@config.file('test2.yaml', :name => 'default')).to equal(false)
168
+ file = File.join(PrcLib.app_defaults, 'defaults.yaml')
169
+ expect(@config.config_filename('default')).to eq(file)
170
+ end
171
+
172
+ it 'config.local_exist?(:test1) returns false' do
173
+ expect(@config.local_exist?(:test1)).to equal(false)
174
+ end
175
+
176
+ it "config.local_set(:test1, 'value') returns 'value' and saved in"\
177
+ " 'local' config" do
178
+ expect(@config.local_set(:test1, 'value')).to eq('value')
179
+ expect(@config.where?(:test1)).to eq(%w(local))
180
+ end
181
+
182
+ it 'config.local_exist?(:test1) returns true' do
183
+ expect(@config.local_exist?(:test1)).to equal(true)
184
+ end
185
+
186
+ it "config.local_get(:test1) returns 'value'" do
187
+ expect(@config.local_get(:test1)).to eq('value')
188
+ end
189
+
190
+ it 'config.save_local_config returns true and is really saved.' do
191
+ config = Lorj::Config.new
192
+ expect(config.where?(:test1)).to equal(false)
193
+ expect(@config.save_local_config).to equal(true)
194
+ config2 = Lorj::Config.new
195
+ expect(config2.where?(:test1)).to eq(%w(local))
196
+ end
197
+
198
+ it "config.local_del(:test1) returns 'value'" do
199
+ expect(@config.local_del(:test1)).to eq('value')
200
+ expect(@config.where?(:test1)).to equal(false)
201
+ end
202
+
203
+ it 'default_dump return all in a Hash' do
204
+ default_file = @config.config_filename('default')
205
+ default = YAML.load_file(default_file)
206
+
207
+ res = { 'local' => { :default => {} },
208
+ 'default' => default
209
+ }
210
+
211
+ expect(@config.config_dump).to eq(res)
212
+ end
213
+
214
+ it 'config.get_section(:maestro_url) returns :maestro' do
215
+ expect(@config.get_section(:maestro_url)).to equal(:maestro)
216
+ end
217
+
218
+ it 'config.get_section(:test1, :default) returns :default' do
219
+ expect(@config.get_section(:test1)).to equal(nil)
220
+ end
221
+
222
+ it 'config.runtime_exist?(:test1) returns false - no :test1 available in '\
223
+ 'runtime.' do
224
+ expect(@config.runtime_exist?(:test1)).to equal(false)
225
+ end
226
+
227
+ context 'setting :test1 => :value,' do
228
+ before(:all) do
229
+ @config[:test1] = :value
230
+ end
231
+ it 'config.runtime_get(:test1) returns :value' do
232
+ expect(@config.runtime_get(:test1)).to equal(:value)
233
+ end
234
+ it 'config.runtime_exist?(:test1) returns true' do
235
+ expect(@config.runtime_exist?(:test1)).to equal(true)
236
+ end
237
+ end
238
+ context 'app default functions' do
239
+ before(:all) do
240
+ default_file = @config.config_filename('default')
241
+ @default = YAML.load_file(default_file)
242
+ end
243
+ it 'config.app_default(:default) returns :default of defaults.yaml' do
244
+ expect(@config.app_default(:default)).to eq(@default[:default])
245
+ end
246
+
247
+ it 'config.app_default(:sections) returns :section of defaults.yaml' do
248
+ expect(@config.app_default(:sections)).to eq(@default[:sections])
249
+ end
250
+ it 'config.meta_each provides the wanted list of section/key/values' do
251
+ # The defaults.yaml MUST have data exclusive set to true
252
+ expect(@default.rh_get(:sections, :credentials, :data,
253
+ :account_exclusive)).to equal(true)
254
+ @config.meta_each do | section, key, value |
255
+ expect(@default.rh_exist?(:sections, section, key)).to equal(true)
256
+ expect(@default.rh_get(:sections, section, key)).to equal(value)
257
+ expect([section, key,
258
+ value]).not_to eq([:sections, :credentials, :data])
259
+ end
260
+ end
261
+ end
262
+ end
263
+ end