Skip to content

Commit

Permalink
adds CREDITS, plus mocha tests for transpiled node
Browse files Browse the repository at this point in the history
  • Loading branch information
kaoudis committed Mar 21, 2021
1 parent 7008f45 commit 04ecdc4
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 25 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
node_modules/
package-lock.json
lib/netmask.js
30 changes: 30 additions & 0 deletions CREDITS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
Credits
=======

These credits refer to the contributors to this repository:

[@rs](https://github.com/rs) - maintainer

[@ryanrolds](https://github.com/ryanrolds) - Now with 0.4.x support. #2

[@palmerabollo](https://github.com/palmerabollo) - Expressions "1.2.3.4/" are not valid #6

[@steve-jansen](https://github.com/steve-jansen) - fixes typo in readme.md #7

[@jksdua](https://github.com/jksdua) - Added forEach helper to allow looping through usable IP addresses #9

[@gmiroshnykov](https://github.com/gmiroshnykov) - Tiny typo fix #10

[@TooTallNate](https://github.com/TooTallNate) - package: move "coffee-script" to devDependencies #11, README: fix small typo #12

[@yorkie](https://github.com/yorkie) - more rigid check for Netmask.constructor #13

[@runk](https://github.com/runk) - fix contains method for netmasks #18

[@yvesago](https://github.com/yvesago) - a patch with mocha test to fix /31 and /32 block.contains #20

[@meteormatt](https://github.com/meteormatt) - The comment in README.md is wrong #22

[@dschenkelman](https://github.com/dschenkelman) - Avoid large memory allocations when doing forEach in case netmask is large (e.g. /8) #34

[@sickcodes](https://github.com/sickcodes), [@kaoudis](https://github.com/kaoudis), [@Koroeskohr](https://github.com/Koroeskohr), [@nicksahler](https://github.com/nicksahler) - harden error handling, add a few more tests, and include CREDITS.md #36
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ Installation

$ npm install netmask

Run all tests (vows plus mocha)
-------------------------------

$ npm test

License
-------

Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@
"main": "./lib/netmask",
"scripts": {
"prepublish": "coffee -c lib/*.coffee",
"test": "vows --spec test/*"
"test": "coffee -c lib/*.coffee && vows --spec test/* && mocha tests/*"
},
"engines": {
"node": ">= 0.4.0"
},
"devDependencies": {
"coffee-script": ">=1.2.0",
"mocha": "^8.3.2",
"vows": "*"
}
}
127 changes: 103 additions & 24 deletions tests/netmask.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,103 @@
/* some troubles with vows
here is some mocha test
npm install
mocha tests/netmask.js
*/
var assert = require('assert');

var Netmask = require('../').Netmask;

var block = new Netmask('10.1.2.0/24');
var b1 = new Netmask('10.1.2.10/29');
var b2 = new Netmask('10.1.2.10/31');
var b3 = new Netmask('10.1.2.20/32');

console.log('first : '+b2.base);
console.log('broadcast : '+b2.broadcast);
console.log('last : ' + b2.last);

describe("Netmask contains bug", function() {
assert.equal(block.contains(b1),true);
assert.equal(block.contains(b2),true);
assert.equal(block.contains(b3),true);
});
/* It is important to test our Javascript output as well as our coffeescript,
* since code that is transpiled may be slightly different in effect from the
* original.
*
* Run these tests (against lib/netmask.js, not lib/netmask.coffee directly)
* using mocha, after re-generating lib/netmask.js including your changes:
*
* mocha tests/netmask.js
*/

const assert = require('assert');
const Netmask = require('../').Netmask;

describe('Netmask', () => {
describe('can build a block', () => {
let block = new Netmask('10.1.2.0/24');

it('should contain a sub-block', () => {
let block1 = new Netmask('10.1.2.10/29');
assert(block.contains(block1));
});

it('should contain another sub-block', () => {
let block2 = new Netmask('10.1.2.10/31');
assert(block.contains(block2));
});

it('should contain a third sub-block', () => {
let block3 = new Netmask('10.1.2.20/32');
assert(block.contains(block3));
});
});

describe('when presented with an octet which is not a number', () => {
let block = new Netmask('192.168.0.0/29')

it('should throw', () => {
assert.throws(() => block.contains('192.168.~.4'), Error);
});
});

describe('can handle hexadecimal, octal, & decimal octets in input IP', () => {
let block1 = new Netmask('31.0.0.0/19');
let block2 = new Netmask('127.0.0.0/8');
let block3 = new Netmask('255.0.0.1/12');
let block4 = new Netmask('10.0.0.1/8');
let block5 = new Netmask('1.0.0.1/4');

describe('octal', () => {
it('block 31.0.0.0/19 does not contain 031.0.5.5', () => {
assert(!block1.contains('031.0.5.5'));
});
it('block 127.0.0.0/8 contains 0177.0.0.2 (127.0.0.2)', () => {
assert(block2.contains('0177.0.0.2'));
});
it('block 255.0.0.1/12 does not contain 0255.0.0.2 (173.0.0.2)', () => {
assert(!block3.contains('0255.0.0.2'));
});
it('block 10.0.0.1/8 contains 012.0.0.255 (10.0.0.255)', () => {
assert(block4.contains('012.0.0.255'));
});
it('block 1.0.0.1/4 contains 01.02.03.04', () => {
assert(block5.contains('01.02.03.04'));
});
});

describe('hexadecimal', () => {
it('block 31.0.0.0/19 does not contain 0x31.0.5.5', () => {
assert(!block1.contains('0x31.0.5.5'));
});
it('block 127.0.0.0/8 contains 0x7f.0.0.0x2 (127.0.0.2)', () => {
assert(block2.contains('0x7f.0.0.0x2'));
});
it('block 255.0.0.1/12 contains 0xff.0.0.2', () => {
assert(block3.contains('0xff.0.0.2'));
});
it('block 10.0.0.1/8 does not contain 0x10.0.0.255', () => {
assert(!block4.contains('0x10.0.0.255'));
});
it('block 1.0.0.1/4 contains 0x1.0x2.0x3.0x4', () => {
assert(block5.contains('0x1.0x2.0x3.0x4'));
});
});

describe('decimal', () => {
it('block 31.0.0.0/19 contains 31.0.5.5', () => {
assert(block1.contains('31.0.5.5'));
});
it('block 127.0.0.0/8 does not contain 128.0.0.2', () =>{
assert(!block2.contains('128.0.0.2'));
});
it('block 255.0.0.1/12 contains 255.0.0.2', () => {
assert(block3.contains('255.0.0.2'));
});
it('block 10.0.0.1/8 contains 10.0.0.255', () => {
assert(block4.contains('10.0.0.255'));
});
it('block 1.0.0.1/4 contains 1.2.3.4', () => {
assert(block5.contains('1.2.3.4'));
});
});
});
});

0 comments on commit 04ecdc4

Please sign in to comment.