linux_admin 1.2.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/lib/linux_admin.rb +0 -8
  3. data/lib/linux_admin/disk.rb +12 -5
  4. data/lib/linux_admin/registration_system.rb +8 -4
  5. data/lib/linux_admin/scap.rb +1 -1
  6. data/lib/linux_admin/service/sys_v_init_service.rb +2 -1
  7. data/lib/linux_admin/service/systemd_service.rb +6 -2
  8. data/lib/linux_admin/version.rb +1 -1
  9. metadata +8 -100
  10. data/lib/linux_admin/registration_system/rhn.rb +0 -111
  11. data/spec/chrony_spec.rb +0 -64
  12. data/spec/common_spec.rb +0 -37
  13. data/spec/data/rhn/output_rhn-channel_list +0 -2
  14. data/spec/data/rhn/output_rhn-channel_list_available +0 -4
  15. data/spec/data/rhn/systemid +0 -57
  16. data/spec/data/rhn/systemid.missing_system_id +0 -57
  17. data/spec/data/rpm/cmd_output_for_list_installed +0 -20
  18. data/spec/data/subscription_manager/output_list_all_available +0 -42
  19. data/spec/data/subscription_manager/output_list_installed_not_subscribed +0 -19
  20. data/spec/data/subscription_manager/output_list_installed_subscribed +0 -19
  21. data/spec/data/subscription_manager/output_orgs +0 -6
  22. data/spec/data/subscription_manager/output_repos +0 -18
  23. data/spec/data/time_date/timedatectl_output +0 -14
  24. data/spec/data/yum/first.repo +0 -19
  25. data/spec/data/yum/output_repo_list +0 -13
  26. data/spec/data/yum/output_repoquery_multiple +0 -3
  27. data/spec/data/yum/output_repoquery_single +0 -1
  28. data/spec/data/yum/second.repo +0 -9
  29. data/spec/deb_spec.rb +0 -52
  30. data/spec/disk_spec.rb +0 -307
  31. data/spec/distro_spec.rb +0 -77
  32. data/spec/dns_spec.rb +0 -105
  33. data/spec/etc_issue_spec.rb +0 -37
  34. data/spec/fstab_spec.rb +0 -132
  35. data/spec/hardware_spec.rb +0 -46
  36. data/spec/hosts_spec.rb +0 -150
  37. data/spec/ip_address_spec.rb +0 -148
  38. data/spec/logical_volume_spec.rb +0 -166
  39. data/spec/mountable_spec.rb +0 -182
  40. data/spec/network_interface/network_interface_rh_spec.rb +0 -291
  41. data/spec/network_interface_spec.rb +0 -284
  42. data/spec/partition_spec.rb +0 -24
  43. data/spec/physical_volume_spec.rb +0 -101
  44. data/spec/registration_system_spec.rb +0 -85
  45. data/spec/rhn_spec.rb +0 -144
  46. data/spec/rpm_spec.rb +0 -85
  47. data/spec/scap_spec.rb +0 -48
  48. data/spec/service/sys_v_init_service_spec.rb +0 -127
  49. data/spec/service/systemd_service_spec.rb +0 -133
  50. data/spec/service_spec.rb +0 -54
  51. data/spec/spec_helper.rb +0 -116
  52. data/spec/ssh_spec.rb +0 -53
  53. data/spec/subscription_manager_spec.rb +0 -228
  54. data/spec/system_spec.rb +0 -15
  55. data/spec/time_date_spec.rb +0 -106
  56. data/spec/volume_group_spec.rb +0 -99
  57. data/spec/yum_spec.rb +0 -155
