diff --git a/ghost/core/core/server/data/seeders/importers/members-importer.js b/ghost/core/core/server/data/seeders/importers/members-importer.js index 639957a5bbf..e4cbe7a987e 100644 --- a/ghost/core/core/server/data/seeders/importers/members-importer.js +++ b/ghost/core/core/server/data/seeders/importers/members-importer.js @@ -80,21 +80,9 @@ class MembersImporter extends TableImporter { name: name, expertise: luck(30) ? faker.name.jobTitle() : undefined, geolocation: JSON.stringify({ - organization_name: faker.company.name(), - region: faker.address.state(), - accuracy: 50, - asn: parseInt(faker.random.numeric(4)), - organization: `${faker.random.alpha({count: 2, casing: 'upper'})}${faker.random.numeric(4)} ${faker.company.name()}`, - timezone: faker.address.timeZone(), - longitude: faker.address.longitude(), - country_code3: faker.address.countryCode('alpha-3'), - area_code: '0', - ip: faker.internet.ipv4(), - city: faker.address.cityName(), country: faker.address.country(), - continent_code: 'EU', country_code: faker.address.countryCode('alpha-2'), - latitude: faker.address.latitude() + region: faker.address.state() }), email_count: 0, // Depends on number of emails sent since created_at, the newsletter they're a part of and subscription status email_opened_count: 0, diff --git a/ghost/core/core/server/services/members/members-api/services/geolocation-service.js b/ghost/core/core/server/services/members/members-api/services/geolocation-service.js index 6b51e5ebdb2..2a3c3c57ff2 100644 --- a/ghost/core/core/server/services/members/members-api/services/geolocation-service.js +++ b/ghost/core/core/server/services/members/members-api/services/geolocation-service.js @@ -22,6 +22,10 @@ module.exports = class GeolocationService { const geojsUrl = `https://get.geojs.io/v1/ip/geo/${encodeURIComponent(ipAddress)}.json`; const response = await got(geojsUrl, gotOpts).json(); - return response; + return { + country: response.country, + country_code: response.country_code, + region: response.region + }; } }; diff --git a/ghost/core/test/unit/server/services/members/members-api/services/geolocation-service.test.js b/ghost/core/test/unit/server/services/members/members-api/services/geolocation-service.test.js index 6fd7804e7b9..cedf57c138f 100644 --- a/ghost/core/test/unit/server/services/members/members-api/services/geolocation-service.test.js +++ b/ghost/core/test/unit/server/services/members/members-api/services/geolocation-service.test.js @@ -3,7 +3,7 @@ const {assertExists} = require('../../../../../../utils/assertions'); const nock = require('nock'); const GeolocationService = require('../../../../../../../core/server/services/members/members-api/services/geolocation-service'); -const RESPONSE = { +const GEOJS_RESPONSE = { longitude: '-2.2417', city: 'Kidderminster', timezone: 'Europe/London', @@ -21,6 +21,12 @@ const RESPONSE = { country_code3: 'GBR' }; +const EXPECTED_RESULT = { + country: 'United Kingdom', + country_code: 'GB', + region: 'England' +}; + const service = new GeolocationService(); describe('lib/geolocation', function () { @@ -33,25 +39,25 @@ describe('lib/geolocation', function () { it('fetches from geojs.io with IPv4 address', async function () { const scope = nock('https://get.geojs.io') .get('/v1/ip/geo/188.39.113.90.json') - .reply(200, RESPONSE); + .reply(200, GEOJS_RESPONSE); const result = await service.getGeolocationFromIP('188.39.113.90'); assert.equal(scope.isDone(), true, 'request was not made'); assertExists(result, 'nothing was returned'); - assert.deepEqual(result, RESPONSE, 'result didn\'t match expected response'); + assert.deepEqual(result, EXPECTED_RESULT, 'result didn\'t match expected response'); }); it('fetches from geojs.io with IPv6 address', async function () { const scope = nock('https://get.geojs.io') .get('/v1/ip/geo/2a01%3A4c8%3A43a%3A13c9%3A8d6%3A128e%3A1fd5%3A6aad.json') - .reply(200, RESPONSE); + .reply(200, GEOJS_RESPONSE); const result = await service.getGeolocationFromIP('2a01:4c8:43a:13c9:8d6:128e:1fd5:6aad'); assert.equal(scope.isDone(), true, 'request was not made'); assertExists(result, 'nothing was returned'); - assert.deepEqual(result, RESPONSE, 'result didn\'t match expected response'); + assert.deepEqual(result, EXPECTED_RESULT, 'result didn\'t match expected response'); }); it('handles non-IP addresses', async function () {