js-mafmt/test/index.spec.js

189 lines
4.9 KiB
JavaScript
Raw Normal View History

2016-03-23 15:07:25 +01:00
/* eslint-env mocha */
2016-03-23 15:07:25 +01:00
'use strict'
const expect = require('chai').expect
const mafmt = require('./../src')
2016-03-23 15:07:25 +01:00
describe('multiaddr validation', function () {
const goodDNS = [
'/dns/ipfs.io',
2017-01-22 14:42:20 +00:00
'/dns4/ipfs.io',
'/dns4/libp2p.io',
'/dns6/protocol.ai'
]
const badDNS = [
'/ip4/127.0.0.1'
]
const goodIP = [
'/ip4/0.0.0.0',
'/ip6/fc00::'
]
const badIP = [
'/ip4/0.0.0.0/tcp/555',
'/udp/789/ip6/fc00::'
]
const goodTCP = [
'/ip4/0.0.7.6/tcp/1234',
'/ip6/::/tcp/0'
]
const badTCP = [
'/tcp/12345',
'/ip6/fc00::/udp/5523/tcp/9543'
]
const goodUDP = [
'/ip4/0.0.7.6/udp/1234',
'/ip6/::/udp/0'
]
const badUDP = [
'/udp/12345',
'/ip6/fc00::/tcp/5523/udp/9543'
]
const goodUTP = [
'/ip4/1.2.3.4/udp/3456/utp',
'/ip6/::/udp/0/utp'
]
const badUTP = [
'/ip4/0.0.0.0/tcp/12345/utp',
'/ip6/::/ip4/0.0.0.0/udp/1234/utp'
]
const goodWS = [
'/dns/ipfs.io/ws',
'/ip4/1.2.3.4/tcp/3456/ws',
'/ip6/::/tcp/0/ws'
]
2017-01-20 17:46:26 +00:00
const goodWSS = [
'/dns/ipfs.io/wss',
'/ip4/1.2.3.4/tcp/3456/wss',
'/ip6/::/tcp/0/wss'
]
const goodWebRTCStar = [
'/libp2p-webrtc-star/ip4/1.2.3.4/tcp/3456/ws/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4',
'/libp2p-webrtc-star/dns/ipfs.io/ws/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4',
2017-01-20 17:46:26 +00:00
'/libp2p-webrtc-star/dns/ipfs.io/wss/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4',
'/libp2p-webrtc-star/ip6/::/tcp/0/ws/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo5'
]
const goodWebRTCDirect = [
// '/libp2p-webrtc-direct/dns/ipfs.io',
'/libp2p-webrtc-direct/ip4/1.2.3.4/tcp/3456/http',
'/libp2p-webrtc-direct/ip6/::/tcp/0/http'
]
const badWS = [
'/ip4/0.0.0.0/tcp/12345/udp/2222/ws',
'/ip6/::/ip4/0.0.0.0/udp/1234/ws'
]
2017-01-22 14:42:20 +00:00
const badWSS = [
'/ip4/0.0.0.0/tcp/12345/udp/2222/wss',
'/ip6/::/ip4/0.0.0.0/udp/1234/wss'
]
2017-02-25 23:41:14 -08:00
const goodCircuit = [
'/p2p-circuit',
'/p2p-circuit/ipfs/QmUjNmr8TgJCn1Ao7DvMy4cjoZU15b9bwSCBLE3vwXiwgj',
'/p2p-circuit/ip4/127.0.0.1/tcp/20008/ws/ipfs/QmUjNmr8TgJCn1Ao7DvMy4cjoZU15b9bwSCBLE3vwXiwgj',
'/p2p-circuit/libp2p-webrtc-star/ip4/1.2.3.4/tcp/3456/ws/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4',
'/p2p-circuit/ip4/1.2.3.4/tcp/3456/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4'
]
const goodIPFS = [
'/ip4/127.0.0.1/tcp/20008/ws/ipfs/QmUjNmr8TgJCn1Ao7DvMy4cjoZU15b9bwSCBLE3vwXiwgj',
'/libp2p-webrtc-star/ip4/1.2.3.4/tcp/3456/ws/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4',
2017-02-25 23:41:14 -08:00
'/ip4/1.2.3.4/tcp/3456/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4',
'/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4/p2p-circuit',
'/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSoooo4/p2p-circuit/ipfs/QmUjNmr8TgJCn1Ao7DvMy4cjoZU15b9bwSCBLE3vwXiwgj'
]
2017-02-25 23:41:14 -08:00
goodIPFS.concat(goodCircuit)
function assertMatches (p) {
const tests = Array.from(arguments).slice(1)
tests.forEach(function (test) {
test.forEach(function (testcase) {
expect(p.matches(testcase)).to.be.eql(true)
2016-03-23 15:07:25 +01:00
})
})
}
function assertMismatches (p) {
const tests = Array.from(arguments).slice(1)
tests.forEach(function (test) {
test.forEach(function (testcase) {
expect(p.matches(testcase)).to.be.eql(false)
2016-03-23 15:07:25 +01:00
})
})
}
2016-03-23 15:07:25 +01:00
it('DNS validation', function () {
assertMatches(mafmt.DNS, goodDNS)
2017-01-22 14:42:20 +00:00
assertMismatches(mafmt.DNS, badDNS, badIP, goodTCP)
})
it('IP validation', function () {
assertMatches(mafmt.IP, goodIP)
assertMismatches(mafmt.IP, badIP, goodTCP)
})
2016-03-23 15:07:25 +01:00
it('TCP validation', function () {
assertMatches(mafmt.TCP, goodTCP)
assertMismatches(mafmt.TCP, badTCP, goodIP)
})
2016-03-23 15:07:25 +01:00
it('UDP validation', function () {
assertMatches(mafmt.UDP, goodUDP)
assertMismatches(mafmt.UDP, badUDP, goodIP, goodTCP, goodUTP)
})
2016-03-23 15:07:25 +01:00
it('UTP validation', function () {
assertMatches(mafmt.UTP, goodUTP)
assertMismatches(mafmt.UTP, badUTP, goodIP, goodTCP, goodUDP)
})
2016-03-23 15:07:25 +01:00
it('Reliable validation', function () {
assertMatches(mafmt.Reliable, goodUTP, goodTCP)
assertMismatches(mafmt.Reliable, goodIP, goodUDP)
})
2016-03-23 15:07:25 +01:00
it('WebSockets validation', function () {
assertMatches(mafmt.WebSockets, goodWS)
assertMismatches(mafmt.WebSockets, goodIP, goodUDP, badWS)
})
2016-05-21 19:57:26 +01:00
2017-01-20 17:46:26 +00:00
it('WebSocketsSecure validation', function () {
assertMatches(mafmt.WebSocketsSecure, goodWSS)
2017-01-22 14:42:20 +00:00
assertMismatches(mafmt.WebSocketsSecure, goodIP, badWSS, goodUDP, badWS)
2017-01-20 17:46:26 +00:00
})
it('WebRTC-star validation', function () {
2016-05-21 19:57:26 +01:00
assertMatches(mafmt.WebRTCStar, goodWebRTCStar)
assertMismatches(mafmt.WebRTCStar, goodIP, goodUDP, badWS)
2016-03-23 15:07:25 +01:00
})
it('WebRTC-direct validation', function () {
assertMatches(mafmt.WebRTCDirect, goodWebRTCDirect)
assertMismatches(mafmt.WebRTCDirect, goodIP, goodUDP, badWS)
})
2017-02-25 23:41:14 -08:00
it('Circuit validation', function () {
assertMatches(mafmt.Circuit, goodCircuit)
})
it('IPFS validation', function () {
assertMatches(mafmt.IPFS, goodIPFS)
})
2016-03-23 15:07:25 +01:00
})