Skip to content
This repository has been archived by the owner on Jul 21, 2023. It is now read-only.

Commit

Permalink
chore: add docs and more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vasco-santos committed Oct 7, 2020
1 parent e8409c5 commit dc8fe01
Show file tree
Hide file tree
Showing 3 changed files with 124 additions and 51 deletions.
54 changes: 54 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,60 @@ const ipAndPortToMultiaddr = require('libp2p-utils/src/ip-port-to-multiaddr')
const ma = ipAndPortToMultiaddr('127.0.0.1', 9000)
```

## API

### multiaddr `.isLoopback(ma)`

Check if a given multiaddr is a loopback address.

##### Parameters

| Name | Type | Description |
|------|------|-------------|
| ma | `Multiaddr` | multiaddr to verify |

##### Returns

| Type | Description |
|------|-------------|
| `boolean` | returns true if multiaddr is a loopback address, false otherwise |

##### Example

```js
const multiaddr = require('multiaddr')
const isLoopback = require('../../src/multiaddr/is-loopback')

const ma = multiaddr('/ip4/127.0.0.1/tcp/1000')
isMultiaddrLoopbackAddrs = isLoopback(ma)
```

#### multiaddr `.isPrivate(ma)`

Check if a given multiaddr has a private address.

##### Parameters

| Name | Type | Description |
|------|------|-------------|
| ma | `Multiaddr` | multiaddr to verify |

##### Returns

| Type | Description |
|------|-------------|
| `boolean` | returns true if multiaddr is a private address, false otherwise |

##### Example

```js
const multiaddr = require('multiaddr')
const isPrivate = require('../../src/multiaddr/is-private')

