require "./spec_helper" describe Vigia::GeoIPResolver do it "rejects invalid IPs gracefully" do resolver = Vigia::GeoIPResolver.new(db_path: "/nonexistent/db.mmdb") loc = resolver.resolve("invalid-ip-string") loc.ip.should eq("invalid-ip-string") loc.country_code.should be_nil loc.city_name.should be_nil end it "resolves known ecosystem nodes statically" do resolver = Vigia::GeoIPResolver.new(db_path: "/nonexistent/db.mmdb") loc = resolver.resolve("38.58.139.30") loc.ip.should eq("38.58.139.30") loc.country_code.should eq("MX") loc.country_name.should eq("México") loc.city_name.should eq("Querétaro") loc.asn.should eq(272373_i64) loc.as_org.should eq("HOBOPS.IO S.A.S. DE C.V., ipfs.mx-os.mx") end it "caches resolved IPs in memory" do resolver = Vigia::GeoIPResolver.new(db_path: "/nonexistent/db.mmdb") loc1 = resolver.resolve("38.58.139.30") loc2 = resolver.resolve("38.58.139.30") loc1.city_name.should eq(loc2.city_name) end end