tools 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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