55 lines
1.7 KiB
Ruby
55 lines
1.7 KiB
Ruby
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
require File.expand_path("../../../base", __FILE__)
|
|
|
|
require "vagrant/util/network_ip"
|
|
|
|
describe Vagrant::Util::NetworkIP do
|
|
let(:klass) do
|
|
Class.new do
|
|
include Vagrant::Util::NetworkIP
|
|
end
|
|
end
|
|
|
|
subject { klass.new }
|
|
|
|
describe "#network_address" do
|
|
it "calculates it properly" do
|
|
expect(subject.network_address("192.168.2.234", "255.255.255.0")).to eq("192.168.2.0")
|
|
end
|
|
|
|
it "calculates it properly with integer submask" do
|
|
expect(subject.network_address("192.168.2.234", "24")).to eq("192.168.2.0")
|
|
end
|
|
|
|
it "calculates it properly with integer submask" do
|
|
expect(subject.network_address("192.168.2.234", 24)).to eq("192.168.2.0")
|
|
end
|
|
|
|
it "calculates it properly for IPv6" do
|
|
expect(subject.network_address("fde4:8dba:82e1::c4", "64")).to eq("fde4:8dba:82e1::")
|
|
end
|
|
|
|
it "calculates it properly for IPv6" do
|
|
expect(subject.network_address("fde4:8dba:82e1::c4", 64)).to eq("fde4:8dba:82e1::")
|
|
end
|
|
|
|
it "calculates it properly for IPv6 for string mask" do
|
|
expect(subject.network_address("fde4:8dba:82e1::c4", "ffff:ffff:ffff:ffff::")).to eq("fde4:8dba:82e1::")
|
|
end
|
|
|
|
it "recovers from invalid netmask" do
|
|
# The mask function will produce an error for ruby >= 2.5
|
|
# If using a version of ruby that produces and error, then
|
|
# test to ensure `subject.network_address` produces expected
|
|
# results.
|
|
begin
|
|
IPAddr.new("192.168.2.234").mask("1.2.3.4")
|
|
rescue IPAddr::InvalidPrefixError
|
|
expect(subject.network_address("192.168.2.234", "1.2.3.4")).to eq("192.168.2.0")
|
|
end
|
|
end
|
|
end
|
|
end
|