5. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 10/24/2017 6:38:23 AM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

5.1 Files compared

# Location File Last Modified
1 CHAMP_VA1.zip\CHAMP_VA1\app\node_modules\express\node_modules\proxy-addr\node_modules\ipaddr.js\test ipaddr.test.coffee Mon Oct 16 21:06:50 2017 UTC
2 CHAMP_VA1.zip\CHAMP_VA1\app\node_modules\express\node_modules\proxy-addr\node_modules\ipaddr.js\test ipaddr.test.coffee Mon Oct 23 12:42:15 2017 UTC

5.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 6 528
Changed 5 36
Inserted 0 0
Removed 0 0

5.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

5.4 Active regular expressions

No regular expressions were active.

5.5 Comparison detail

  1   ipaddr = r equire '.. /lib/ipadd r'
  2  
  3   module.exp orts =
  4     'should  define mai n classes' : (test) - >
  5       test.o k(ipaddr.I Pv4?, 'def ines IPv4  class')
  6       test.o k(ipaddr.I Pv6?, 'def ines IPv6  class')
  7       test.d one()
  8  
  9     'can con struct IPv 4 from oct ets': (tes t) ->
  10       test.d oesNotThro w ->
  11         new  ipaddr.IPv 4([192, 16 8, 1, 2])
  12       test.d one()
  13  
  14     'refuses  to constr uct invali d IPv4': ( test) ->
  15       test.t hrows ->
  16         new  ipaddr.IPv 4([300, 1,  2, 3])
  17       test.t hrows ->
  18         new  ipaddr.IPv 4([8, 8, 8 ])
  19       test.d one()
  20  
  21     'convert s IPv4 to  string cor rectly': ( test) ->
  22       addr =  new ipadd r.IPv4([19 2, 168, 1,  1])
  23       test.e qual(addr. toString() , '192.168 .1.1')
  24       test.d one()
  25  
  26     'returns  correct k ind for IP v4': (test ) ->
  27       addr =  new ipadd r.IPv4([1,  2, 3, 4])
  28       test.e qual(addr. kind(), 'i pv4')
  29       test.d one()
  30  
  31     'allows  to access  IPv4 octet s': (test)  ->
  32       addr =  new ipadd r.IPv4([42 , 0, 0, 0] )
  33       test.e qual(addr. octets[0],  42)
  34       test.d one()
  35  
  36     'checks  IPv4 addre ss format' : (test) - >
  37       test.e qual(ipadd r.IPv4.isI Pv4('192.1 68.007.0xa '), true)
  38       test.e qual(ipadd r.IPv4.isI Pv4('1024. 0.0.1'),       true)
  39       test.e qual(ipadd r.IPv4.isI Pv4('8.0xa .wtf.6'),      false)
  40       test.d one()
  41  
  42     'validat es IPv4 ad dresses':  (test) ->
  43       test.e qual(ipadd r.IPv4.isV alid('192. 168.007.0x a'), true)
  44       test.e qual(ipadd r.IPv4.isV alid('1024 .0.0.1'),       false )
  45       test.e qual(ipadd r.IPv4.isV alid('8.0x a.wtf.6'),      false )
  46       test.d one()
  47  
  48     'parses  IPv4 in se veral weir d formats' : (test) - >
  49       test.d eepEqual(i paddr.IPv4 .parse('19 2.168.1.1' ).octets,   [192, 168 , 1, 1])
  50       test.d eepEqual(i paddr.IPv4 .parse('0x c0.168.1.1 ').octets,  [192, 168 , 1, 1])
  51       test.d eepEqual(i paddr.IPv4 .parse('19 2.0250.1.1 ').octets,  [192, 168 , 1, 1])
  52       test.d eepEqual(i paddr.IPv4 .parse('0x c0a80101') .octets,    [192, 168 , 1, 1])
  53       test.d eepEqual(i paddr.IPv4 .parse('03 0052000401 ').octets,  [192, 168 , 1, 1])
  54       test.d eepEqual(i paddr.IPv4 .parse('32 32235777') .octets,    [192, 168 , 1, 1])
  55       test.d one()
  56  
  57     'barfs a t invalid  IPv4': (te st) ->
  58       test.t hrows ->
  59         ipad dr.IPv4.pa rse('10.0. 0.wtf')
  60       test.d one()
  61  
  62     'matches  IPv4 CIDR  correctly ': (test)  ->
  63       addr =  new ipadd r.IPv4([10 , 5, 0, 1] )
  64       test.e qual(addr. match(ipad dr.IPv4.pa rse('0.0.0 .0'), 0),    true)
  65       test.e qual(addr. match(ipad dr.IPv4.pa rse('11.0. 0.0'), 8),   false)
  66         test.equal (addr.matc h(ipaddr.I Pv4.parse( ' IP '), 8),    true)
  67         test.equal (addr.matc h(ipaddr.I Pv4.parse( ' IP        '), 8),    true)
  68         test.equal (addr.matc h(ipaddr.I Pv4.parse( ' IP         '), 8), tr ue)
  69         test.equal (addr.matc h(ipaddr.I Pv4.parse( ' IP '), 16), t rue)
  70         test.equal (addr.matc h(ipaddr.I Pv4.parse( ' IP '), 16), f alse)
  71         test.equal (addr.matc h(ipaddr.I Pv4.parse( ' IP '), 15), t rue)
  72         test.equal (addr.matc h(ipaddr.I Pv4.parse( ' IP        '), 32), f alse)
  73       test.e qual(addr. match(addr , 32), tru e)
  74       test.d one()
  75  
  76     'parses  IPv4 CIDR  correctly' : (test) - >
  77       addr =  new ipadd r.IPv4([10 , 5, 0, 1] )
  78       test.e qual(addr. match(ipad dr.IPv4.pa rseCIDR('0 .0.0.0/0') ),   true)
  79       test.e qual(addr. match(ipad dr.IPv4.pa rseCIDR('1 1.0.0.0/8' )),  false )
  80         test.equal (addr.matc h(ipaddr.I Pv4.parseC IDR(' IP /8')),    true)
  81         test.equal (addr.matc h(ipaddr.I Pv4.parseC IDR(' IP        /8')),    true)
  82         test.equal (addr.matc h(ipaddr.I Pv4.parseC IDR(' IP         /8')), tru e)
  83         test.equal (addr.matc h(ipaddr.I Pv4.parseC IDR(' IP /16')), tr ue)
  84         test.equal (addr.matc h(ipaddr.I Pv4.parseC IDR(' IP /16')), fa lse)
  85         test.equal (addr.matc h(ipaddr.I Pv4.parseC IDR(' IP /15')), tr ue)
  86         test.equal (addr.matc h(ipaddr.I Pv4.parseC IDR(' IP        /32')), fa lse)
  87         test.equal (addr.matc h(ipaddr.I Pv4.parseC IDR(' IP        /32')), tr ue)
  88       test.t hrows ->
  89           ipaddr.IPv 4.parseCID R(' IP        ')
  90       test.t hrows ->
  91         ipad dr.IPv4.pa rseCIDR('0 .0.0.0/-1' )
  92       test.t hrows ->
  93         ipad dr.IPv4.pa rseCIDR('0 .0.0.0/33' )
  94       test.d one()
  95  
  96     'detects  reserved  IPv4 netwo rks': (tes t) ->
  97       test.e qual(ipadd r.IPv4.par se('0.0.0. 0').range( ),          'unspecif ied')
  98       test.e qual(ipadd r.IPv4.par se('0.1.0. 0').range( ),          'unspecif ied')
  99         test.equal (ipaddr.IP v4.parse(' IP        ').range()         'private')
  100       test.e qual(ipadd r.IPv4.par se('192.16 8.2.1').ra nge(),      'private' )
  101       test.e qual(ipadd r.IPv4.par se('224.10 0.0.1').ra nge(),      'multicas t')
  102       test.e qual(ipadd r.IPv4.par se('169.25 4.15.0').r ange(),     'linkLoca l')
  103       test.e qual(ipadd r.IPv4.par se('127.1. 1.1').rang e(),        'loopback ')
  104       test.e qual(ipadd r.IPv4.par se('255.25 5.255.255' ).range(),  'broadcas t')
  105       test.e qual(ipadd r.IPv4.par se('240.1. 2.3').rang e(),        'reserved ')
  106       test.e qual(ipadd r.IPv4.par se('8.8.8. 8').range( ),          'unicast' )
  107       test.d one()
  108  
  109     'can con struct IPv 6 from par ts': (test ) ->
  110       test.d oesNotThro w ->
  111         new  ipaddr.IPv 6([0x2001,  0xdb8, 0x f53a, 0, 0 , 0, 0, 1] )
  112       test.d one()
  113  
  114     'refuses  to constr uct invali d IPv6': ( test) ->
  115       test.t hrows ->
  116         new  ipaddr.IPv 6([0xfffff , 0, 0, 0,  0, 0, 0,  1])
  117       test.t hrows ->
  118         new  ipaddr.IPv 6([0xfffff , 0, 0, 0,  0, 0, 1])
  119       test.d one()
  120  
  121     'convert s IPv6 to  string cor rectly': ( test) ->
  122       addr =  new ipadd r.IPv6([0x 2001, 0xdb 8, 0xf53a,  0, 0, 0,  0, 1])
  123       test.e qual(addr. toNormaliz edString() , '2001:db 8:f53a:0:0 :0:0:1')
  124       test.e qual(addr. toString() , '2001:db 8:f53a::1' )
  125       test.e qual(new i paddr.IPv6 ([0, 0, 0,  0, 0, 0,  0, 1]).toS tring(), ' ::1')
  126       test.e qual(new i paddr.IPv6 ([0x2001,  0xdb8, 0,  0, 0, 0, 0 , 0]).toSt ring(), '2 001:db8::' )
  127       test.d one()
  128  
  129     'returns  correct k ind for IP v6': (test ) ->
  130       addr =  new ipadd r.IPv6([0x 2001, 0xdb 8, 0xf53a,  0, 0, 0,  0, 1])
  131       test.e qual(addr. kind(), 'i pv6')
  132       test.d one()
  133  
  134     'allows  to access  IPv6 addre ss parts':  (test) ->
  135       addr =  new ipadd r.IPv6([0x 2001, 0xdb 8, 0xf53a,  0, 0, 42,  0, 1])
  136       test.e qual(addr. parts[5],  42)
  137       test.d one()
  138  
  139     'checks  IPv6 addre ss format' : (test) - >
  140       test.e qual(ipadd r.IPv6.isI Pv6('2001: db8:F53A:: 1'),     t rue)
  141       test.e qual(ipadd r.IPv6.isI Pv6('20000 1::1'),             t rue)
  142       test.e qual(ipadd r.IPv6.isI Pv6('::fff f:192.168. 1.1'),   t rue)
  143       test.e qual(ipadd r.IPv6.isI Pv6('::fff f:300.168. 1.1'),   t rue)
  144       test.e qual(ipadd r.IPv6.isI Pv6('::fff f:300.168. 1.1:0'), f alse)
  145       test.e qual(ipadd r.IPv6.isI Pv6('fe80: :wtf'),             f alse)
  146       test.d one()
  147  
  148     'validat es IPv6 ad dresses':  (test) ->
  149       test.e qual(ipadd r.IPv6.isV alid('2001 :db8:F53A: :1'),      true)
  150       test.e qual(ipadd r.IPv6.isV alid('2000 01::1'),              false)
  151       test.e qual(ipadd r.IPv6.isV alid('::ff ff:192.168 .1.1'),    true)
  152       test.e qual(ipadd r.IPv6.isV alid('::ff ff:300.168 .1.1'),    false)
  153       test.e qual(ipadd r.IPv6.isV alid('::ff ff:300.168 .1.1:0'),  false)
  154       test.e qual(ipadd r.IPv6.isV alid('2001 :db8::F53A ::1'),     false)
  155       test.e qual(ipadd r.IPv6.isV alid('fe80 ::wtf'),              false)
  156       test.e qual(ipadd r.IPv6.isV alid('2002 ::2:'),               false)
  157       test.e qual(ipadd r.IPv6.isV alid(undef ined),                false)
  158       test.d one()
  159  
  160     'parses  IPv6 in di fferent fo rmats': (t est) ->
  161       test.d eepEqual(i paddr.IPv6 .parse('20 01:db8:F53 A:0:0:0:0: 1').parts,  [0x2001,  0xdb8, 0xf 53a, 0, 0,  0, 0, 1])
  162       test.d eepEqual(i paddr.IPv6 .parse('fe 80::10').p arts, [0xf e80, 0, 0,  0, 0, 0,  0, 0x10])
  163       test.d eepEqual(i paddr.IPv6 .parse('20 01:db8:F53 A::').part s, [0x2001 , 0xdb8, 0 xf53a, 0,  0, 0, 0, 0 ])
  164       test.d eepEqual(i paddr.IPv6 .parse(':: 1').parts,  [0, 0, 0,  0, 0, 0,  0, 1])
  165       test.d eepEqual(i paddr.IPv6 .parse(':: ').parts,  [0, 0, 0,  0, 0, 0, 0 , 0])
  166       test.d one()
  167  
  168     'barfs a t invalid  IPv6': (te st) ->
  169       test.t hrows ->
  170         ipad dr.IPv6.pa rse('fe80: :0::1')
  171       test.d one()
  172  
  173     'matches  IPv6 CIDR  correctly ': (test)  ->
  174       addr =  ipaddr.IP v6.parse(' 2001:db8:f 53a::1')
  175       test.e qual(addr. match(ipad dr.IPv6.pa rse('::'),  0),                    true)
  176       test.e qual(addr. match(ipad dr.IPv6.pa rse('2001: db8:f53a:: 1:1'), 64) , true)
  177       test.e qual(addr. match(ipad dr.IPv6.pa rse('2001: db8:f53b:: 1:1'), 48) , false)
  178       test.e qual(addr. match(ipad dr.IPv6.pa rse('2001: db8:f531:: 1:1'), 44) , true)
  179       test.e qual(addr. match(ipad dr.IPv6.pa rse('2001: db8:f500:: 1'), 40),    true)
  180       test.e qual(addr. match(ipad dr.IPv6.pa rse('2001: db9:f500:: 1'), 40),    false)
  181       test.e qual(addr. match(addr , 128), tr ue)
  182       test.d one()
  183  
  184     'parses  IPv6 CIDR  correctly' : (test) - >
  185       addr =  ipaddr.IP v6.parse(' 2001:db8:f 53a::1')
  186       test.e qual(addr. match(ipad dr.IPv6.pa rseCIDR(': :/0')),                    true)
  187       test.e qual(addr. match(ipad dr.IPv6.pa rseCIDR('2 001:db8:f5 3a::1:1/64 ')), true)
  188       test.e qual(addr. match(ipad dr.IPv6.pa rseCIDR('2 001:db8:f5 3b::1:1/48 ')), false )
  189       test.e qual(addr. match(ipad dr.IPv6.pa rseCIDR('2 001:db8:f5 31::1:1/44 ')), true)
  190       test.e qual(addr. match(ipad dr.IPv6.pa rseCIDR('2 001:db8:f5 00::1/40') ),   true)
  191       test.e qual(addr. match(ipad dr.IPv6.pa rseCIDR('2 001:db9:f5 00::1/40') ),   false )
  192       test.e qual(addr. match(ipad dr.IPv6.pa rseCIDR('2 001:db8:f5 3a::1/128' )),  true)
  193       test.t hrows ->
  194         ipad dr.IPv6.pa rseCIDR('2 001:db8:f5 3a::1')
  195       test.t hrows ->
  196         ipad dr.IPv6.pa rseCIDR('2 001:db8:f5 3a::1/-1')
  197       test.t hrows ->
  198         ipad dr.IPv6.pa rseCIDR('2 001:db8:f5 3a::1/129' )
  199       test.d one()
  200  
  201     'convert s between  IPv4-mappe d IPv6 add resses and  IPv4 addr esses': (t est) ->
  202       addr =  ipaddr.IP v4.parse(' 77.88.21.1 1')
  203       mapped  = addr.to IPv4Mapped Address()
  204       test.d eepEqual(m apped.part s, [0, 0,  0, 0, 0, 0 xffff, 0x4 d58, 0x150 b])
  205       test.d eepEqual(m apped.toIP v4Address( ).octets,  addr.octet s)
  206       test.d one()
  207  
  208     'refuses  to conver t non-IPv4 -mapped IP v6 address  to IPv4 a ddress': ( test) ->
  209       test.t hrows ->
  210         ipad dr.IPv6.pa rse('2001: db8::1').t oIPv4Addre ss()
  211       test.d one()
  212  
  213     'detects  reserved  IPv6 netwo rks': (tes t) ->
  214       test.e qual(ipadd r.IPv6.par se('::').r ange(),                           'unspecif ied')
  215       test.e qual(ipadd r.IPv6.par se('fe80:: 1234:5678: abcd:0123' ).range(),  'linkLoca l')
  216       test.e qual(ipadd r.IPv6.par se('ff00:: 1234').ran ge(),                  'multicas t')
  217       test.e qual(ipadd r.IPv6.par se('::1'). range(),                          'loopback ')
  218       test.e qual(ipadd r.IPv6.par se('fc00:: ').range() ,                      'uniqueLo cal')
  219       test.e qual(ipadd r.IPv6.par se('::ffff :192.168.1 .10').rang e(),        'ipv4Mapp ed')
  220       test.e qual(ipadd r.IPv6.par se('::ffff :0:192.168 .1.10').ra nge(),      'rfc6145' )
  221       test.e qual(ipadd r.IPv6.par se('64:ff9 b::1234'). range(),               'rfc6052' )
  222       test.e qual(ipadd r.IPv6.par se('2002:1 f63:45e8:: 1').range( ),          '6to4')
  223       test.e qual(ipadd r.IPv6.par se('2001:: 4242').ran ge(),                  'teredo')
  224       test.e qual(ipadd r.IPv6.par se('2001:d b8::3210') .range(),              'reserved ')
  225       test.e qual(ipadd r.IPv6.par se('2001:4 70:8:66::1 ').range() ,           'unicast' )
  226       test.d one()
  227  
  228     'is able  to determ ine IP add ress type' : (test) - >
  229       test.e qual(ipadd r.parse('8 .8.8.8').k ind(), 'ip v4')
  230       test.e qual(ipadd r.parse('2 001:db8:33 12::1').ki nd(), 'ipv 6')
  231       test.d one()
  232  
  233     'throws  an error i f tried to  parse an  invalid ad dress': (t est) ->
  234       test.t hrows ->
  235         ipad dr.parse(' ::some.non sense')
  236       test.d one()
  237  
  238     'correct ly process es IPv4-ma pped addre sses': (te st) ->
  239       test.e qual(ipadd r.process( '8.8.8.8') .kind(), ' ipv4')
  240       test.e qual(ipadd r.process( '2001:db8: 3312::1'). kind(), 'i pv6')
  241       test.e qual(ipadd r.process( '::ffff:19 2.168.1.1' ).kind(),  'ipv4')
  242       test.d one()
  243  
  244     'correct ly convert s IPv6 and  IPv4 addr esses to b yte arrays ': (test)  ->
  245       test.d eepEqual(i paddr.pars e('1.2.3.4 ').toByteA rray(),
  246              [0x1, 0x2,  0x3, 0x4] );
  247       # Fuck  yeah. The  first byt e of Googl e's IPv6 a ddress is  42. 42!
  248       test.d eepEqual(i paddr.pars e('2a00:14 50:8007::6 8').toByte Array(),
  249              [42, 0x00,  0x14, 0x5 0, 0x80, 0 x07, 0x00,  0x00, 0x0 0, 0x00, 0 x00, 0x00,  0x00, 0x0 0, 0x00, 0 x68 ])
  250       test.d one()
  251  
  252     'correct ly parses  1 as an IP v4 address ': (test)  ->
  253       test.e qual(ipadd r.IPv6.isV alid('1'),  false)
  254       test.e qual(ipadd r.IPv4.isV alid('1'),  true)
  255       test.d eepEqual(n ew ipaddr. IPv4([0, 0 , 0, 1]),  ipaddr.par se('1'))
  256       test.d one()
  257  
  258     'correct ly detects  IPv4 and  IPv6 CIDR  addresses' : (test) - >
  259       test.d eepEqual([ ipaddr.IPv 6.parse('f c00::'), 6 4],
  260                       i paddr.pars eCIDR('fc0 0::/64'))
  261       test.d eepEqual([ ipaddr.IPv 4.parse('1 .2.3.4'),  5],
  262                       i paddr.pars eCIDR('1.2 .3.4/5'))
  263       test.d one()
  264  
  265     'does no t consider  a very la rge or ver y small nu mber a val id IP addr ess': (tes t) ->
  266         test.equal (ipaddr.is Valid('4 PORTPORT 9'), false )
  267       test.e qual(ipadd r.isValid( '-1'), fal se)
  268       test.d one()
  269  
  270     'does no t hang on  ::8:8:8:8: 8:8:8:8:8' : (test) - >
  271       test.e qual(ipadd r.IPv6.isV alid('::8: 8:8:8:8:8: 8:8:8'), f alse)
  272       test.d one()
  273  
  274     'subnetM atch does  not fail o n empty ra nge': (tes t) ->
  275       ipaddr .subnetMat ch(new ipa ddr.IPv4([ 1,2,3,4]),  {}, false )
  276       ipaddr .subnetMat ch(new ipa ddr.IPv4([ 1,2,3,4]),  {subnet:  []}, false )
  277       test.d one()
  278  
  279     'subnetM atch retur ns default  subnet on  empty ran ge': (test ) ->
  280       test.e qual(ipadd r.subnetMa tch(new ip addr.IPv4( [1,2,3,4]) , {}, fals e), false)
  281       test.e qual(ipadd r.subnetMa tch(new ip addr.IPv4( [1,2,3,4]) , {subnet:  []}, fals e), false)
  282       test.d one()