tools 0.4.4 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_log_A
8
+ ToolsFiles.remove_file (File.dirname __dir__) + '/teste.log'
9
+ ToolsLog.create_log_file 'test', (File.dirname __dir__) + '/teste.log'
10
+ ToolsLog.create_log_file 'test', (File.dirname __dir__) + '/teste.log'
11
+ FileUtils.touch (File.dirname __dir__) + '/teste.log', :mtime => (Time.now - 86400)
12
+ ToolsLog.test_info 'Minitest.: test_log'
13
+ ToolsLog.test_warn 'Minitest.: test_log'
14
+ ToolsLog.test_error 'Minitest.: test_log'
15
+ ToolsLog.test_debug 'Minitest.: test_log'
16
+ ToolsLog.test_ucolor 'Minitest.: test_log'
17
+ ToolsLog.test_ucolorx 'Minitest.: test_log'
18
+ ToolsFiles.remove_file (File.dirname __dir__) + '/teste.log'
19
+ end
20
+
21
+ end
@@ -0,0 +1,223 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_net_A_ping?
8
+ assert_equal (ToolsNet.ping? '127.0.0.1'), true
9
+ end
10
+
11
+ def test_net_B_work_with_ips
12
+ ip = ToolsNet.get_current_ip
13
+ assert_equal (ToolsNet.valid_ip? ip), true
14
+ assert_equal (ToolsNet.validate_ipaddress ip)[:status], true
15
+ assert_equal (ToolsNet.validate_ipaddress ip)[:type], 'ip'
16
+ assert_equal (ToolsNet.validate_ipaddress '100.0.0.0/28')[:status], true
17
+ assert_equal (ToolsNet.validate_ipaddress '100.0.0.0/28')[:type], 'mask'
18
+ assert_equal (ToolsNet.validate_ipaddress ip+'x')[:status], false
19
+ assert_equal (ToolsNet.validate_ipaddress '100.0.0.0/28x')[:status], false
20
+ assert_equal (ToolsNet.is_backend? '10.1.2.3'), true
21
+ assert_equal (ToolsNet.is_backend? '201.0.0.1'), false
22
+ assert_equal (ToolsNet.valid_network? ip), false
23
+ assert_equal (ToolsNet.valid_network? '110.0.0.0/28'), true
24
+ assert_equal (ToolsNet.resolv_dns 'www.wikipedia.org'), "208.80.154.224"
25
+ assert_nil (ToolsNet.resolv_dns 'www.wikipedia.orgx')
26
+ assert_equal (ToolsNet.resolv_ip_name "208.80.154.224"), "text-lb.eqiad.wikimedia.org"
27
+ assert_equal (ToolsNet.resolv_ip_name "208.80.154.224x"), "cannot interpret as address: 208.80.154.224x"
28
+ end
29
+
30
+ def test_net_C_valid_port
31
+ assert_equal (ToolsNet.valid_port? 8888), true
32
+ assert_equal (ToolsNet.valid_port? -1), false
33
+ assert_equal (ToolsNet.valid_port? 0), false
34
+ assert_equal (ToolsNet.valid_port? 100000), false
35
+ end
36
+
37
+
38
+ def test_net_D_doreq
39
+ resource = RestClient::Resource.new('www.google.com')
40
+ validate_opts = {quit_on_error: false}
41
+ method_opts = {}
42
+ params={:method => :get}
43
+ uri = ''
44
+ if params.has_key? :expected
45
+ validate_opts[:expected] = params[:expected]
46
+ end
47
+ if params.has_key? :data
48
+ method_opts = {:data => params[:data].to_json}
49
+ end
50
+ result = ToolsNet.doreq resource,
51
+ uri,
52
+ params[:method],
53
+ show_progress: true,
54
+ method_opts: method_opts,
55
+ validate_opts: validate_opts,
56
+ retry_opts: {
57
+ attempts: 1,
58
+ when_res: [nil, [], {}, ''],
59
+ when_code: []}
60
+ assert_equal result.code, 200
61
+ end
62
+
63
+
64
+ end
65
+
66
+
67
+
68
+
69
+ # # Resolv a ip to a dns.
70
+ # #
71
+ # # @param ip variable ip to resolv
72
+ # # @return [String] Dns name resolved
73
+ # def self.resolv_ip_name ip
74
+ # s = ''
75
+ # begin
76
+ # ret = Resolv.new.getname(ip)
77
+ # return ret.instance_variable_get('@labels').join('.')
78
+ # rescue Exception => e
79
+ # case e.message
80
+ # when "Dnsruby::NXDomain"
81
+ # return nil
82
+ # else
83
+ # return e.message
84
+ # end
85
+ # end
86
+ # return s.strip
87
+ # end
88
+
89
+
90
+ # # Resolv a dns to a ip.
91
+ # #
92
+ # # @param domain variable ip to resolv
93
+ # # @return [String] Dns address resolved
94
+ # def self.resolv_dns domain
95
+ # begin
96
+ # dns = Dnsruby::DNS.new()
97
+ # ret = dns.getaddress(domain).to_s
98
+ # rescue Exception => e
99
+ # case e.message
100
+ # when "Dnsruby::NXDomain"
101
+ # return nil
102
+ # else
103
+ # return e.message
104
+ # end
105
+ # end
106
+ # return ret
107
+ # end
108
+
109
+
110
+ # # Do the request, validate and decode response and do the retries if needed
111
+ # #
112
+ # # - restclient_obj: initialized RestClient object
113
+ # # - path: URL path to request
114
+ # # - method: symbol for HTTP Method to request
115
+ # # - method_opts: options as passed to a RestClient call
116
+ # # - validate_opts: options for response validation as used with
117
+ # # validate_decode_response()
118
+ # # - retry_opts: when_res: [nil, [], {}, 'str'], when_code: [404, 500],
119
+ # # conditionals to retry even if no exceptions were catched
120
+ # # @param restclient_obj Rest Object
121
+ # # @param path path
122
+ # # @param method method
123
+ # # @param method_opts method opts
124
+ # # @param validate_opts validate opts
125
+ # # @param retry_opts retry opts
126
+ # # @param show_progress default false
127
+ # def self.doreq( restclient_obj, path, method, method_opts: {},validate_opts: {}, retry_opts: {}, show_progress: false)
128
+ # res = nil
129
+ # code = nil
130
+ # data = method_opts.fetch(:data, nil)
131
+ # method_opts.delete(:data)
132
+
133
+ # # Retry loop due to:
134
+ # # - 404 from Router API right after applying patch over a target
135
+ # # - Intermittent connection reset from Manager API (HTTPS)
136
+ # retries = retry_opts.fetch(:attempts, 10)
137
+ # 1.upto(retries) do |try|
138
+ # flag_error = false
139
+ # # The request
140
+ # begin
141
+ # restclient_obj[path].send(method, *data, **method_opts) do |response, request, result|
142
+ # res = validate_decode_response(response, request, result, validate_opts)
143
+ # code = result.code.to_i
144
+ # end
145
+ # rescue Exception => error
146
+ # flag_error = true
147
+ # end
148
+ # # Other conditionals to retry
149
+ # unless retry_opts.empty?
150
+ # if retry_opts.has_key?(:when_res)
151
+ # flag_error = true if retry_opts[:when_res].include?(res)
152
+ # end
153
+ # if retry_opts.has_key?(:when_code)
154
+ # flag_error = true if retry_opts[:when_code].include?(code)
155
+ # end
156
+ # end
157
+ # return res unless flag_error # got response, break the loop
158
+ # doReqMSG = sprintf "%d/%d", try, retries
159
+ # if show_progress
160
+ # ap doReqMSG
161
+ # end
162
+ # if try >= retries
163
+ # ap doreq_code
164
+ # return nil
165
+ # else
166
+ # sleep 1 # wait before next
167
+ # end
168
+ # end
169
+ # end
170
+
171
+ # # Return a valid decode response.
172
+ # #
173
+ # # @param response
174
+ # # @param request
175
+ # # @param result
176
+ # # @param validate_opts
177
+ # # @return [Object type] Array or Proc or String or Error
178
+ # def self.validate_decode_response response, request, result, validate_opts
179
+ # if validate_opts.has_key? :expected
180
+ # expected = validate_opts[:expected]
181
+ # case expected.class.name
182
+ # when 'Array'
183
+ # if validate_opts[:expected].include? response
184
+ # return true
185
+ # else
186
+ # return false
187
+ # end
188
+ # when 'Proc'
189
+ # response = expected.call(response, request, result)
190
+ # return response
191
+ # when 'String'
192
+ # return result if validate_opts[:expected].eql? 'result'
193
+ # return request if validate_opts[:expected].eql? 'request'
194
+ # return response if validate_opts[:expected].eql? 'response'
195
+ # else
196
+ # ap expected.class.name
197
+ # return response
198
+ # end
199
+ # else
200
+ # return response
201
+ # end
202
+ # return true
203
+ # end
204
+
205
+
206
+ # # Validate.: port number between valid range?.
207
+ # #
208
+ # # @param port number to be validate.
209
+ # # @return [Boolean]
210
+ # def self.valid_port? port
211
+ # if port.to_s.strip.match(/^\d{1,5}(?!\d)$/).nil?
212
+ # return false
213
+ # end
214
+ # unless port.to_i.between?(1, 65535)
215
+ # return false
216
+ # end
217
+ # return true
218
+ # end
219
+
220
+
221
+
222
+
223
+
@@ -0,0 +1,35 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_object_A_boolean?
8
+ test = true
9
+ assert_equal test.boolean?, true
10
+ end
11
+
12
+ def test_object_B_true?
13
+ test = true
14
+ assert_equal test.true?, true
15
+ end
16
+
17
+ def test_object_C_false?
18
+ test = false
19
+ assert_equal test.false?, true
20
+ end
21
+
22
+ def test_object_D_symbol?
23
+ test = :true
24
+ assert_equal test.symbol?, true
25
+ end
26
+
27
+ def test_object_E_string?
28
+ test = 'string'
29
+ assert_equal test.string?, true
30
+ end
31
+
32
+ end
33
+
34
+
35
+
@@ -0,0 +1,82 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_prompt_A_yes?
8
+ mock = MiniTest::Mock.new
9
+ def mock.yes? *args; true; end
10
+ TTY::Prompt.stub :new, mock do
11
+ assert_equal (ToolsPrompt.yes? 'Continue'), true
12
+ end
13
+ end
14
+
15
+ def test_prompt_B_no?
16
+ mock = MiniTest::Mock.new
17
+ def mock.no? *args; true; end
18
+ TTY::Prompt.stub :new, mock do
19
+ assert_equal (ToolsPrompt.no? 'Continue'), true
20
+ end
21
+ end
22
+
23
+ def test_prompt_C_ask
24
+ mock = MiniTest::Mock.new
25
+ def mock.ask *args; 'teste'; end
26
+ TTY::Prompt.stub :new, mock do
27
+ assert_equal (ToolsPrompt.ask 'Name'), 'teste'
28
+ end
29
+ end
30
+
31
+ def test_prompt_D_mask
32
+ mock = MiniTest::Mock.new
33
+ def mock.mask *args; 'teste'; end
34
+ TTY::Prompt.stub :new, mock do
35
+ assert_equal (ToolsPrompt.mask 'Name'), 'teste'
36
+ end
37
+ end
38
+
39
+ def test_prompt_E_expand
40
+ mock = MiniTest::Mock.new
41
+ def mock.expand *args; :yes; end
42
+ TTY::Prompt.stub :new, mock do
43
+ choices = [{
44
+ key: 'Y',
45
+ name: 'Overwrite',
46
+ value: :yes
47
+ }, {
48
+ key: 'n',
49
+ name: 'Skip',
50
+ value: :no
51
+ }]
52
+ assert_equal (ToolsPrompt.expand 'Overwirte Gemfile?', choices), :yes
53
+ end
54
+ end
55
+
56
+ def test_prompt_F_select
57
+ mock = MiniTest::Mock.new
58
+ def mock.select *args; 'vodka'; end
59
+ TTY::Prompt.stub :new, mock do
60
+ assert_equal (ToolsPrompt.select "Select drinks?", 'vodka', 'beer'), 'vodka'
61
+ end
62
+ end
63
+
64
+
65
+ def test_prompt_G_multi_select
66
+ mock = MiniTest::Mock.new
67
+ def mock.multi_select *args; 'vodka'; end
68
+ TTY::Prompt.stub :new, mock do
69
+ assert_equal (ToolsPrompt.multi_select "Select drinks?", 'vodka', 'beer'), 'vodka'
70
+ end
71
+ end
72
+
73
+ def test_prompt_G_enum_select
74
+ mock = MiniTest::Mock.new
75
+ def mock.enum_select *args; 'vodka'; end
76
+ TTY::Prompt.stub :new, mock do
77
+ assert_equal (ToolsPrompt.enum_select "Select drinks?", 'vodka', 'beer'), 'vodka'
78
+ end
79
+ end
80
+
81
+
82
+ end
@@ -0,0 +1,48 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_string_A_fix
8
+ assert_equal "TESTE".fix(10,'xy'), 'xyxyxTESTE'
9
+ assert_equal "TESTE".fix(-10,'xy'), 'TESTExyxyx'
10
+ end
11
+
12
+ def test_string_B_encrypt_decrypt
13
+ msg = "teste do encrypt"
14
+ passwd = 'tools999'
15
+ encrypted = msg.encrypt passwd
16
+ assert_equal msg, (encrypted.decrypt passwd)
17
+ end
18
+
19
+ def test_string_C_numeric?
20
+ assert_equal true, "100".numeric?
21
+ assert_equal false, "xx".numeric?
22
+ end
23
+
24
+ def test_string_D_num?
25
+ assert_equal true, "100".num?
26
+ assert_equal false, "xx".num?
27
+ end
28
+
29
+ def test_string_E_alnum?
30
+ assert_equal true, "1x0".alnum?
31
+ assert_equal true, "1xx".alnum?
32
+ end
33
+
34
+ def test_string_F_alpha?
35
+ assert_equal false, "100".alpha?
36
+ assert_equal true, "xx".alpha?
37
+ end
38
+
39
+ def test_string_G_help?
40
+ assert_equal true, '?'.help?
41
+ assert_equal true, '-h'.help?
42
+ assert_equal true, '--help'.help?
43
+ assert_equal true, 'help'.help?
44
+ assert_equal false, 'eelp'.help?
45
+ end
46
+
47
+ end
48
+
@@ -0,0 +1,96 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_utils_A_symbolize_keys
8
+ hash = {'key' => 1, :key1 => 'A', :key3 => {:k1 => 1}}
9
+ hash = ToolsUtil.symbolize_keys(hash)
10
+ assert_equal hash, {:key => 1, :key1 => 'A', :key3 => {:k1 => 1}}
11
+ end
12
+
13
+ def test_utils_C_valid_json_true?
14
+ data = {:k1 => "v1", :k2 => "v2"}.to_json
15
+ assert_equal true, (ToolsUtil.valid_json? data)
16
+ end
17
+
18
+ def test_utils_D_valid_json_error?
19
+ data = {:k1 => "v1", :k2 => "v2"}.to_json + "error"
20
+ assert_equal false, (ToolsUtil.valid_json? data)
21
+ end
22
+
23
+ def test_utils_E_valid_yaml_true?
24
+ data = {:k1 => "v1", :k2 => "v2"}.to_yaml
25
+ assert_equal true, (ToolsUtil.valid_yaml? data)
26
+ end
27
+
28
+ def test_utils_F_valid_yaml_error?
29
+ data = {:k1 => "v1", :k2 => "v2"}.to_yaml + "error"
30
+ assert_equal false, (ToolsUtil.valid_yaml? data)
31
+ end
32
+
33
+ def test_utils_G_get_date
34
+ now = DateTime.now
35
+ (ToolsUtil.get_date '%Y %m %d %H %M').split(' ').each do |d|
36
+ assert_equal (now.to_s.include? d), true
37
+ end
38
+ end
39
+
40
+ def test_utils_H_set_get_variable
41
+ ToolsUtil.set_variable 'teste', 'A'
42
+ assert_equal (ToolsUtil.get_variable 'teste'), 'A'
43
+ end
44
+
45
+ def test_utils_I_set_get_variable_ext
46
+ ToolsUtil.set_variable 'teste_string', ""
47
+ ToolsUtil.set_variable 'teste_array', []
48
+ ToolsUtil.set_variable 'teste_hash', {}
49
+ ToolsUtil.set_variable_ext 'teste_string', "A"
50
+ ToolsUtil.set_variable_ext 'teste_array', "1"
51
+ ToolsUtil.set_variable_ext 'teste_hash', {:teste => 'teste'}
52
+ ToolsUtil.set_variable_ext 'teste_hash_error', []
53
+ assert_equal (ToolsUtil.get_variable 'teste_string'), 'A'
54
+ assert_equal (ToolsUtil.get_variable 'teste_array'), ['1']
55
+ assert_equal (ToolsUtil.get_variable 'teste_hash'), {:teste => 'teste'}
56
+ assert_nil (ToolsUtil.get_variable 'teste_hash_error')
57
+ end
58
+
59
+ def test_utils_K_get_variables
60
+ ToolsUtil.set_variable 'teste', 'A'
61
+ assert_equal ToolsUtil.get_variables.class, Array
62
+ end
63
+
64
+ def test_utils_L_get_plain_text
65
+ data = {
66
+ 'k1' => 100,
67
+ 'k2' => 'v2'
68
+ }
69
+ assert_equal (ToolsUtil.get_plain_text data), "{\n \"k1\" => 100,\n \"k2\" => \"v2\"\n}\n"
70
+ assert_equal (ToolsUtil.get_plain_text "TEST"), "\t\e[0;33;49mTEST\e[0m"
71
+ assert_equal (ToolsUtil.get_plain_text true), true
72
+ assert_nil (ToolsUtil.get_plain_text nil)
73
+ end
74
+
75
+ def test_utils_M_get_tools_variables
76
+ assert_equal Tools.root, (File.dirname __dir__)
77
+ assert_equal Tools.files, (File.join (File.dirname __dir__), 'lib/files')
78
+ assert_equal Tools.host, Socket.gethostname
79
+ assert_equal Tools.home, ENV['HOME']
80
+ assert_equal Tools.user, ENV['USER']
81
+ assert_equal Tools.pwd, ENV['PWD']
82
+ assert_equal Tools.ldap_pass, ENV['ldap_pass']
83
+ assert_equal Tools.ldap_user, ENV['ldap_user']
84
+ assert_equal Tools.gem_path, ENV['GEM_PATH']
85
+ end
86
+
87
+
88
+ # def test_utils_N_instance
89
+ # mock = MiniTest::Mock.new
90
+ # def mock.initialize *args; true; end
91
+ # ToolsUtil.stub :initialize, mock do
92
+ # assert_equal (ToolsUtil.new), true
93
+ # end
94
+ # end
95
+
96
+ end