@@ -1,291 +0,0 @@
1
- describe LinuxAdmin::NetworkInterfaceRH do
2
- let(:device_name) { "eth0" }
3
- let(:ifcfg_file_dhcp) do
4
- <<-EOF
5
- #A comment is here
6
- DEVICE=eth0
7
- BOOTPROTO=dhcp
8
- UUID=3a48a5b5-b80b-4712-82f7-e517e4088999
9
- ONBOOT=yes
10
- TYPE=Ethernet
11
- NAME="System eth0"
12
- EOF
13
- end
14
-
15
- let(:ifcfg_file_static) do
16
- <<-EOF
17
- #A comment is here
18
- DEVICE=eth0
19
- BOOTPROTO=static
20
- UUID=3a48a5b5-b80b-4712-82f7-e517e4088999
21
- ONBOOT=yes
22
- TYPE=Ethernet
23
- NAME="System eth0"
24
- IPADDR=192.168.1.100
25
- NETMASK=255.255.255.0
26
- GATEWAY=192.168.1.1
27
- EOF
28
- end
29
-
30
- def stub_foreach_to_string(string)
31
- allow(File).to receive(:foreach) do |&block|
32
- string.each_line { |l| block.call(l) }
33
- end
34
- end
35
-
36
- def result(output, exit_status)
37
- AwesomeSpawn::CommandResult.new("", output, "", exit_status)
38
- end
39
-
40
- subject(:dhcp_interface) do
41
- allow(File).to receive(:exist?).and_return(true)
42
- stub_path = described_class.path_to_interface_config_file(device_name)
43
- allow(Pathname).to receive(:new).and_return(stub_path)
44
- allow(stub_path).to receive(:file?).and_return(true)
45
- stub_foreach_to_string(ifcfg_file_dhcp)
46
- allow(AwesomeSpawn).to receive(:run!).exactly(6).times.and_return(result("", 0))
47
- described_class.new(device_name)
48
- end
49
-
50
- subject(:static_interface) do
51
- allow(File).to receive(:exist?).and_return(true)
52
- stub_foreach_to_string(ifcfg_file_static)
53
- allow(AwesomeSpawn).to receive(:run!).exactly(4).times.and_return(result("", 0))
54
- described_class.new(device_name)
55
- end
56
-
57
- describe ".new" do
58
- it "loads the configuration" do
59
- conf = dhcp_interface.interface_config
60
- expect(conf["NM_CONTROLLED"]).to eq("no")
61
- expect(conf["DEVICE"]).to eq("eth0")
62
- expect(conf["BOOTPROTO"]).to eq("dhcp")
63
- expect(conf["UUID"]).to eq("3a48a5b5-b80b-4712-82f7-e517e4088999")
64
- expect(conf["ONBOOT"]).to eq("yes")
65
- expect(conf["TYPE"]).to eq("Ethernet")
66
- expect(conf["NAME"]).to eq('"System eth0"')
67
- end
68
- end
69
-
70
- describe "#parse_conf" do
71
- it "reloads the interface configuration" do
72
- interface = dhcp_interface
73
- stub_foreach_to_string(ifcfg_file_static)
74
- interface.parse_conf
75
-
76
- conf = interface.interface_config
77
- expect(conf["NM_CONTROLLED"]).to eq("no")
78
- expect(conf["DEVICE"]).to eq("eth0")
79
- expect(conf["BOOTPROTO"]).to eq("static")
80
- expect(conf["UUID"]).to eq("3a48a5b5-b80b-4712-82f7-e517e4088999")
81
- expect(conf["ONBOOT"]).to eq("yes")
82
- expect(conf["TYPE"]).to eq("Ethernet")
83
- expect(conf["NAME"]).to eq('"System eth0"')
84
- expect(conf["IPADDR"]).to eq("192.168.1.100")
85
- expect(conf["NETMASK"]).to eq("255.255.255.0")
86
- expect(conf["GATEWAY"]).to eq("192.168.1.1")
87
- end
88
- end
89
-
90
- describe "#address=" do
91
- it "sets the address" do
92
- address = "192.168.1.100"
93
-
94
- dhcp_interface.address = address
95
-
96
- conf = dhcp_interface.interface_config
97
- expect(conf["IPADDR"]).to eq(address)
98
- expect(conf["BOOTPROTO"]).to eq("static")
99
- end
100
-
101
- it "raises argument error when given a bad address" do
102
- expect { dhcp_interface.address = "garbage" }.to raise_error(ArgumentError)
103
- end
104
- end
105
-
106
- describe '#address6=' do
107
- it 'sets the ipv6 address' do
108
- address = 'fe80::1/64'
109
- dhcp_interface.address6 = address
110
- conf = dhcp_interface.interface_config
111
- expect(conf['IPV6ADDR']).to eq(address)
112
- expect(conf['IPV6INIT']).to eq('yes')
113
- expect(conf['DHCPV6C']).to eq('no')
114
- end
115
-
116
- it 'raises error when given a bad address' do
117
- expect { dhcp_interface.address6 = '1::1::1' }.to raise_error(ArgumentError)
118
- end
119
- end
120
-
121
- describe "#gateway=" do
122
- it "sets the gateway address" do
123
- address = "192.168.1.1"
124
- dhcp_interface.gateway = address
125
- expect(dhcp_interface.interface_config["GATEWAY"]).to eq(address)
126
- end
127
-
128
- it "raises argument error when given a bad address" do
129
- expect { dhcp_interface.gateway = "garbage" }.to raise_error(ArgumentError)
130
- end
131
- end
132
-
133
- describe '#gateway6=' do
134
- it 'sets the default gateway for IPv6' do
135
- address = 'fe80::1/64'
136
- dhcp_interface.gateway6 = address
137
- expect(dhcp_interface.interface_config['IPV6_DEFAULTGW']).to eq(address)
138
- end
139
- end
140
-
141
- describe "#netmask=" do
142
- it "sets the sub-net mask" do
143
- mask = "255.255.255.0"
144
- dhcp_interface.netmask = mask
145
- expect(dhcp_interface.interface_config["NETMASK"]).to eq(mask)
146
- end
147
-
148
- it "raises argument error when given a bad address" do
149
- expect { dhcp_interface.netmask = "garbage" }.to raise_error(ArgumentError)
150
- end
151
- end
152
-
153
- describe "#dns=" do
154
- it "sets the correct configuration" do
155
- dns1 = "192.168.1.1"
156
- dns2 = "192.168.1.10"
157
-
158
- static_interface.dns = dns1, dns2
159
-
160
- conf = static_interface.interface_config
161
- expect(conf["DNS1"]).to eq(dns1)
162
- expect(conf["DNS2"]).to eq(dns2)
163
- end
164
-
165
- it "sets the correct configuration when given an array" do
166
- dns = %w(192.168.1.1 192.168.1.10)
167
-
168
- static_interface.dns = dns
169
-
170
- conf = static_interface.interface_config
171
- expect(conf["DNS1"]).to eq(dns[0])
172
- expect(conf["DNS2"]).to eq(dns[1])
173
- end
174
-
175
- it "sets only DNS1 if given one value" do
176
- dns = "192.168.1.1"
177
-
178
- static_interface.dns = dns
179
-
180
- conf = static_interface.interface_config
181
- expect(conf["DNS1"]).to eq(dns)
182
- expect(conf["DNS2"]).to be_nil
183
- end
184
- end
185
-
186
- describe "#search_order=" do
187
- it "sets the search domain list" do
188
- search1 = "localhost"
189
- search2 = "test.example.com"
190
- search3 = "example.com"
191
- static_interface.search_order = search1, search2, search3
192
- expect(static_interface.interface_config["DOMAIN"]).to eq("\"#{search1} #{search2} #{search3}\"")
193
- end
194
-
195
- it "sets the search domain list when given an array" do
196
- search_list = %w(localhost test.example.com example.com)
197
- static_interface.search_order = search_list
198
- expect(static_interface.interface_config["DOMAIN"]).to eq("\"#{search_list.join(' ')}\"")
199
- end
200
- end
201
-
202
- describe "#enable_dhcp" do
203
- it "sets the correct configuration" do
204
- static_interface.enable_dhcp
205
- conf = static_interface.interface_config
206
- expect(conf["BOOTPROTO"]).to eq("dhcp")
207
- expect(conf["IPADDR"]).to be_nil
208
- expect(conf["NETMASK"]).to be_nil
209
- expect(conf["GATEWAY"]).to be_nil
210
- expect(conf["PREFIX"]).to be_nil
211
- end
212
- end
213
-
214
- describe '#enable_dhcp6' do
215
- it 'sets the correct configuration' do
216
- [static_interface, dhcp_interface].each do |interface|
217
- interface.enable_dhcp6
218
- conf = interface.interface_config
219
- expect(conf).to include('IPV6INIT' => 'yes', 'DHCPV6C' => 'yes')
220
- expect(conf.keys).not_to include('IPV6ADDR', 'IPV6_DEFAULTGW')
221
- end
222
- end
223
- end
224
-
225
- describe "#apply_static" do
226
- it "sets the correct configuration" do
227
- expect(dhcp_interface).to receive(:save)
228
- dhcp_interface.apply_static("192.168.1.12", "255.255.255.0", "192.168.1.1", ["192.168.1.1", nil], ["localhost"])
229
-
230
- conf = dhcp_interface.interface_config
231
- expect(conf["BOOTPROTO"]).to eq("static")
232
- expect(conf["IPADDR"]).to eq("192.168.1.12")
233
- expect(conf["NETMASK"]).to eq("255.255.255.0")
234
- expect(conf["GATEWAY"]).to eq("192.168.1.1")
235
- expect(conf["DNS1"]).to eq("192.168.1.1")
236
- expect(conf["DNS2"]).to be_nil
237
- expect(conf["DOMAIN"]).to eq("\"localhost\"")
238
- end
239
- end
240
-
241
- describe '#apply_static6' do
242
- it 'sets the static IPv6 configuration' do
243
- expect(dhcp_interface).to receive(:save)
244
- dhcp_interface.apply_static6('d:e:a:d:b:e:e:f', 127, 'd:e:a:d::/64', ['d:e:a:d::'])
245
- conf = dhcp_interface.interface_config
246
- expect(conf).to include('IPV6INIT' => 'yes', 'DHCPV6C' => 'no', 'IPV6ADDR' => 'd:e:a:d:b:e:e:f/127', 'IPV6_DEFAULTGW' => 'd:e:a:d::/64')
247
- end
248
- end
249
-
250
- describe "#save" do
251
- let(:iface_file) { Pathname.new("/etc/sysconfig/network-scripts/ifcfg-#{device_name}") }
252
-
253
- def expect_old_contents
254
- expect(File).to receive(:write) do |file, contents|
255
- expect(file).to eq(iface_file)
256
- expect(contents).to include("DEVICE=eth0")
257
- expect(contents).to include("BOOTPROTO=dhcp")
258
- expect(contents).to include("UUID=3a48a5b5-b80b-4712-82f7-e517e4088999")
259
- expect(contents).to include("ONBOOT=yes")
260
- expect(contents).to include("TYPE=Ethernet")
261
- expect(contents).to include('NAME="System eth0"')
262
- end
263
- end
264
-
265
- it "writes the configuration" do
266
- expect(File).to receive(:read).with(iface_file)
267
- expect(dhcp_interface).to receive(:stop).and_return(true)
268
- expect(dhcp_interface).to receive(:start).and_return(true)
269
- expect_old_contents
270
- expect(dhcp_interface.save).to be true
271
- end
272
-
273
- it "returns false when the interface cannot be brought down" do
274
- expect(File).to receive(:read).with(iface_file)
275
- expect(dhcp_interface).to receive(:stop).twice.and_return(false)
276
- expect(File).not_to receive(:write)
277
- expect(dhcp_interface.save).to be false
278
- end
279
-
280
- it "returns false and writes the old contents when the interface fails to come back up" do
281
- dhcp_interface # evaluate the subject first so the expectations stub the right calls
282
- expect(File).to receive(:read).with(iface_file).and_return("old stuff")
283
- expect(dhcp_interface).to receive(:stop).and_return(true)
284
- expect_old_contents
285
- expect(dhcp_interface).to receive(:start).and_return(false)
286
- expect(File).to receive(:write).with(iface_file, "old stuff")
287
- expect(dhcp_interface).to receive(:start)
288
- expect(dhcp_interface.save).to be false
289
- end
290
- end
291
- end
@@ -1,284 +0,0 @@
1
- describe LinuxAdmin::NetworkInterface do
2
- let(:device_name) { "eth0" }
3
- let(:config_file_path) { LinuxAdmin::NetworkInterfaceRH.path_to_interface_config_file(device_name) }
4
- context "on redhat systems" do
5
- describe ".dist_class" do
6
- it "returns NetworkInterfaceRH" do
7
- allow(LinuxAdmin::Distros).to receive(:local).and_return(LinuxAdmin::Distros.rhel)
8
- expect(described_class.dist_class(true)).to eq(LinuxAdmin::NetworkInterfaceRH)
9
- end
10
- end
11
-
12
- describe ".new" do
13
- before do
14
- allow_any_instance_of(described_class).to receive(:ip_show).and_raise(LinuxAdmin::NetworkInterfaceError.new(nil, nil))
15
- allow(LinuxAdmin::Distros).to receive(:local).and_return(LinuxAdmin::Distros.rhel)
16
- described_class.dist_class(true)
17
- allow(Pathname).to receive(:new).and_return(config_file_path)
18
- end
19
-
20
- it "creates a NetworkInterfaceRH instance if the config file does exist" do
21
- expect(config_file_path).to receive(:file?).and_return(true)
22
- expect(File).to receive(:foreach).and_return("")
23
-
24
- expect(described_class.new(device_name)).to be_an_instance_of(LinuxAdmin::NetworkInterfaceRH)
25
- end
26
-
27
- it "creates a NetworkInterfaceRH instance if the config file does not exist" do
28
- expect(config_file_path).to receive(:file?).and_return(false)
29
-
30
- expect(described_class.new(device_name)).to be_an_instance_of(LinuxAdmin::NetworkInterfaceRH)
31
- end
32
- end
33
- end
34
-
35
- context "on other linux systems" do
36
- describe ".dist_class" do
37
- it "returns NetworkInterfaceGeneric" do
38
- allow(LinuxAdmin::Distros).to receive(:local).and_return(LinuxAdmin::Distros.generic)
39
- expect(described_class.dist_class(true)).to eq(LinuxAdmin::NetworkInterfaceGeneric)
40
- end
41
- end
42
-
43
- describe ".new" do
44
- subject do
45
- allow_any_instance_of(described_class).to receive(:ip_show).and_raise(LinuxAdmin::NetworkInterfaceError.new(nil, nil))
46
- allow(LinuxAdmin::Distros).to receive(:local).and_return(LinuxAdmin::Distros.generic)
47
- described_class.dist_class(true)
48
- described_class.new(device_name)
49
- end
50
-
51
- it "creates a NetworkInterfaceGeneric instance" do
52
- expect(subject).to be_an_instance_of(LinuxAdmin::NetworkInterfaceGeneric)
53
- end
54
- end
55
- end
56
-
57
- context "on all systems" do
58
- IP_SHOW_ARGS = [
59
- LinuxAdmin::Common.cmd("ip"),
60
- :params => %w(addr show eth0)
61
- ]
62
-
63
- IP_ROUTE_ARGS = [
64
- LinuxAdmin::Common.cmd("ip"),
65
- :params => ['-4', 'route']
66
- ]
67
-
68
- IP6_ROUTE_ARGS = [
69
- LinuxAdmin::Common.cmd("ip"),
70
- :params => ['-6', 'route']
71
- ]
72
-
73
- IFUP_ARGS = [
74
- LinuxAdmin::Common.cmd("ifup"),
75
- :params => ["eth0"]
76
- ]
77
-
78
- IFDOWN_ARGS = [
79
- LinuxAdmin::Common.cmd("ifdown"),
80
- :params => ["eth0"]
81
- ]
82
-
83
- IP_ADDR_OUT = <<-IP_OUT
84
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
85
- link/ether 00:0c:29:ed:0e:8b brd ff:ff:ff:ff:ff:ff
86
- inet 192.168.1.9/24 brd 192.168.1.255 scope global dynamic eth0
87
- valid_lft 1297sec preferred_lft 1297sec
88
- inet6 fe80::20c:29ff:feed:e8b/64 scope link
89
- valid_lft forever preferred_lft forever
90
- inet6 fd12:3456:789a:1::1/96 scope global
91
- valid_lft forever preferred_lft forever
92
- IP_OUT
93
-
94
- IP6_ADDR_OUT = <<-IP_OUT
95
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
96
- link/ether 00:0c:29:ed:0e:8b brd ff:ff:ff:ff:ff:ff
97
- inet6 fe80::20c:29ff:feed:e8b/64 scope link
98
- valid_lft forever preferred_lft forever
99
- inet6 fd12:3456:789a:1::1/96 scope global
100
- valid_lft forever preferred_lft forever
101
- IP_OUT
102
-
103
- IP_ROUTE_OUT = <<-IP_OUT
104
- default via 192.168.1.1 dev eth0 proto static metric 100
105
- 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.9 metric 100
106
- IP_OUT
107
- IP6_ROUTE_OUT = <<-IP_OUT
108
- default via d:e:a:d:b:e:e:f dev eth0 proto static metric 100
109
- fc00:dead:beef:a::/64 dev virbr1 proto kernel metric 256 linkdown pref medium
110
- fe80::/64 dev eth0 proto kernel scope link metric 100
111
- IP_OUT
112
-
113
- IP_NONE_ADDR_OUT = <<-IP_OUT.freeze
114
- 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr1 state DOWN group default qlen 1000
115
- link/ether 52:54:00:ce:b4:f4 brd ff:ff:ff:ff:ff:ff
116
- IP_OUT
117
-
118
- subject(:subj) do
119
- allow(LinuxAdmin::Distros).to receive(:local).and_return(LinuxAdmin::Distros.generic)
120
- described_class.dist_class(true)
121
-
122
- allow(AwesomeSpawn).to receive(:run!).with(*IP_SHOW_ARGS).and_return(result(IP_ADDR_OUT, 0))
123
- allow(AwesomeSpawn).to receive(:run!).with(*IP_ROUTE_ARGS).and_return(result(IP_ROUTE_OUT, 0))
124
- allow(AwesomeSpawn).to receive(:run!).with(*IP6_ROUTE_ARGS).and_return(result(IP6_ROUTE_OUT, 0))
125
- described_class.new(device_name)
126
- end
127
-
128
- subject(:subj6) do
129
- allow(LinuxAdmin::Distros).to receive(:local).and_return(LinuxAdmin::Distros.generic)
130
- described_class.dist_class(true)
131
-
132
- allow(AwesomeSpawn).to receive(:run!).with(*IP_SHOW_ARGS).and_return(result(IP6_ADDR_OUT, 0))
133
- allow(AwesomeSpawn).to receive(:run!).with(*IP_ROUTE_ARGS).and_return(result(IP_ROUTE_OUT, 0))
134
- allow(AwesomeSpawn).to receive(:run!).with(*IP6_ROUTE_ARGS).and_return(result(IP6_ROUTE_OUT, 0))
135
- described_class.new(device_name)
136
- end
137
-
138
- subject(:subj_no_net) do
139
- allow(LinuxAdmin::Distros).to receive(:local).and_return(LinuxAdmin::Distros.generic)
140
- described_class.dist_class(true)
141
-
142
- allow(AwesomeSpawn).to receive(:run!).with(*IP_SHOW_ARGS).and_return(result(IP_NONE_ADDR_OUT, 0))
143
- allow(AwesomeSpawn).to receive(:run!).with(*IP_ROUTE_ARGS).and_return(result(IP_ROUTE_OUT, 0))
144
- allow(AwesomeSpawn).to receive(:run!).with(*IP6_ROUTE_ARGS).and_return(result(IP6_ROUTE_OUT, 0))
145
- described_class.new(device_name)
146
- end
147
-
148
- def result(output, exit_status)
149
- AwesomeSpawn::CommandResult.new("", output, "", exit_status)
150
- end
151
-
152
- describe "#reload" do
153
- it "returns false when ip addr show fails" do
154
- subj
155
- awesome_error = AwesomeSpawn::CommandResultError.new("", nil)
156
- allow(AwesomeSpawn).to receive(:run!).with(*IP_SHOW_ARGS).and_raise(awesome_error)
157
- expect(subj.reload).to eq(false)
158
- end
159
-
160
- it "raises when ip route fails" do
161
- subj
162
- awesome_error = AwesomeSpawn::CommandResultError.new("", nil)
163
- allow(AwesomeSpawn).to receive(:run!).with(*IP_SHOW_ARGS).and_return(result(IP_ADDR_OUT, 0))
164
- allow(AwesomeSpawn).to receive(:run!).with(*IP_ROUTE_ARGS).and_raise(awesome_error)
165
- allow(AwesomeSpawn).to receive(:run!).with(*IP6_ROUTE_ARGS).and_raise(awesome_error)
166
- expect { subj.reload }.to raise_error(LinuxAdmin::NetworkInterfaceError)
167
- end
168
-
169
- it "doesn't blow up when given only ipv6 addresses" do
170
- subj6
171
- allow(AwesomeSpawn).to receive(:run!).with(*IP_SHOW_ARGS).and_return(result(IP6_ADDR_OUT, 0))
172
- allow(AwesomeSpawn).to receive(:run!).with(*IP_ROUTE_ARGS).and_return(result(IP_ROUTE_OUT, 0))
173
- allow(AwesomeSpawn).to receive(:run!).with(*IP6_ROUTE_ARGS).and_return(result(IP6_ROUTE_OUT, 0))
174
- expect { subj.reload }.to_not raise_error
175
- end
176
- end
177
-
178
- describe "#address" do
179
- it "returns an address" do
180
- expect(subj.address).to eq("192.168.1.9")
181
- end
182
- end
183
-
184
- describe "#address6" do
185
- it "returns the global address by default" do
186
- expect(subj.address6).to eq("fd12:3456:789a:1::1")
187
- end
188
-
189
- it "returns the link local address" do
190
- expect(subj.address6(:link)).to eq("fe80::20c:29ff:feed:e8b")
191
- end
192
-
193
- it "raises ArgumentError when given a bad scope" do
194
- expect { subj.address6(:garbage) }.to raise_error(ArgumentError)
195
- end
196
- end
197
-
198
- describe "#mac_address" do
199
- it "returns the correct MAC address" do
200
- expect(subj.mac_address).to eq("00:0c:29:ed:0e:8b")
201
- end
202
- end
203
-
204
- describe "#netmask" do
205
- it "returns the correct netmask" do
206
- expect(subj.netmask).to eq("255.255.255.0")
207
- end
208
-
209
- it 'does not blow-up, when no ip assigned' do
210
- expect(subj_no_net.netmask).to eq(nil)
211
- end
212
- end
213
-
214
- describe "#netmask6" do
215
- it "returns the correct global netmask" do
216
- expect(subj.netmask6).to eq("ffff:ffff:ffff:ffff:ffff:ffff::")
217
- end
218
-
219
- it "returns the correct link local netmask" do
220
- expect(subj.netmask6(:link)).to eq("ffff:ffff:ffff:ffff::")
221
- end
222
-
223
- it "raises ArgumentError when given a bad scope" do
224
- expect { subj.netmask6(:garbage) }.to raise_error(ArgumentError)
225
- end
226
- end
227
-
228
- describe '#prefix' do
229
- it 'returns the correct prefix' do
230
- expect(subj.prefix).to eq(24)
231
- end
232
- end
233
-
234
- describe '#prefix6' do
235
- it 'returns the correct global prefix length' do
236
- expect(subj.prefix6).to eq(96)
237
- end
238
-
239
- it 'returns the correct link local prefix length' do
240
- expect(subj.prefix6(:link)).to eq(64)
241
- end
242
-
243
- it 'raises ArgumentError when given a bad scope' do
244
- expect { subj.prefix6(:garbage) }.to raise_error(ArgumentError)
245
- end
246
- end
247
-
248
- describe "#gateway" do
249
- it "returns the correct gateway address" do
250
- expect(subj.gateway).to eq("192.168.1.1")
251
- end
252
- end
253
-
254
- describe '#gateway6' do
255
- it 'returns the correct default gateway for IPv6 routing' do
256
- expect(subj.gateway6).to eq('d:e:a:d:b:e:e:f')
257
- end
258
- end
259
-
260
- describe "#start" do
261
- it "returns true on success" do
262
- expect(AwesomeSpawn).to receive(:run).with(*IFUP_ARGS).and_return(result("", 0))
263
- expect(subj.start).to be true
264
- end
265
-
266
- it "returns false on failure" do
267
- expect(AwesomeSpawn).to receive(:run).with(*IFUP_ARGS).and_return(result("", 1))
268
- expect(subj.start).to be false
269
- end
270
- end
271
-
272
- describe "#stop" do
273
- it "returns true on success" do
274
- expect(AwesomeSpawn).to receive(:run).with(*IFDOWN_ARGS).and_return(result("", 0))
275
- expect(subj.stop).to be true
276
- end
277
-
278
- it "returns false on failure" do
279
- expect(AwesomeSpawn).to receive(:run).with(*IFDOWN_ARGS).and_return(result("", 1))
280
- expect(subj.stop).to be false
281
- end
282
- end
283
- end
284
- end