generated from K-FOSS/TS-Core-Template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(Testing, Recursive Searching); Adds fixtures and basic testing f…
…or contacts, and begins work on recursive searching of information
- Loading branch information
Showing
21 changed files
with
407 additions
and
70 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
{ | ||
"typescript.tsdk": "node_modules/typescript/lib", | ||
"yaml.schemas": { | ||
"/workspace/schemas/IPAM.json": ["ipam.yml", "ipam.yaml", "IPAM.yaml", "IPAM.yml"] | ||
"/workspace/schemas/IPAM.json": ["ipam.yml", "ipam.yaml", "IPAM.yaml", "IPAM.yml", "**/fixtures/*.yml", "**/fixtures/*.yaml"] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
{"$schema":"http://json-schema.org/draft-07/schema#","definitions":{"community":{"type":"object","additionalProperties":false,"$id":"#community","description":"Community","properties":{"contact":{"type":"string","description":"Community Contact ID"},"name":{"type":"string","description":"Community Friendly Name"},"id":{"type":"string","description":"Short form community code","examples":["sxl"]},"sites":{"type":"array","items":{"$ref":"#/definitions/communitySite"}}},"required":["name","id","sites"]},"communitySite":{"type":"object","additionalProperties":false,"description":"Community Site","properties":{"id":{"type":"string","description":"Site short id"},"name":{"type":"string"},"devices":{"type":"array","items":{"$ref":"#/definitions/device"}}},"required":["id","name"]},"contact":{"type":"object","additionalProperties":false,"$id":"#contact","description":"Community Contact","properties":{"id":{"type":"string","description":"Unique contact ID"},"name":{"type":"string","description":"Contact Full Name"}},"required":["id","name"]},"device":{"type":"object","additionalProperties":false,"$id":"#device","description":"Network Device","properties":{"id":{"type":"string","description":"Chained ID"},"name":{"type":"string","description":"Friendly name"},"type":{"$ref":"#/definitions/networkDeviceType"}},"required":["id","name"]},"networkcircuit":{"type":"object","additionalProperties":false,"description":"NetworkCircuit","properties":{"id":{"type":"string","description":"Circuit Id"},"speed":{"type":"string","description":"Circuit Speed"}},"required":["id"]},"networkDeviceLink":{"type":"object","additionalProperties":false,"description":"Link a Network to a device","properties":{"id":{"type":"string","description":"Device id"},"interface":{"type":"string","description":"Device interface"}},"required":["id"]},"circuitLocation":{"type":"object","description":"Traditional external circuits","additionalProperties":false,"properties":{"id":{"type":"string","description":"External circuit id"},"provider":{"type":"string","description":"External circuit provider"},"communuity":{"type":"string","description":"Community ID"},"address":{"type":"string","description":"Address provided to external provider"},"demarcSpeed":{"type":"string","enum":["10M","100M","200M","300M","500M","1G","5G","10G"]}}},"circuit":{"type":"object","description":"Community Circuit","additionalProperties":false,"properties":{"id":{"type":"string","description":"Circuit ID"},"sideA":{"$ref":"#/definitions/circuitSide"},"sideZ":{"$ref":"#/definitions/circuitSide"},"speed":{"type":"string"}},"required":["id","sideA","sideZ"]},"circuitSide":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"Circuit Location Id"}},"required":["id"]},"network":{"type":"object","additionalProperties":false,"description":"Network","properties":{"prefix":{"type":"string","description":"Network Prefix"},"description":{"type":"string"},"circuit":{"$ref":"#/definitions/networkcircuit"},"nsServers":{"type":"array","items":{"type":"string","description":"Reverse DNS NS Server","format":"hostname"}},"type":{"type":"string","description":"Network Type","enum":["UNALLOCATED","EXTERNAL"]},"contactId":{"type":"string","description":"Contact ID"},"hosts":{"type":"array","items":{"$ref":"#/definitions/networkHost"}},"ranges":{"type":"array","items":{"$ref":"#/definitions/networkRange"}},"networks":{"type":"array","items":{"$ref":"#/definitions/network"},"uniqueItems":true,"description":"Children Networks"}}},"networkHost":{"type":"object","additionalProperties":false,"description":"Indivual Network host","properties":{"ip":{"type":"string","description":"Host IP Address","format":"ipv4"},"hostname":{"type":"string","description":"Hostname for reverse DNS creation","format":"hostname"},"description":{"type":"string"},"device":{"$ref":"#/definitions/networkDeviceLink"}},"required":["ip"]},"networkRange":{"type":"object","additionalProperties":false,"description":"Network Range","properties":{"start":{"type":"string","description":"Start IP for the range","format":"ipv4"},"end":{"type":"string","description":"End IP for the range","format":"ipv4"},"description":{"type":"string"},"type":{"type":"string","enum":["DHCP","RESERVED","STATIC","FREE","unallocated"]}},"required":["start","end"]},"networkDeviceType":{"type":"string","enum":["router","switch","access-point","server","modem","firewall","UPS"]},"networkDeviceInterfaceType":{"type":"string","enum":["FastEthernet","GigabitEthernet","TenGigabitEthernet"]}},"type":"object","additionalProperties":false,"description":"IPAM Configuration File","properties":{"communities":{"type":"array","items":{"$ref":"#/definitions/community"}},"circuits":{"type":"array","items":{"$ref":"#/definitions/circuit"},"uniqueItems":true,"description":"Circuits"},"circuitLocations":{"type":"array","items":{"$ref":"#/definitions/circuitLocation"},"uniqueItems":true,"description":"External Circuits"},"contacts":{"type":"array","items":{"$ref":"#/definitions/contact"},"uniqueItems":true,"description":"Contact Information"},"networks":{"type":"array","items":{"$ref":"#/definitions/network"},"uniqueItems":true,"description":"Networks"}},"required":["communities","circuits","circuitLocations","contacts","networks"]} | ||
{"$schema":"http://json-schema.org/draft-07/schema#","definitions":{"community":{"type":"object","additionalProperties":false,"$id":"#community","description":"Community","properties":{"contact":{"type":"string","description":"Community Contact ID"},"name":{"type":"string","description":"Community Friendly Name"},"id":{"type":"string","description":"Short form community code","examples":["sxl"]},"sites":{"type":"array","items":{"$ref":"#/definitions/communitySite"}}},"required":["name","id","sites"]},"communitySite":{"type":"object","additionalProperties":false,"description":"Community Site","properties":{"id":{"type":"string","description":"Site short id"},"name":{"type":"string"},"devices":{"type":"array","items":{"$ref":"#/definitions/device"}}},"required":["id","name"]},"contact":{"type":"object","additionalProperties":false,"$id":"#contact","description":"Community Contact","properties":{"id":{"$ref":"#/definitions/contactId"},"name":{"type":"string","description":"Contact Full Name"}},"required":["id","name"]},"contactId":{"type":"string","description":"Unique Identifier for referencing Contact"},"device":{"type":"object","additionalProperties":false,"$id":"#device","description":"Network Device","properties":{"id":{"type":"string","description":"Chained ID"},"name":{"type":"string","description":"Friendly name"},"type":{"$ref":"#/definitions/networkDeviceType"}},"required":["id","name"]},"networkcircuit":{"type":"object","additionalProperties":false,"description":"NetworkCircuit","properties":{"id":{"type":"string","description":"Circuit Id"},"speed":{"type":"string","description":"Circuit Speed"}},"required":["id"]},"networkDeviceLink":{"type":"object","additionalProperties":false,"description":"Link a Network to a device","properties":{"id":{"type":"string","description":"Device id"},"interface":{"type":"string","description":"Device interface"}},"required":["id"]},"circuitLocation":{"type":"object","description":"Traditional external circuits","additionalProperties":false,"properties":{"id":{"type":"string","description":"External circuit id"},"provider":{"type":"string","description":"External circuit provider"},"communuity":{"type":"string","description":"Community ID"},"address":{"type":"string","description":"Address provided to external provider"},"demarcSpeed":{"type":"string","enum":["10M","100M","200M","300M","500M","1G","5G","10G"]}}},"circuit":{"type":"object","description":"Community Circuit","additionalProperties":false,"properties":{"id":{"type":"string","description":"Circuit ID"},"sideA":{"$ref":"#/definitions/circuitSide"},"sideZ":{"$ref":"#/definitions/circuitSide"},"speed":{"type":"string"}},"required":["id","sideA","sideZ"]},"circuitSide":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"Circuit Location Id"}},"required":["id"]},"network":{"type":"object","additionalProperties":false,"description":"Network","properties":{"prefix":{"type":"string","description":"Network Prefix"},"description":{"type":"string"},"circuit":{"$ref":"#/definitions/networkcircuit"},"nsServers":{"type":"array","items":{"type":"string","description":"Reverse DNS NS Server","format":"hostname"}},"type":{"type":"string","description":"Network Type","enum":["UNALLOCATED","EXTERNAL"]},"contactId":{"$ref":"#/definitions/contactId"},"hosts":{"type":"array","items":{"$ref":"#/definitions/networkHost"}},"ranges":{"type":"array","items":{"$ref":"#/definitions/networkRange"}},"networks":{"type":"array","items":{"$ref":"#/definitions/network"},"uniqueItems":true,"description":"Children Networks"}}},"networkHost":{"type":"object","additionalProperties":false,"description":"Indivual Network host","properties":{"ip":{"type":"string","description":"Host IP Address","format":"ipv4"},"hostname":{"type":"string","description":"Hostname for reverse DNS creation","format":"hostname"},"contactId":{"$ref":"#/definitions/contactId"},"description":{"type":"string"},"device":{"$ref":"#/definitions/networkDeviceLink"}},"required":["ip"]},"networkRange":{"type":"object","additionalProperties":false,"description":"Network Range","properties":{"start":{"type":"string","description":"Start IP for the range","format":"ipv4"},"end":{"type":"string","description":"End IP for the range","format":"ipv4"},"description":{"type":"string"},"type":{"type":"string","enum":["DHCP","RESERVED","STATIC","FREE","unallocated"]}},"required":["start","end"]},"networkDeviceType":{"type":"string","enum":["router","switch","access-point","server","modem","firewall","UPS"]},"networkDeviceInterfaceType":{"type":"string","enum":["FastEthernet","GigabitEthernet","TenGigabitEthernet"]}},"type":"object","additionalProperties":false,"description":"IPAM Configuration File","properties":{"communities":{"type":"array","items":{"$ref":"#/definitions/community"}},"circuits":{"type":"array","items":{"$ref":"#/definitions/circuit"},"uniqueItems":true,"description":"Circuits"},"circuitLocations":{"type":"array","items":{"$ref":"#/definitions/circuitLocation"},"uniqueItems":true,"description":"External Circuits"},"contacts":{"type":"array","items":{"$ref":"#/definitions/contact"},"uniqueItems":true,"description":"Contact Information"},"networks":{"type":"array","items":{"$ref":"#/definitions/network"},"uniqueItems":true,"description":"Networks"}},"required":["communities","circuits","circuitLocations","contacts","networks"]} |
9 changes: 7 additions & 2 deletions
9
src/Modules/IPAM/Community.ts → src/Modules/Communities/Community.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
// src/Modules/Contacts/Contact.test.ts | ||
import { TestSuite } from '@k-foss/ts-estests'; | ||
import { deepStrictEqual } from 'assert'; | ||
import { resolve } from 'path'; | ||
import { fileURLToPath } from 'url'; | ||
import { ipamConfigController } from '../IPAM/IPAMConfigController'; | ||
|
||
export class ContactTestSuite extends TestSuite { | ||
public testName = 'Contact Test Suite'; | ||
|
||
public async test(): Promise<void> { | ||
const ipam = await ipamConfigController.loadFile( | ||
resolve( | ||
fileURLToPath(import.meta.url), | ||
'../fixtures/ContactSample1.yaml', | ||
), | ||
); | ||
|
||
const contact1 = ipam.contacts[0]; | ||
const contact2 = ipam.contacts[1]; | ||
const contact3 = ipam.contacts[2]; | ||
|
||
deepStrictEqual( | ||
contact1.id, | ||
'lab1.kfj', | ||
'ipam.contacts[0].id === lab1.kfj', | ||
); | ||
|
||
deepStrictEqual( | ||
contact2.id, | ||
'core1.hello', | ||
'ipam.contacts[1].id === core1.hello', | ||
); | ||
|
||
deepStrictEqual( | ||
contact3.id, | ||
'net.test', | ||
'ipam.contacts[2].id === net.test', | ||
); | ||
|
||
const community1 = ipam.communities[0]; | ||
const community2 = ipam.communities[1]; | ||
|
||
deepStrictEqual( | ||
community1.contactId, | ||
'lab1.kfj', | ||
'ipam.communities[0].contactId === lab1.kfj', | ||
); | ||
deepStrictEqual( | ||
community1.contact.id, | ||
'lab1.kfj', | ||
'ipam.communities[0].contact.id === lab1.kfj', | ||
); | ||
|
||
deepStrictEqual( | ||
community2.contactId, | ||
'core1.hello', | ||
'ipam.communities[1].contactId === core1.hello', | ||
); | ||
deepStrictEqual( | ||
community2.contact.id, | ||
'core1.hello', | ||
'ipam.communities[1].contact.id === core1.hello', | ||
); | ||
deepStrictEqual( | ||
community2.contact, | ||
contact2, | ||
'ipam.communities[1].contact === ipam.contacts[1]', | ||
); | ||
|
||
const network1 = ipam.networks[0]; | ||
|
||
if (network1.networks) { | ||
const subnetwork1 = network1.networks[0]; | ||
|
||
console.log(subnetwork1.prefix, subnetwork1.contact, subnetwork1.circuit); | ||
|
||
deepStrictEqual(subnetwork1.contact?.id, network1.contactId); | ||
} | ||
|
||
deepStrictEqual( | ||
network1.contactId, | ||
'net.test', | ||
'ipam.networks[0].contactId === net.test', | ||
); | ||
|
||
deepStrictEqual( | ||
network1.contact?.id, | ||
'net.test', | ||
'ipam.networks[0].contact?.id === net.test', | ||
); | ||
|
||
deepStrictEqual( | ||
network1.contact, | ||
contact3, | ||
'ipam.networks[0].contact === ipam.contacts[2]', | ||
); | ||
} | ||
} |
2 changes: 2 additions & 0 deletions
2
...les/CommunityContacts/CommunityContact.ts → src/Modules/Contacts/Contact.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 2 additions & 2 deletions
4
...yContacts/CommunityContactConfigSchema.ts → src/Modules/Contacts/ContactSchema.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
communities: | ||
- name: Lab 1 | ||
id: lab1 | ||
contact: lab1.kfj | ||
sites: | ||
- id: lab1.site1 | ||
name: Lab Site 1 | ||
|
||
- name: Core 1 | ||
id: core1 | ||
contact: core1.hello | ||
sites: | ||
- id: core1.site1 | ||
name: Core Site 1 | ||
|
||
networks: | ||
- prefix: 1.1.1.0/24 | ||
description: HelloWorld | ||
contactId: net.test | ||
circuit: | ||
id: core.lab1 | ||
networks: | ||
- prefix: 1.1.1.0/30 | ||
description: HelloWorld2 | ||
|
||
circuits: | ||
- id: core.lab1 | ||
sideA: | ||
id: circuit1 | ||
sideZ: | ||
id: circuit2 | ||
|
||
circuitLocations: | ||
- id: circuit1 | ||
address: lab1 street 1 | ||
communuity: lab1 | ||
provider: Core Provider | ||
demarcSpeed: 1G | ||
|
||
- id: circuit2 | ||
address: Core Site 1, Street 5859 | ||
communuity: core1 | ||
demarcSpeed: 10G | ||
provider: Core Provider | ||
|
||
contacts: | ||
- id: lab1.kfj | ||
name: Kristian Jones | ||
- id: core1.hello | ||
name: Hello World | ||
- id: net.test | ||
name: HelloTest |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.