# frozen_string_literal: true require "rails_helper" describe Constraints::LocalNetwork do describe ".matches?" do let(:request) { double("Rack::Request", remote_ip:) } subject { described_class.matches?(request) } context "with a private address from the 10.0.0.0/8 range" do let(:remote_ip) { "10.0.2.100" } it { is_expected.to be_truthy } end context "with a private address from the 127.0.0.0/8 range" do let(:remote_ip) { "127.0.0.1" } it { is_expected.to be_truthy } end context "with a private address from the 172.16.0.0/12 range" do let(:remote_ip) { "172.31.33.7" } it { is_expected.to be_truthy } end context "with a private address from the 192.168.0.0/16 range" do let(:remote_ip) { "192.168.123.45" } it { is_expected.to be_truthy } end context "with a non-private/loopback address" do let(:remote_ip) { "193.186.6.83" } it { is_expected.to be_falsey } end context "with some fantasy address" do let(:remote_ip) { "fe80:3::1ff:fe23:4567:890a" } it { is_expected.to be_falsey } end context "with an actual invalid address" do let(:remote_ip) { "herbert" } it { is_expected.to be_falsey } end end end