kanrisuru 0.9.1 → 0.11.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/CONTRIBUTING.md +9 -9
- data/.github/ISSUE_TEMPLATE/bug_report.md +7 -8
- data/.gitignore +3 -1
- data/CHANGELOG.md +151 -130
- data/CODE_OF_CONDUCT.md +10 -10
- data/README.md +8 -3
- data/kanrisuru.gemspec +2 -1
- data/lib/kanrisuru/core/archive.rb +6 -5
- data/lib/kanrisuru/core/disk.rb +0 -3
- data/lib/kanrisuru/core/dmi.rb +1 -1
- data/lib/kanrisuru/core/file.rb +2 -2
- data/lib/kanrisuru/core/find.rb +4 -5
- data/lib/kanrisuru/core/socket.rb +2 -1
- data/lib/kanrisuru/core/stream.rb +1 -1
- data/lib/kanrisuru/core/zypper.rb +3 -3
- data/lib/kanrisuru/remote/cpu.rb +5 -1
- data/lib/kanrisuru/remote/env.rb +8 -0
- data/lib/kanrisuru/remote/fstab.rb +4 -4
- data/lib/kanrisuru/util.rb +1 -1
- data/lib/kanrisuru/version.rb +1 -1
- data/spec/functional/core/apt_spec.rb +22 -30
- data/spec/functional/core/archive_spec.rb +169 -0
- data/spec/functional/core/find_spec.rb +94 -113
- data/spec/functional/core/socket_spec.rb +23 -28
- data/spec/functional/core/stream_spec.rb +12 -12
- data/spec/functional/core/transfer_spec.rb +108 -131
- data/spec/functional/core/yum_spec.rb +58 -83
- data/spec/functional/remote/cluster_spec.rb +12 -3
- data/spec/functional/remote/cpu_spec.rb +104 -0
- data/spec/functional/remote/env_spec.rb +48 -0
- data/spec/helper/stub_network.rb +57 -14
- data/spec/integration/core/file_spec.rb +0 -1
- data/spec/integration/core/find_spec.rb +1 -0
- data/spec/integration/core/system_spec.rb +0 -1
- data/spec/integration/core/zypper_spec.rb +3 -3
- data/spec/{functional → integration}/os_package_spec.rb +0 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/unit/command_spec.rb +31 -0
- data/spec/unit/core/apt_spec.rb +20 -0
- data/spec/unit/core/archive_spec.rb +20 -0
- data/spec/unit/core/disk_spec.rb +23 -0
- data/spec/unit/core/dmi_spec.rb +20 -0
- data/spec/unit/core/file_spec.rb +35 -0
- data/spec/unit/core/find_spec.rb +21 -1
- data/spec/unit/core/group_spec.rb +24 -0
- data/spec/unit/core/ip_spec.rb +20 -0
- data/spec/unit/core/path_spec.rb +25 -0
- data/spec/unit/core/socket_spec.rb +20 -0
- data/spec/unit/core/stat_spec.rb +27 -0
- data/spec/unit/core/system_spec.rb +35 -0
- data/spec/unit/core/transfer_spec.rb +22 -0
- data/spec/unit/core/user_spec.rb +25 -0
- data/spec/unit/core/yum_spec.rb +20 -0
- data/spec/unit/core/zypper_spec.rb +20 -0
- data/spec/unit/mode_spec.rb +33 -2
- data/spec/unit/remote/cluster_spec.rb +36 -0
- data/spec/unit/remote/cpu_spec.rb +3 -4
- data/spec/unit/remote/env_spec.rb +17 -0
- data/spec/unit/{fstab_spec.rb → remote/fstab_spec.rb} +0 -0
- data/spec/unit/util_spec.rb +13 -0
- metadata +26 -5
@@ -0,0 +1,104 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Kanrisuru::Remote::Cpu do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'with metal' do
|
15
|
+
let(:host) do
|
16
|
+
Kanrisuru::Remote::Host.new(
|
17
|
+
host: 'metal-host',
|
18
|
+
username: 'ubuntu',
|
19
|
+
keys: ['id_rsa']
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
23
|
+
before do
|
24
|
+
StubNetwork.stub_command!(:lscpu) do |_args|
|
25
|
+
struct = Kanrisuru::Core::System::CPUArchitecture.new
|
26
|
+
struct.architecture = 'x86_64'
|
27
|
+
struct.cores = 48
|
28
|
+
struct.byte_order = 'Little Endian'
|
29
|
+
struct.address_sizes = ['46 bits physical', '48 bits virtual']
|
30
|
+
struct.operation_modes = %w[32-bit 64-bit]
|
31
|
+
struct.online_cpus = 0
|
32
|
+
struct.threads_per_core = 2
|
33
|
+
struct.cores_per_socket = 12
|
34
|
+
struct.sockets = 2
|
35
|
+
struct.numa_mode = nil
|
36
|
+
struct.vendor_id = 'GenuineIntel'
|
37
|
+
struct.cpu_family = 6
|
38
|
+
struct.model = 63
|
39
|
+
struct.model_name = 'Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz'
|
40
|
+
struct.stepping = 2
|
41
|
+
struct.cpu_mhz = 1200.16
|
42
|
+
struct.cpu_max_mhz = 3300.0
|
43
|
+
struct.cpu_min_mhz = 1200.0
|
44
|
+
struct.bogo_mips = nil
|
45
|
+
struct.virtualization = 'VT-x'
|
46
|
+
struct.hypervisor_vendor = nil
|
47
|
+
struct.virtualization_type = nil
|
48
|
+
struct.l1d_cache = '768 KiB'
|
49
|
+
struct.l1i_cache = '768 KiB'
|
50
|
+
struct.l2_cache = '6 MiB'
|
51
|
+
struct.l3_cache = '60 MiB'
|
52
|
+
struct.numa_nodes = 2
|
53
|
+
struct.vulnerabilities = [
|
54
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Itlb multihit',
|
55
|
+
'KVM: Mitigation: Split huge pages'),
|
56
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('L1tf',
|
57
|
+
'Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable'),
|
58
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Mds',
|
59
|
+
'Mitigation; Clear CPU buffers; SMT vulnerable'),
|
60
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Meltdown', 'Mitigation; PTI'),
|
61
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Spec store bypass',
|
62
|
+
'Mitigation; Speculative Store Bypass disabled via prctl and seccomp'),
|
63
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Spectre v1',
|
64
|
+
'Mitigation; usercopy/swapgs barriers and __user pointer sanitization'),
|
65
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Spectre v2',
|
66
|
+
'Mitigation; Full generic retpoline, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling'),
|
67
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Srbds', 'Not affected'),
|
68
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Tsx async abort', 'Not affected')
|
69
|
+
]
|
70
|
+
struct.flags = %w[fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
|
71
|
+
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti intel_ppin ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc dtherm ida arat pln pts md_clear flush_l1d]
|
72
|
+
struct
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
after do
|
77
|
+
StubNetwork.unstub_command!(:lscpu)
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'gets host cpu attributes' do
|
81
|
+
expect(host.cpu.architecture).to eq('x86_64')
|
82
|
+
expect(host.cpu.cores).to eq(48)
|
83
|
+
expect(host.cpu.byte_order).to eq('Little Endian')
|
84
|
+
expect(host.cpu.address_sizes).to eq(['46 bits physical', '48 bits virtual'])
|
85
|
+
expect(host.cpu.threads_per_core).to eq(2)
|
86
|
+
expect(host.cpu.cores_per_socket).to eq(12)
|
87
|
+
expect(host.cpu.sockets).to eq(2)
|
88
|
+
expect(host.cpu.vendor_id).to eq('GenuineIntel')
|
89
|
+
expect(host.cpu.cpu_family).to eq(6)
|
90
|
+
expect(host.cpu.model).to eq(63)
|
91
|
+
expect(host.cpu.model_name).to eq('Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz')
|
92
|
+
expect(host.cpu.cpu_mhz).to eq(1200.16)
|
93
|
+
expect(host.cpu.cpu_max_mhz).to eq(3300.0)
|
94
|
+
expect(host.cpu.cpu_min_mhz).to eq(1200.0)
|
95
|
+
expect(host.cpu.hypervisor).to be_nil
|
96
|
+
expect(host.cpu.virtualization_type).to be_nil
|
97
|
+
# expect(host.cpu.l1d_cache).to eq("768 KiB")
|
98
|
+
# expect(host.cpu.l1i_cache).to eq("768 KiB")
|
99
|
+
# expect(host.cpu.l2_cache).to eq("6 MiB")
|
100
|
+
# expect(host.cpu.l3_cache).to eq("60 MiB")
|
101
|
+
expect(host.cpu.numa_nodes).to eq(2)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Kanrisuru::Remote::Env do
|
6
|
+
let(:env) { described_class.new }
|
7
|
+
|
8
|
+
it 'adds a environment variable' do
|
9
|
+
env['VAR1'] = 'hello'
|
10
|
+
expect(env.count).to eq(1)
|
11
|
+
expect(env.to_h).to eq({ 'VAR1' => 'hello' })
|
12
|
+
expect(env.to_s).to eq('export VAR1=hello;')
|
13
|
+
expect(env['VAR1']).to eq('hello')
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'adds multiple environment variables' do
|
17
|
+
env['var1'] = 'hello'
|
18
|
+
env['var2'] = 'world'
|
19
|
+
|
20
|
+
expect(env.count).to eq(2)
|
21
|
+
expect(env.to_h).to eq({ 'VAR1' => 'hello', 'VAR2' => 'world' })
|
22
|
+
expect(env.to_s).to eq('export VAR1=hello; export VAR2=world;')
|
23
|
+
expect(env['VAR1']).to eq('hello')
|
24
|
+
expect(env['VAR2']).to eq('world')
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'deletes a variable' do
|
28
|
+
env[:var1] = 'foo'
|
29
|
+
expect(env.count).to eq(1)
|
30
|
+
expect(env[:var1]).to eq('foo')
|
31
|
+
env.delete(:var1)
|
32
|
+
expect(env.count).to eq(0)
|
33
|
+
expect(env.to_s).to eq('')
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'clears the environment' do
|
37
|
+
env['VERSION'] = 1
|
38
|
+
env['SHELL'] = '/bin/zsh'
|
39
|
+
env['USER'] = 'ubuntu'
|
40
|
+
env['HOSTNAME'] = 'ubuntu'
|
41
|
+
expect(env.to_s).to eq('export VERSION=1; export SHELL=/bin/zsh; export USER=ubuntu; export HOSTNAME=ubuntu;')
|
42
|
+
|
43
|
+
expect(env.count).to eq(4)
|
44
|
+
env.clear
|
45
|
+
|
46
|
+
expect(env.count).to eq(0)
|
47
|
+
end
|
48
|
+
end
|
data/spec/helper/stub_network.rb
CHANGED
@@ -17,7 +17,7 @@ class StubNetwork
|
|
17
17
|
|
18
18
|
unless Kanrisuru::Remote::Os.instance_methods(false).include?(:initialize_alias)
|
19
19
|
Kanrisuru::Remote::Os.class_eval do
|
20
|
-
alias_method :initialize_alias, :initialize
|
20
|
+
alias_method :initialize_alias, :initialize
|
21
21
|
define_method :initialize do |host|
|
22
22
|
@host = host
|
23
23
|
|
@@ -32,30 +32,67 @@ class StubNetwork
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
return if Kanrisuru::Result.instance_methods(false).include?(:initialize_alias)
|
36
|
+
|
37
|
+
Kanrisuru::Result.class_eval do
|
38
|
+
alias_method :initialize_alias, :initialize
|
39
|
+
def initialize(command, parse_result = false, &block)
|
40
|
+
@command = command
|
41
|
+
@data = nil
|
42
|
+
|
43
|
+
@data = block.call(@command) if @command.success? && block_given? && parse_result
|
44
|
+
@error = @command.to_a if @command.failure?
|
45
|
+
|
46
|
+
## Define getter methods on result that maps to
|
47
|
+
## the same methods of a data struct.
|
48
|
+
return unless @command.success? && Kanrisuru::Util.present?(@data) && @data.class.ancestors.include?(Struct)
|
49
|
+
|
50
|
+
method_names = @data.members
|
51
|
+
self.class.class_eval do
|
52
|
+
method_names.each do |method_name|
|
53
|
+
define_method method_name do
|
54
|
+
@data[method_name]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def stub_command!(method, opts = {}, &block)
|
63
|
+
Kanrisuru::Remote::Host.class_eval do
|
64
|
+
alias_method "#{method}_alias", method
|
65
|
+
|
66
|
+
define_method(method) do |*args|
|
67
|
+
command = Kanrisuru::Command.new(method.to_s)
|
68
|
+
|
69
|
+
status = opts[:status] || 0
|
70
|
+
command.handle_status(status)
|
41
71
|
|
42
|
-
|
72
|
+
Kanrisuru::Result.new(command, true) do |_cmd|
|
73
|
+
block.call(args)
|
43
74
|
end
|
44
75
|
end
|
45
76
|
end
|
46
77
|
end
|
47
78
|
|
79
|
+
def unstub_command!(method)
|
80
|
+
Kanrisuru::Remote::Host.class_eval do
|
81
|
+
alias_method method, "#{method}_alias"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
48
85
|
def unstub!
|
49
86
|
Kanrisuru::Remote::Host.class_eval do
|
50
87
|
alias_method :execute_with_retries, :execute_with_retries_alias
|
51
88
|
end
|
52
89
|
|
53
90
|
Kanrisuru::Remote::Os.class_eval do
|
54
|
-
alias_method :initialize, :initialize_alias
|
91
|
+
alias_method :initialize, :initialize_alias
|
55
92
|
end
|
56
93
|
|
57
94
|
Kanrisuru::Result.class_eval do
|
58
|
-
alias_method :initialize, :initialize_alias
|
95
|
+
alias_method :initialize, :initialize_alias
|
59
96
|
end
|
60
97
|
end
|
61
98
|
|
@@ -82,13 +119,19 @@ class StubNetwork
|
|
82
119
|
processor: 'x86_64',
|
83
120
|
release: 'centos',
|
84
121
|
version: 7.0
|
122
|
+
},
|
123
|
+
opensuse: {
|
124
|
+
kernel_name: 'Linux',
|
125
|
+
kernel_version: '"#1 SMP Tue Jul 20 23:04:11 UTC 2021"',
|
126
|
+
operating_system: 'GNU/Linux',
|
127
|
+
hardware_platform: 'x86_64',
|
128
|
+
processor: 'x86_64',
|
129
|
+
release: 'opensuse-leap',
|
130
|
+
version: 15.2
|
85
131
|
}
|
86
132
|
}
|
87
133
|
|
88
|
-
|
89
|
-
defaults[name].key?(property) ?
|
90
|
-
defaults[name][property] : nil
|
134
|
+
defaults[name][property] if defaults[name].key?(property)
|
91
135
|
end
|
92
|
-
|
93
136
|
end
|
94
137
|
end
|
@@ -30,19 +30,19 @@ RSpec.describe Kanrisuru::Core::Zypper do
|
|
30
30
|
|
31
31
|
it 'installs a package' do
|
32
32
|
host.su('root')
|
33
|
-
result = host.zypper('install', packages: '
|
33
|
+
result = host.zypper('install', packages: 'nginx')
|
34
34
|
expect(result).to be_success
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'installs multiple packages' do
|
38
38
|
host.su('root')
|
39
|
-
result = host.zypper('install', packages: %w[curl
|
39
|
+
result = host.zypper('install', packages: %w[curl nginx])
|
40
40
|
expect(result).to be_success
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'removes a package' do
|
44
44
|
host.su('root')
|
45
|
-
result = host.zypper('remove', packages: ['
|
45
|
+
result = host.zypper('remove', packages: ['nginx'])
|
46
46
|
expect(result).to be_success
|
47
47
|
end
|
48
48
|
|
File without changes
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Kanrisuru::Command do
|
6
|
+
it 'responds to methods' do
|
7
|
+
command = described_class.new('ls')
|
8
|
+
expect(command).to respond_to(:exit_status)
|
9
|
+
expect(command).to respond_to(:raw_result)
|
10
|
+
expect(command).to respond_to(:program)
|
11
|
+
expect(command).to respond_to(:success?)
|
12
|
+
expect(command).to respond_to(:failure?)
|
13
|
+
expect(command).to respond_to(:to_i)
|
14
|
+
expect(command).to respond_to(:to_s)
|
15
|
+
expect(command).to respond_to(:to_a)
|
16
|
+
expect(command).to respond_to(:to_json)
|
17
|
+
expect(command).to respond_to(:prepared_command)
|
18
|
+
expect(command).to respond_to(:raw_command)
|
19
|
+
expect(command).to respond_to(:handle_status)
|
20
|
+
expect(command).to respond_to(:handle_data)
|
21
|
+
expect(command).to respond_to(:handle_signal)
|
22
|
+
expect(command).to respond_to(:+)
|
23
|
+
expect(command).to respond_to(:<<)
|
24
|
+
expect(command).to respond_to(:|)
|
25
|
+
expect(command).to respond_to(:pipe)
|
26
|
+
expect(command).to respond_to(:append_value)
|
27
|
+
expect(command).to respond_to(:append_arg)
|
28
|
+
expect(command).to respond_to(:append_flag)
|
29
|
+
expect(command).to respond_to(:append_valid_exit_code)
|
30
|
+
end
|
31
|
+
end
|
data/spec/unit/core/apt_spec.rb
CHANGED
@@ -3,6 +3,26 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Kanrisuru::Core::Apt do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:host) do
|
15
|
+
Kanrisuru::Remote::Host.new(
|
16
|
+
host: 'localhost',
|
17
|
+
username: 'ubuntu',
|
18
|
+
keys: ['id_rsa']
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds to methods' do
|
23
|
+
expect(host).to respond_to(:apt)
|
24
|
+
end
|
25
|
+
|
6
26
|
it 'responds to apt fields' do
|
7
27
|
expect(Kanrisuru::Core::Apt::Source.new).to respond_to(
|
8
28
|
:url, :dist, :architecture
|
@@ -3,6 +3,26 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Kanrisuru::Core::Archive do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:host) do
|
15
|
+
Kanrisuru::Remote::Host.new(
|
16
|
+
host: 'localhost',
|
17
|
+
username: 'ubuntu',
|
18
|
+
keys: ['id_rsa']
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds to methods' do
|
23
|
+
expect(host).to respond_to(:tar)
|
24
|
+
end
|
25
|
+
|
6
26
|
it 'responds to archive fields' do
|
7
27
|
expect(Kanrisuru::Core::Archive::FilePath.new).to respond_to(
|
8
28
|
:path
|
data/spec/unit/core/disk_spec.rb
CHANGED
@@ -3,6 +3,29 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Kanrisuru::Core::Disk do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:host) do
|
15
|
+
Kanrisuru::Remote::Host.new(
|
16
|
+
host: 'localhost',
|
17
|
+
username: 'ubuntu',
|
18
|
+
keys: ['id_rsa']
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds to methods' do
|
23
|
+
expect(host).to respond_to(:df)
|
24
|
+
expect(host).to respond_to(:du)
|
25
|
+
expect(host).to respond_to(:blkid)
|
26
|
+
expect(host).to respond_to(:lsblk)
|
27
|
+
end
|
28
|
+
|
6
29
|
it 'responds to disk fields' do
|
7
30
|
expect(Kanrisuru::Core::Disk::DiskUsage.new).to respond_to(:fsize, :path)
|
8
31
|
expect(Kanrisuru::Core::Disk::DiskFree.new).to respond_to(
|
data/spec/unit/core/dmi_spec.rb
CHANGED
@@ -3,6 +3,26 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Kanrisuru::Core::Dmi do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:host) do
|
15
|
+
Kanrisuru::Remote::Host.new(
|
16
|
+
host: 'localhost',
|
17
|
+
username: 'ubuntu',
|
18
|
+
keys: ['id_rsa']
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds to methods' do
|
23
|
+
expect(host).to respond_to(:dmi)
|
24
|
+
end
|
25
|
+
|
6
26
|
it 'responds to dmi type fields' do
|
7
27
|
expect(Kanrisuru::Core::Dmi::BIOS.new).to respond_to(
|
8
28
|
:dmi_type, :dmi_handle, :dmi_size,
|
data/spec/unit/core/file_spec.rb
CHANGED
@@ -3,6 +3,41 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Kanrisuru::Core::File do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:host) do
|
15
|
+
Kanrisuru::Remote::Host.new(
|
16
|
+
host: 'localhost',
|
17
|
+
username: 'ubuntu',
|
18
|
+
keys: ['id_rsa']
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds to methods' do
|
23
|
+
expect(host).to respond_to(:touch)
|
24
|
+
expect(host).to respond_to(:cp)
|
25
|
+
expect(host).to respond_to(:copy)
|
26
|
+
expect(host).to respond_to(:mkdir)
|
27
|
+
expect(host).to respond_to(:mv)
|
28
|
+
expect(host).to respond_to(:move)
|
29
|
+
expect(host).to respond_to(:link)
|
30
|
+
expect(host).to respond_to(:symlink)
|
31
|
+
expect(host).to respond_to(:ln)
|
32
|
+
expect(host).to respond_to(:ln_s)
|
33
|
+
expect(host).to respond_to(:chmod)
|
34
|
+
expect(host).to respond_to(:chown)
|
35
|
+
expect(host).to respond_to(:unlink)
|
36
|
+
expect(host).to respond_to(:rm)
|
37
|
+
expect(host).to respond_to(:rmdir)
|
38
|
+
expect(host).to respond_to(:wc)
|
39
|
+
end
|
40
|
+
|
6
41
|
it 'responds to file fields' do
|
7
42
|
expect(Kanrisuru::Core::File::FileCount.new).to respond_to(:lines, :words, :characters)
|
8
43
|
end
|
data/spec/unit/core/find_spec.rb
CHANGED
@@ -3,10 +3,30 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Kanrisuru::Core::Find do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:host) do
|
15
|
+
Kanrisuru::Remote::Host.new(
|
16
|
+
host: 'localhost',
|
17
|
+
username: 'ubuntu',
|
18
|
+
keys: ['id_rsa']
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds to methods' do
|
23
|
+
expect(host).to respond_to(:find)
|
24
|
+
end
|
25
|
+
|
6
26
|
it 'responds to find fields' do
|
7
27
|
expect(Kanrisuru::Core::Find::FilePath.new).to respond_to(:path)
|
8
28
|
expect(Kanrisuru::Core::Find::REGEX_TYPES).to(
|
9
|
-
eq([
|
29
|
+
eq(%w[emacs posix-awk posix-basic posix-egrep posix-extended])
|
10
30
|
)
|
11
31
|
end
|
12
32
|
end
|
@@ -3,6 +3,30 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Kanrisuru::Core::Group do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:host) do
|
15
|
+
Kanrisuru::Remote::Host.new(
|
16
|
+
host: 'localhost',
|
17
|
+
username: 'ubuntu',
|
18
|
+
keys: ['id_rsa']
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds to methods' do
|
23
|
+
expect(host).to respond_to(:group?)
|
24
|
+
expect(host).to respond_to(:get_gid)
|
25
|
+
expect(host).to respond_to(:create_group)
|
26
|
+
expect(host).to respond_to(:update_group)
|
27
|
+
expect(host).to respond_to(:delete_group)
|
28
|
+
end
|
29
|
+
|
6
30
|
it 'responds to group fields' do
|
7
31
|
expect(Kanrisuru::Core::Group::Group.new).to respond_to(:gid, :name, :users)
|
8
32
|
expect(Kanrisuru::Core::Group::GroupUser.new).to respond_to(:uid, :name)
|
data/spec/unit/core/ip_spec.rb
CHANGED
@@ -3,6 +3,26 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Kanrisuru::Core::IP do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:host) do
|
15
|
+
Kanrisuru::Remote::Host.new(
|
16
|
+
host: 'localhost',
|
17
|
+
username: 'ubuntu',
|
18
|
+
keys: ['id_rsa']
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds to methods' do
|
23
|
+
expect(host).to respond_to(:ip)
|
24
|
+
end
|
25
|
+
|
6
26
|
it 'responds to ip fields' do
|
7
27
|
expect(Kanrisuru::Core::IP::IPROUTE2_JSON_VERSION).to(
|
8
28
|
eq(180_129)
|
data/spec/unit/core/path_spec.rb
CHANGED
@@ -3,6 +3,31 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Kanrisuru::Core::Path do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:host) do
|
15
|
+
Kanrisuru::Remote::Host.new(
|
16
|
+
host: 'localhost',
|
17
|
+
username: 'ubuntu',
|
18
|
+
keys: ['id_rsa']
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds to methods' do
|
23
|
+
expect(host).to respond_to(:ls)
|
24
|
+
expect(host).to respond_to(:pwd)
|
25
|
+
expect(host).to respond_to(:realpath)
|
26
|
+
expect(host).to respond_to(:readlink)
|
27
|
+
expect(host).to respond_to(:whoami)
|
28
|
+
expect(host).to respond_to(:which)
|
29
|
+
end
|
30
|
+
|
6
31
|
it 'responds to path fields' do
|
7
32
|
expect(Kanrisuru::Core::Path::FilePath.new).to respond_to(:path)
|
8
33
|
expect(Kanrisuru::Core::Path::FileInfoId.new).to respond_to(
|
@@ -3,6 +3,26 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Kanrisuru::Core::Socket do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:host) do
|
15
|
+
Kanrisuru::Remote::Host.new(
|
16
|
+
host: 'localhost',
|
17
|
+
username: 'ubuntu',
|
18
|
+
keys: ['id_rsa']
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds to methods' do
|
23
|
+
expect(host).to respond_to(:ss)
|
24
|
+
end
|
25
|
+
|
6
26
|
it 'responds to socket fields' do
|
7
27
|
expect(Kanrisuru::Core::Socket::Statistics.new).to respond_to(
|
8
28
|
:netid, :state, :receive_queue, :send_queue,
|