mirror of
https://github.com/discourse/discourse.git
synced 2025-06-02 01:58:05 +08:00
DEV: Use DiscourseIpInfo for all IP queries. (#6482)
* DEV: Use DiscourseIpInfo for all IP queries. * UX: Use latitude and longitude for more precision.
This commit is contained in:

committed by
Régis Hanol

parent
4b7ab97a01
commit
e1e392f15b
@ -1,4 +1,5 @@
|
||||
require 'rails_helper'
|
||||
require 'discourse_ip_info'
|
||||
|
||||
RSpec.describe Admin::UsersController do
|
||||
let(:admin) { Fabricate(:admin) }
|
||||
@ -710,19 +711,24 @@ RSpec.describe Admin::UsersController do
|
||||
end
|
||||
|
||||
describe '#ip_info' do
|
||||
it "uses ipinfo.io webservice to retrieve the info" do
|
||||
ip = "192.168.1.1"
|
||||
ip_data = {
|
||||
city: "Jeddah",
|
||||
country: "SA",
|
||||
ip: ip
|
||||
}
|
||||
url = "https://ipinfo.io/#{ip}/json"
|
||||
it "retrieves IP info" do
|
||||
ip = "81.2.69.142"
|
||||
|
||||
DiscourseIpInfo.open_db(File.join(Rails.root, 'spec', 'fixtures', 'mmdb'))
|
||||
Resolv::DNS.any_instance.stubs(:getname).with(ip).returns("ip-81-2-69-142.example.com")
|
||||
|
||||
stub_request(:get, url).to_return(status: 200, body: ip_data.to_json)
|
||||
get "/admin/users/ip-info.json", params: { ip: ip }
|
||||
expect(response.status).to eq(200)
|
||||
expect(JSON.parse(response.body).symbolize_keys).to eq(ip_data)
|
||||
expect(JSON.parse(response.body).symbolize_keys).to eq(
|
||||
city: "London",
|
||||
country: "United Kingdom",
|
||||
country_code: "GB",
|
||||
hostname: "ip-81-2-69-142.example.com",
|
||||
location: "London, England, United Kingdom",
|
||||
region: "England",
|
||||
latitude: 51.5142,
|
||||
longitude: -0.0931,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user