From b170074efd7391b740b28faeb35905863acea8a0 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Mon, 5 Oct 2020 14:15:28 +0530 Subject: [PATCH] Refactors domain service --- scripts/register-domains.js | 2 ++ tests/domain-service.test.js | 18 +++++++++--------- tests/register.test.js | 14 +++++++++++++- utils/domain-service.js | 23 ++++++++++++----------- 4 files changed, 36 insertions(+), 21 deletions(-) diff --git a/scripts/register-domains.js b/scripts/register-domains.js index 06445f6c9..784e36388 100644 --- a/scripts/register-domains.js +++ b/scripts/register-domains.js @@ -20,6 +20,8 @@ const toHostList = R.chain(data => { const registerDomains = async ({ domainService, getDomains }) => { const domains = await getDomains().then(toHostList); + + console.log(domains); }; const main = () => { diff --git a/tests/domain-service.test.js b/tests/domain-service.test.js index 7b62be8bd..08e49e9b6 100644 --- a/tests/domain-service.test.js +++ b/tests/domain-service.test.js @@ -1,12 +1,12 @@ const R = require('ramda'); const { getDomainService } = require('../utils/domain-service'); -const getNcClass = ({ onSet, onGet } = {}) => class Namecheap { - dns = { +const getNc = ({ onSet, onGet } = {}) => ({ + dns: { setHosts: (_, list) => onSet(list), getHosts: (_) => onGet(), - }; -}; + }, +}); describe('Domain service', () => { describe('getHosts', () => { @@ -16,7 +16,7 @@ describe('Domain service', () => { { Name: 'xx', Type: 'A', Address: '111.1.1212.1' }, ]; const onGet = async () => ({ hosts }) - const mockDomainService = getDomainService({ Namecheap: getNcClass({ onGet }) }); + const mockDomainService = getDomainService({ nc: getNc({ onGet }) }); const list = await mockDomainService.getHosts(); expect(list).toEqual([ @@ -35,7 +35,7 @@ describe('Domain service', () => { return Promise.resolve(null); }); - const mockDomainService = getDomainService({ Namecheap: getNcClass({ onSet }) }); + const mockDomainService = getDomainService({ nc: getNc({ onSet }) }); await mockDomainService.setHosts(records); expect(onSet).toBeCalledTimes(1); }); @@ -51,7 +51,7 @@ describe('Domain service', () => { const onGet = () => Promise.resolve({ hosts: records }); const onSet = jest.fn(async () => ({})); - const mockDomainService = getDomainService({ Namecheap: getNcClass({ onSet, onGet }) }); + const mockDomainService = getDomainService({ nc: getNc({ onSet, onGet }) }); await mockDomainService.updateHosts([ { HostName: 'a', RecordType: 'CNAME', Address: 'boo' }, { HostName: 'b', RecordType: 'CNAME', Address: 'goo' }, @@ -76,7 +76,7 @@ describe('Domain service', () => { const onGet = () => Promise.resolve({ hosts: records }); const onSet = jest.fn(async () => ({})); - const mockDomainService = getDomainService({ Namecheap: getNcClass({ onSet, onGet }) }); + const mockDomainService = getDomainService({ nc: getNc({ onSet, onGet }) }); await mockDomainService.updateHosts([ { HostName: 'a', RecordType: 'CNAME', Address: 'boo' }, { HostName: 'b', RecordType: 'CNAME', Address: 'googoogaga' }, @@ -100,7 +100,7 @@ describe('Domain service', () => { const onGet = () => Promise.resolve({ hosts: records }); const onSet = jest.fn(async () => ({})); - const mockDomainService = getDomainService({ Namecheap: getNcClass({ onSet, onGet }) }); + const mockDomainService = getDomainService({ nc: getNc({ onSet, onGet }) }); await mockDomainService.updateHosts([ { HostName: 'a', RecordType: 'CNAME', Address: 'boo' }, { HostName: 'b', RecordType: 'CNAME', Address: 'googoogaga' }, diff --git a/tests/register.test.js b/tests/register.test.js index 1c7b78358..1b515a5cd 100644 --- a/tests/register.test.js +++ b/tests/register.test.js @@ -1,5 +1,6 @@ -const { toHostList } = require('../scripts/register-domains'); +const { toHostList, registerDomains } = require('../scripts/register-domains'); const { TTL } = require('../utils/constants'); +const { getDomainService } = require('../utils/domain-service'); describe('toHostList', () => { it('should flatten domain data to list of hosts (without https)', () => { @@ -18,3 +19,14 @@ describe('toHostList', () => { ]); }); }); + +describe('registerDomains', () => { + it('should register the new set of hosts generated from domains list', () => { + const localHosts = []; + const remoteHosts = []; + + //const domainService = getDomainService({ Namecheap: }); + //registerDomains({ getDomains: async () => localHosts, domainService }); + }); +}); + diff --git a/utils/domain-service.js b/utils/domain-service.js index 2de6a2e07..6a40e53b9 100644 --- a/utils/domain-service.js +++ b/utils/domain-service.js @@ -4,14 +4,7 @@ const { NC_DOMAIN, NC_USER, NC_API_KEY, ENV, IP_ADDRESS } = require('../utils/co const IS_SANDBOX = ENV === 'sandbox'; -const getDomainService = ({ Namecheap }) => { - const nc = new Namecheap({ - user: NC_USER, - key: NC_API_KEY, - ip: IP_ADDRESS, - sandbox: IS_SANDBOX, - }); - +const getDomainService = ({ nc }) => { let hostList = []; const getHosts = async () => { @@ -57,10 +50,18 @@ const getDomainService = ({ Namecheap }) => { }; return { getHosts, setHosts, updateHosts }; -} +}; + +const nc = new Namecheap({ + user: NC_USER, + key: NC_API_KEY, + ip: IP_ADDRESS, + sandbox: IS_SANDBOX, +}); + +const domainService = getDomainService({ nc }); module.exports = { getDomainService, - domainService: getDomainService({ Namecheap }), + domainService, }; -