const ma = multiaddr('/ip4/10.0.0.1/tcp/1000')
isMultiaddrPrivateAddrs = isPrivate(ma)
```

## Contribute

Contributions welcome. Please check out [the issues](https://github.com/libp2p/js-libp2p-utils/issues).
Expand Down
58 changes: 35 additions & 23 deletions test/multiaddr/is-loopback.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,38 +8,50 @@ const isLoopback = require('../../src/multiaddr/is-loopback')

describe('multiaddr isLoopback', () => {
it('identifies loopback ip4 multiaddrs', () => {
const m1 = multiaddr('/ip4/127.0.0.1/tcp/1000')
const m2 = multiaddr('/ip4/127.0.1.1/tcp/1000')
const m3 = multiaddr('/ip4/127.1.1.1/tcp/1000')
const m4 = multiaddr('/ip4/127.255.255.255/tcp/1000')

expect(isLoopback(m1)).to.eql(true)
expect(isLoopback(m2)).to.eql(true)
expect(isLoopback(m3)).to.eql(true)
expect(isLoopback(m4)).to.eql(true)
[
multiaddr('/ip4/127.0.0.1/tcp/1000'),
multiaddr('/ip4/127.0.1.1/tcp/1000'),
multiaddr('/ip4/127.1.1.1/tcp/1000'),
multiaddr('/ip4/127.255.255.255/tcp/1000')
].forEach(ma => {
expect(isLoopback(ma)).to.eql(true)
})
})

it('identifies non loopback ip4 multiaddrs', () => {
const m1 = multiaddr('/ip4/101.0.26.90/tcp/1000')
const m2 = multiaddr('/ip4/10.0.0.1/tcp/1000')
const m3 = multiaddr('/ip4/192.168.0.1/tcp/1000')
const m4 = multiaddr('/ip4/172.16.0.1/tcp/1000')

expect(isLoopback(m1)).to.eql(false)
expect(isLoopback(m2)).to.eql(false)
expect(isLoopback(m3)).to.eql(false)
expect(isLoopback(m4)).to.eql(false)
[
multiaddr('/ip4/101.0.26.90/tcp/1000'),
multiaddr('/ip4/10.0.0.1/tcp/1000'),
multiaddr('/ip4/192.168.0.1/tcp/1000'),
multiaddr('/ip4/172.16.0.1/tcp/1000')
].forEach(ma => {
expect(isLoopback(ma)).to.eql(false)
})
})

it('identifies loopback ip6 multiaddrs', () => {
const m1 = multiaddr('/ip6/::1/tcp/1000')

expect(isLoopback(m1)).to.eql(true)
[
multiaddr('/ip6/::1/tcp/1000')
].forEach(ma => {
expect(isLoopback(ma)).to.eql(true)
})
})

it('identifies non loopback ip6 multiaddrs', () => {
const m1 = multiaddr('/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/1000')
[
multiaddr('/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/1000'),
multiaddr('/ip6/::/tcp/1000')
].forEach(ma => {
expect(isLoopback(ma)).to.eql(false)
})
})

expect(isLoopback(m1)).to.eql(false)
it('identifies other multiaddrs as not loopback addresses', () => {
[
multiaddr('/dns4/wss0.bootstrap.libp2p.io/tcp/443'),
multiaddr('/dns6/wss0.bootstrap.libp2p.io/tcp/443')
].forEach(ma => {
expect(isLoopback(ma)).to.eql(false)
})
})
})
63 changes: 35 additions & 28 deletions test/multiaddr/is-private.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,44 +8,51 @@ const isPrivate = require('../../src/multiaddr/is-private')

describe('multiaddr isPrivate', () => {
it('identifies private ip4 multiaddrs', () => {
const m1 = multiaddr('/ip4/127.0.0.1/tcp/1000')
const m2 = multiaddr('/ip4/10.0.0.1/tcp/1000')
const m3 = multiaddr('/ip4/192.168.0.1/tcp/1000')
const m4 = multiaddr('/ip4/172.16.0.1/tcp/1000')

expect(isPrivate(m1)).to.eql(true)
expect(isPrivate(m2)).to.eql(true)
expect(isPrivate(m3)).to.eql(true)
expect(isPrivate(m4)).to.eql(true)
[
multiaddr('/ip4/127.0.0.1/tcp/1000'),
multiaddr('/ip4/10.0.0.1/tcp/1000'),
multiaddr('/ip4/192.168.0.1/tcp/1000'),
multiaddr('/ip4/172.16.0.1/tcp/1000')
].forEach(ma => {
expect(isPrivate(ma)).to.eql(true)
})
})

it('identifies public ip4 multiaddrs', () => {
const m1 = multiaddr('/ip4/101.0.26.90/tcp/1000')
const m2 = multiaddr('/ip4/40.1.20.9/tcp/1000')
const m3 = multiaddr('/ip4/92.168.0.1/tcp/1000')
const m4 = multiaddr('/ip4/2.16.0.1/tcp/1000')

expect(isPrivate(m1)).to.eql(false)
expect(isPrivate(m2)).to.eql(false)
expect(isPrivate(m3)).to.eql(false)
expect(isPrivate(m4)).to.eql(false)
[
multiaddr('/ip4/101.0.26.90/tcp/1000'),
multiaddr('/ip4/40.1.20.9/tcp/1000'),
multiaddr('/ip4/92.168.0.1/tcp/1000'),
multiaddr('/ip4/2.16.0.1/tcp/1000')
].forEach(ma => {
expect(isPrivate(ma)).to.eql(false)
})
})

it('identifies private ip6 multiaddrs', () => {
const m1 = multiaddr('/ip6/fd52:8342:fc46:6c91:3ac9:86ff:fe31:7095/tcp/1000')

expect(isPrivate(m1)).to.eql(true)
[
multiaddr('/ip6/fd52:8342:fc46:6c91:3ac9:86ff:fe31:7095/tcp/1000'),
multiaddr('/ip6/fd52:8342:fc46:6c91:3ac9:86ff:fe31:1/tcp/1000')
].forEach(ma => {
expect(isPrivate(ma)).to.eql(true)
})
})

it('identifies public ip6 multiaddrs', () => {
const m1 = multiaddr('/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/1000')

expect(isPrivate(m1)).to.eql(false)
[
multiaddr('/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/1000'),
multiaddr('/ip6/2000:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/1000')
].forEach(ma => {
expect(isPrivate(ma)).to.eql(false)
})
})

it('identifies dns multiaddrs as not private', () => {
const m1 = multiaddr('/dns4/wss0.bootstrap.libp2p.io/tcp/443')

expect(isPrivate(m1)).to.eql(false)
it('identifies other multiaddrs as not private addresses', () => {
[
multiaddr('/dns4/wss0.bootstrap.libp2p.io/tcp/443'),
multiaddr('/dns6/wss0.bootstrap.libp2p.io/tcp/443')
].forEach(ma => {
expect(isPrivate(ma)).to.eql(false)
})
})
})

0 comments on commit dc8fe01

Please sign in to comment.