/* eslint-env mocha */
'use strict'

const chai = require('chai')
chai.use(require('dirty-chai'))
const expect = chai.expect
const series = require('async/series')

const createNode = require('./utils/create-node')

describe('multiaddr trim', () => {
  it('non used multiaddrs get trimmed', (done) => {
    let node

    series([
      (cb) => createNode([
        '/ip4/0.0.0.0/tcp/999/wss/p2p-webrtc-direct',
        '/ip4/127.0.0.1/tcp/55555/ws',
        '/ip4/0.0.0.0/tcp/0/'
      ], (err, _node) => {
        expect(err).to.not.exist()
        node = _node
        const multiaddrs = node.peerInfo.multiaddrs.toArray()
        expect(multiaddrs).to.have.length(3)
        cb()
      }),
      (cb) => node.start(cb)
    ], (err) => {
      expect(err).to.not.exist()

      const multiaddrs = node.peerInfo.multiaddrs.toArray()
      expect(multiaddrs.length).to.be.at.least(2)
      // ensure the p2p-webrtc-direct address has been trimmed
      multiaddrs.forEach((addr) => {
        expect(() => addr.decapsulate('/ip4/0.0.0.0/tcp/999/wss/p2p-webrtc-direct')).to.throw()
      })

      node.stop(done)
    })
  })
})