| 'use strict'; |
| |
| const common = require('../common'); |
| const assert = require('assert'); |
| const dgram = require('dgram'); |
| const multicastAddress = '224.0.0.114'; |
| |
| const setup = dgram.createSocket.bind(dgram, { type: 'udp4', reuseAddr: true }); |
| |
| // addMembership() on closed socket should throw |
| { |
| const socket = setup(); |
| socket.close(common.mustCall(() => { |
| common.expectsError(() => { |
| socket.addMembership(multicastAddress); |
| }, { |
| code: 'ERR_SOCKET_DGRAM_NOT_RUNNING', |
| type: Error, |
| message: /^Not running$/ |
| }); |
| })); |
| } |
| |
| // dropMembership() on closed socket should throw |
| { |
| const socket = setup(); |
| socket.close(common.mustCall(() => { |
| common.expectsError(() => { |
| socket.dropMembership(multicastAddress); |
| }, { |
| code: 'ERR_SOCKET_DGRAM_NOT_RUNNING', |
| type: Error, |
| message: /^Not running$/ |
| }); |
| })); |
| } |
| |
| // addMembership() with no argument should throw |
| { |
| const socket = setup(); |
| common.expectsError(() => { |
| socket.addMembership(); |
| }, { |
| code: 'ERR_MISSING_ARGS', |
| type: TypeError, |
| message: /^The "multicastAddress" argument must be specified$/ |
| }); |
| socket.close(); |
| } |
| |
| // dropMembership() with no argument should throw |
| { |
| const socket = setup(); |
| common.expectsError(() => { |
| socket.dropMembership(); |
| }, { |
| code: 'ERR_MISSING_ARGS', |
| type: TypeError, |
| message: /^The "multicastAddress" argument must be specified$/ |
| }); |
| socket.close(); |
| } |
| |
| // addMembership() with invalid multicast address should throw |
| { |
| const socket = setup(); |
| assert.throws(() => { socket.addMembership('256.256.256.256'); }, |
| /^Error: addMembership EINVAL$/); |
| socket.close(); |
| } |
| |
| // dropMembership() with invalid multicast address should throw |
| { |
| const socket = setup(); |
| assert.throws(() => { socket.dropMembership('256.256.256.256'); }, |
| /^Error: dropMembership EINVAL$/); |
| socket.close(); |
| } |