Commit 6203b05 for jssip.net
commit 6203b056f86f8d46a25ebc85240b64005a0dc675
Author: José Luis Millán <jmillan@aliax.net>
Date: Mon Jan 12 16:16:13 2026 +0100
Get rid of Gulp
diff --git a/BUILDING.md b/BUILDING.md
index ed67c92..0304e86 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -3,32 +3,15 @@
You just need to have [Node.js](https://nodejs.org/) and [Git](https://git-scm.com/).
-### Node.js
-
-* [Install Node.js](https://nodejs.org/en/download/)
-
-### Git
-
-* [Install Git](https://git-scm.com/book/en/Getting-Started-Installing-Git)
-
-
## How to build JsSIP
-Clone a copy of the main JsSIP git repository by running:
+Clone JsSIP git repository by running:
```bash
$ git clone https://github.com/versatica/JsSIP.git JsSIP
$ cd JsSIP
```
-Install `gulp-cli` (>= 1.2.2) globally (which provides the `gulp` command):
-
-```bash
-$ npm install -g gulp-cli
-```
-
-(you can also use the local `gulp` executable located in `node_modules/.bin/gulp`).
-
Install the Node.js dependencies:
```bash
diff --git a/gulpfile.js b/gulpfile.js
deleted file mode 100644
index dc8bd86..0000000
--- a/gulpfile.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/* eslint-disable strict */
-'use strict';
-/* eslint-enable strict */
-
-const gulp = require('gulp');
-const expect = require('gulp-expect-file');
-const nodeunit = require('gulp-nodeunit-runner');
-
-// gulp-expect-file options.
-const EXPECT_OPTIONS = {
- silent : true,
- errorOnFailure : true,
- checkRealFile : true
-};
-
-gulp.task('test', function()
-{
- const src = [
- 'test/test-parser.js'
- ];
-
- return gulp.src(src)
- .pipe(expect(EXPECT_OPTIONS, src))
- .pipe(nodeunit({ reporter: 'default' }));
-});
diff --git a/npm-scripts.js b/npm-scripts.js
index 7e1450f..7414f88 100644
--- a/npm-scripts.js
+++ b/npm-scripts.js
@@ -6,7 +6,7 @@ const { version } = require('./package.json');
const task = process.argv.slice(2).join(' ');
-const ESLINT_PATHS = [ 'gulpfile.js', 'src', 'test' ].join(' ');
+const ESLINT_PATHS = [ 'src', 'test' ].join(' ');
// eslint-disable-next-line no-console
console.log(`npm-scripts.js [INFO] running task "${task}"`);
@@ -61,15 +61,7 @@ function test()
{
logInfo('test()');
- executeCmd('jest test/test-classes.js');
- executeCmd('jest test/test-digestAuthentication.js');
- executeCmd('jest test/test-normalizeTarget.js');
- executeCmd('jest test/test-properties.js');
- executeCmd('jest test/test-UA-no-WebRTC.js');
-
- executeCmd('gulp test');
-
- // executeCmd(jest);
+ executeCmd('jest');
}
function grammar()
diff --git a/package.json b/package.json
index 439887d..e7c6c14 100644
--- a/package.json
+++ b/package.json
@@ -39,9 +39,6 @@
"eslint": "^9.39.1",
"eslint-plugin-jest": "^29.12.1",
"globals": "^17.0.0",
- "gulp": "^4.0.2",
- "gulp-expect-file": "^1.0.2",
- "gulp-nodeunit-runner": "^0.2.2",
"jest": "^30.2.0",
"pegjs": "^0.7.0"
},
diff --git a/test/test-parser.js b/test/test-parser.js
index 355c1e3..b4554c9 100644
--- a/test/test-parser.js
+++ b/test/test-parser.js
@@ -2,425 +2,387 @@ require('./include/common');
const JsSIP = require('../');
-module.exports = {
- 'parse URI' : function(test)
+describe('parser', () =>
+{
+ test('parse URI', () =>
{
const data = 'SIP:%61liCE@versaTICA.Com:6060;TRansport=TCp;Foo=ABc;baz?X-Header-1=AaA1&X-Header-2=BbB&x-header-1=AAA2';
const uri = JsSIP.URI.parse(data);
// Parsed data.
- test.ok(uri instanceof(JsSIP.URI));
- test.strictEqual(uri.scheme, 'sip');
- test.strictEqual(uri.user, 'aliCE');
- test.strictEqual(uri.host, 'versatica.com');
- test.strictEqual(uri.port, 6060);
- test.strictEqual(uri.hasParam('transport'), true);
- test.strictEqual(uri.hasParam('nooo'), false);
- test.strictEqual(uri.getParam('transport'), 'tcp');
- test.strictEqual(uri.getParam('foo'), 'ABc');
- test.strictEqual(uri.getParam('baz'), null);
- test.strictEqual(uri.getParam('nooo'), undefined);
- test.deepEqual(uri.getHeader('x-header-1'), [ 'AaA1', 'AAA2' ]);
- test.deepEqual(uri.getHeader('X-HEADER-2'), [ 'BbB' ]);
- test.strictEqual(uri.getHeader('nooo'), undefined);
- test.strictEqual(uri.toString(), 'sip:aliCE@versatica.com:6060;transport=tcp;foo=ABc;baz?X-Header-1=AaA1&X-Header-1=AAA2&X-Header-2=BbB');
- test.strictEqual(uri.toAor(), 'sip:aliCE@versatica.com');
+ expect(uri instanceof (JsSIP.URI)).toBeTruthy();
+ expect(uri.scheme).toBe('sip');
+ expect(uri.user).toBe('aliCE');
+ expect(uri.host).toBe('versatica.com');
+ expect(uri.port).toBe(6060);
+ expect(uri.hasParam('transport')).toBe(true);
+ expect(uri.hasParam('nooo')).toBe(false);
+ expect(uri.getParam('transport')).toBe('tcp');
+ expect(uri.getParam('foo')).toBe('ABc');
+ expect(uri.getParam('baz')).toBe(null);
+ expect(uri.getParam('nooo')).toBe(undefined);
+ expect(uri.getHeader('x-header-1')).toEqual([ 'AaA1', 'AAA2' ]);
+ expect(uri.getHeader('X-HEADER-2')).toEqual([ 'BbB' ]);
+ expect(uri.getHeader('nooo')).toBe(undefined);
+ expect(uri.toString()).toBe('sip:aliCE@versatica.com:6060;transport=tcp;foo=ABc;baz?X-Header-1=AaA1&X-Header-1=AAA2&X-Header-2=BbB');
+ expect(uri.toAor()).toBe('sip:aliCE@versatica.com');
// Alter data.
uri.user = 'Iñaki:PASSWD';
- test.strictEqual(uri.user, 'Iñaki:PASSWD');
- test.strictEqual(uri.deleteParam('foo'), 'ABc');
- test.deepEqual(uri.deleteHeader('x-header-1'), [ 'AaA1', 'AAA2' ]);
- test.strictEqual(uri.toString(), 'sip:I%C3%B1aki:PASSWD@versatica.com:6060;transport=tcp;baz?X-Header-2=BbB');
- test.strictEqual(uri.toAor(), 'sip:I%C3%B1aki:PASSWD@versatica.com');
+ expect(uri.user).toBe('Iñaki:PASSWD');
+ expect(uri.deleteParam('foo')).toBe('ABc');
+ expect(uri.deleteHeader('x-header-1')).toEqual([ 'AaA1', 'AAA2' ]);
+ expect(uri.toString()).toBe('sip:I%C3%B1aki:PASSWD@versatica.com:6060;transport=tcp;baz?X-Header-2=BbB');
+ expect(uri.toAor()).toBe('sip:I%C3%B1aki:PASSWD@versatica.com');
uri.clearParams();
uri.clearHeaders();
uri.port = null;
- test.strictEqual(uri.toString(), 'sip:I%C3%B1aki:PASSWD@versatica.com');
- test.strictEqual(uri.toAor(), 'sip:I%C3%B1aki:PASSWD@versatica.com');
+ expect(uri.toString()).toBe('sip:I%C3%B1aki:PASSWD@versatica.com');
+ expect(uri.toAor()).toBe('sip:I%C3%B1aki:PASSWD@versatica.com');
+ });
- test.done();
- },
-
- 'parse NameAddr' : function(test)
+ test('parse NameAddr', () =>
{
const data = ' "Iñaki ðđøþ foo \\"bar\\" \\\\\\\\ \\\\ \\\\d \\\\\\\\d \\\\\' \\\\\\"sdf\\\\\\"" ' +
- '<SIP:%61liCE@versaTICA.Com:6060;TRansport=TCp;Foo=ABc;baz?X-Header-1=AaA1&X-Header-2=BbB&x-header-1=AAA2>;QWE=QWE;ASd';
-
+ '<SIP:%61liCE@versaTICA.Com:6060;TRansport=TCp;Foo=ABc;baz?X-Header-1=AaA1&X-Header-2=BbB&x-header-1=AAA2>;QWE=QWE;ASd';
const name = JsSIP.NameAddrHeader.parse(data);
// Parsed data.
- test.ok(name instanceof(JsSIP.NameAddrHeader));
- test.strictEqual(name.display_name, 'Iñaki ðđøþ foo "bar" \\\\ \\ \\d \\\\d \\\' \\"sdf\\"');
- test.strictEqual(name.hasParam('qwe'), true);
- test.strictEqual(name.hasParam('asd'), true);
- test.strictEqual(name.hasParam('nooo'), false);
- test.strictEqual(name.getParam('qwe'), 'QWE');
- test.strictEqual(name.getParam('asd'), null);
+ expect(name instanceof (JsSIP.NameAddrHeader)).toBeTruthy();
+ expect(name.display_name).toBe('Iñaki ðđøþ foo "bar" \\\\ \\ \\d \\\\d \\\' \\"sdf\\"');
+ expect(name.hasParam('qwe')).toBe(true);
+ expect(name.hasParam('asd')).toBe(true);
+ expect(name.hasParam('nooo')).toBe(false);
+ expect(name.getParam('qwe')).toBe('QWE');
+ expect(name.getParam('asd')).toBe(null);
const uri = name.uri;
- test.ok(uri instanceof(JsSIP.URI));
- test.strictEqual(uri.scheme, 'sip');
- test.strictEqual(uri.user, 'aliCE');
- test.strictEqual(uri.host, 'versatica.com');
- test.strictEqual(uri.port, 6060);
- test.strictEqual(uri.hasParam('transport'), true);
- test.strictEqual(uri.hasParam('nooo'), false);
- test.strictEqual(uri.getParam('transport'), 'tcp');
- test.strictEqual(uri.getParam('foo'), 'ABc');
- test.strictEqual(uri.getParam('baz'), null);
- test.strictEqual(uri.getParam('nooo'), undefined);
- test.deepEqual(uri.getHeader('x-header-1'), [ 'AaA1', 'AAA2' ]);
- test.deepEqual(uri.getHeader('X-HEADER-2'), [ 'BbB' ]);
- test.strictEqual(uri.getHeader('nooo'), undefined);
+ expect(uri instanceof (JsSIP.URI)).toBeTruthy();
+ expect(uri.scheme).toBe('sip');
+ expect(uri.user).toBe('aliCE');
+ expect(uri.host).toBe('versatica.com');
+ expect(uri.port).toBe(6060);
+ expect(uri.hasParam('transport')).toBe(true);
+ expect(uri.hasParam('nooo')).toBe(false);
+ expect(uri.getParam('transport')).toBe('tcp');
+ expect(uri.getParam('foo')).toBe('ABc');
+ expect(uri.getParam('baz')).toBe(null);
+ expect(uri.getParam('nooo')).toBe(undefined);
+ expect(uri.getHeader('x-header-1')).toEqual([ 'AaA1', 'AAA2' ]);
+ expect(uri.getHeader('X-HEADER-2')).toEqual([ 'BbB' ]);
+ expect(uri.getHeader('nooo')).toBe(undefined);
// Alter data.
name.display_name = 'Foo Bar';
- test.strictEqual(name.display_name, 'Foo Bar');
+ expect(name.display_name).toBe('Foo Bar');
name.display_name = null;
- test.strictEqual(name.display_name, null);
- test.strictEqual(name.toString(), '<sip:aliCE@versatica.com:6060;transport=tcp;foo=ABc;baz?X-Header-1=AaA1&X-Header-1=AAA2&X-Header-2=BbB>;qwe=QWE;asd');
+ expect(name.display_name).toBe(null);
+ expect(name.toString()).toBe('<sip:aliCE@versatica.com:6060;transport=tcp;foo=ABc;baz?X-Header-1=AaA1&X-Header-1=AAA2&X-Header-2=BbB>;qwe=QWE;asd');
uri.user = 'Iñaki:PASSWD';
- test.strictEqual(uri.toAor(), 'sip:I%C3%B1aki:PASSWD@versatica.com');
-
- test.done();
- },
+ expect(uri.toAor()).toBe('sip:I%C3%B1aki:PASSWD@versatica.com');
+ });
- 'parse invalid NameAddr with non UTF-8 characters' : function(test)
+ test('parse invalid NameAddr with non UTF-8 characters', () =>
{
const buffer = Buffer.from([ 0xC0 ]);
const data = `"${buffer.toString()}"` +
- '<sip:foo@bar.com>';
-
+ '<sip:foo@bar.com>';
const name = JsSIP.NameAddrHeader.parse(data);
// Parsed data.
- test.ok(name instanceof(JsSIP.NameAddrHeader));
- test.strictEqual(name.display_name, buffer.toString());
+ expect(name instanceof (JsSIP.NameAddrHeader)).toBeTruthy();
+ expect(name.display_name).toBe(buffer.toString());
const uri = name.uri;
- test.ok(uri instanceof(JsSIP.URI));
- test.strictEqual(uri.scheme, 'sip');
- test.strictEqual(uri.user, 'foo');
- test.strictEqual(uri.host, 'bar.com');
- test.strictEqual(uri.port, undefined);
-
- test.done();
- },
+ expect(uri instanceof (JsSIP.URI)).toBeTruthy();
+ expect(uri.scheme).toBe('sip');
+ expect(uri.user).toBe('foo');
+ expect(uri.host).toBe('bar.com');
+ expect(uri.port).toBe(undefined);
+ });
- 'parse NameAddr with token display_name' : function(test)
+ test('parse NameAddr with token display_name', () =>
{
const data = 'Foo Foo Bar\tBaz<SIP:%61liCE@versaTICA.Com:6060;TRansport=TCp;Foo=ABc;baz?X-Header-1=AaA1&X-Header-2=BbB&x-header-1=AAA2>;QWE=QWE;ASd';
-
const name = JsSIP.NameAddrHeader.parse(data);
// Parsed data.
- test.ok(name instanceof(JsSIP.NameAddrHeader));
- test.strictEqual(name.display_name, 'Foo Foo Bar Baz');
+ expect(name instanceof (JsSIP.NameAddrHeader)).toBeTruthy();
+ expect(name.display_name).toBe('Foo Foo Bar Baz');
+ });
- test.done();
- },
-
- 'parse NameAddr with no space between DQUOTE and LAQUOT' : function(test)
+ test('parse NameAddr with no space between DQUOTE and LAQUOT', () =>
{
const data = '"Foo"<SIP:%61liCE@versaTICA.Com:6060;TRansport=TCp;Foo=ABc;baz?X-Header-1=AaA1&X-Header-2=BbB&x-header-1=AAA2>;QWE=QWE;ASd';
-
const name = JsSIP.NameAddrHeader.parse(data);
// Parsed data.
- test.ok(name instanceof(JsSIP.NameAddrHeader));
- test.strictEqual(name.display_name, 'Foo');
-
- test.done();
- },
+ expect(name instanceof (JsSIP.NameAddrHeader)).toBeTruthy();
+ expect(name.display_name).toBe('Foo');
+ });
- 'parse NameAddr with no display_name' : function(test)
+ test('parse NameAddr with no display_name', () =>
{
const data = '<SIP:%61liCE@versaTICA.Com:6060;TRansport=TCp;Foo=ABc;baz?X-Header-1=AaA1&X-Header-2=BbB&x-header-1=AAA2>;QWE=QWE;ASd';
-
const name = JsSIP.NameAddrHeader.parse(data);
// Parsed data.
- test.ok(name instanceof(JsSIP.NameAddrHeader));
- test.strictEqual(name.display_name, undefined);
-
- test.done();
- },
+ expect(name instanceof (JsSIP.NameAddrHeader)).toBeTruthy();
+ expect(name.display_name).toBe(undefined);
+ });
- 'parse multiple Contact' : function(test)
+ test('parse multiple Contact', () =>
{
const data = '"Iñaki @ł€" <SIP:+1234@ALIAX.net;Transport=WS>;+sip.Instance="abCD", sip:bob@biloxi.COM;headerParam, <sip:DOMAIN.com:5>';
const contacts = JsSIP.Grammar.parse(data, 'Contact');
- test.ok(contacts instanceof(Array));
- test.strictEqual(contacts.length, 3);
+ expect(contacts instanceof (Array)).toBeTruthy();
+ expect(contacts.length).toBe(3);
const c1 = contacts[0].parsed;
const c2 = contacts[1].parsed;
const c3 = contacts[2].parsed;
// Parsed data.
- test.ok(c1 instanceof(JsSIP.NameAddrHeader));
- test.strictEqual(c1.display_name, 'Iñaki @ł€');
- test.strictEqual(c1.hasParam('+sip.instance'), true);
- test.strictEqual(c1.hasParam('nooo'), false);
- test.strictEqual(c1.getParam('+SIP.instance'), '"abCD"');
- test.strictEqual(c1.getParam('nooo'), undefined);
- test.ok(c1.uri instanceof(JsSIP.URI));
- test.strictEqual(c1.uri.scheme, 'sip');
- test.strictEqual(c1.uri.user, '+1234');
- test.strictEqual(c1.uri.host, 'aliax.net');
- test.strictEqual(c1.uri.port, undefined);
- test.strictEqual(c1.uri.getParam('transport'), 'ws');
- test.strictEqual(c1.uri.getParam('foo'), undefined);
- test.strictEqual(c1.uri.getHeader('X-Header'), undefined);
- test.strictEqual(c1.toString(), '"Iñaki @ł€" <sip:+1234@aliax.net;transport=ws>;+sip.instance="abCD"');
+ expect(c1 instanceof (JsSIP.NameAddrHeader)).toBeTruthy();
+ expect(c1.display_name).toBe('Iñaki @ł€');
+ expect(c1.hasParam('+sip.instance')).toBe(true);
+ expect(c1.hasParam('nooo')).toBe(false);
+ expect(c1.getParam('+SIP.instance')).toBe('"abCD"');
+ expect(c1.getParam('nooo')).toBe(undefined);
+ expect(c1.uri instanceof (JsSIP.URI)).toBeTruthy();
+ expect(c1.uri.scheme).toBe('sip');
+ expect(c1.uri.user).toBe('+1234');
+ expect(c1.uri.host).toBe('aliax.net');
+ expect(c1.uri.port).toBe(undefined);
+ expect(c1.uri.getParam('transport')).toBe('ws');
+ expect(c1.uri.getParam('foo')).toBe(undefined);
+ expect(c1.uri.getHeader('X-Header')).toBe(undefined);
+ expect(c1.toString()).toBe('"Iñaki @ł€" <sip:+1234@aliax.net;transport=ws>;+sip.instance="abCD"');
// Alter data.
c1.display_name = '€€€';
- test.strictEqual(c1.display_name, '€€€');
+ expect(c1.display_name).toBe('€€€');
c1.uri.user = '+999';
- test.strictEqual(c1.uri.user, '+999');
+ expect(c1.uri.user).toBe('+999');
c1.setParam('+sip.instance', '"zxCV"');
- test.strictEqual(c1.getParam('+SIP.instance'), '"zxCV"');
+ expect(c1.getParam('+SIP.instance')).toBe('"zxCV"');
c1.setParam('New-Param', null);
- test.strictEqual(c1.hasParam('NEW-param'), true);
+ expect(c1.hasParam('NEW-param')).toBe(true);
c1.uri.setParam('New-Param', null);
- test.strictEqual(c1.toString(), '"€€€" <sip:+999@aliax.net;transport=ws;new-param>;+sip.instance="zxCV";new-param');
+ expect(c1.toString()).toBe('"€€€" <sip:+999@aliax.net;transport=ws;new-param>;+sip.instance="zxCV";new-param');
// Parsed data.
- test.ok(c2 instanceof(JsSIP.NameAddrHeader));
- test.strictEqual(c2.display_name, undefined);
- test.strictEqual(c2.hasParam('HEADERPARAM'), true);
- test.ok(c2.uri instanceof(JsSIP.URI));
- test.strictEqual(c2.uri.scheme, 'sip');
- test.strictEqual(c2.uri.user, 'bob');
- test.strictEqual(c2.uri.host, 'biloxi.com');
- test.strictEqual(c2.uri.port, undefined);
- test.strictEqual(c2.uri.hasParam('headerParam'), false);
- test.strictEqual(c2.toString(), '<sip:bob@biloxi.com>;headerparam');
+ expect(c2 instanceof (JsSIP.NameAddrHeader)).toBeTruthy();
+ expect(c2.display_name).toBe(undefined);
+ expect(c2.hasParam('HEADERPARAM')).toBe(true);
+ expect(c2.uri instanceof (JsSIP.URI)).toBeTruthy();
+ expect(c2.uri.scheme).toBe('sip');
+ expect(c2.uri.user).toBe('bob');
+ expect(c2.uri.host).toBe('biloxi.com');
+ expect(c2.uri.port).toBe(undefined);
+ expect(c2.uri.hasParam('headerParam')).toBe(false);
+ expect(c2.toString()).toBe('<sip:bob@biloxi.com>;headerparam');
// Alter data.
c2.display_name = '@ł€ĸłæß';
- test.strictEqual(c2.toString(), '"@ł€ĸłæß" <sip:bob@biloxi.com>;headerparam');
+ expect(c2.toString()).toBe('"@ł€ĸłæß" <sip:bob@biloxi.com>;headerparam');
// Parsed data.
- test.ok(c3 instanceof(JsSIP.NameAddrHeader));
- test.strictEqual(c3.display_name, undefined);
- test.ok(c3.uri instanceof(JsSIP.URI));
- test.strictEqual(c3.uri.scheme, 'sip');
- test.strictEqual(c3.uri.user, undefined);
- test.strictEqual(c3.uri.host, 'domain.com');
- test.strictEqual(c3.uri.port, 5);
- test.strictEqual(c3.uri.hasParam('nooo'), false);
- test.strictEqual(c3.toString(), '<sip:domain.com:5>');
+ expect(c3 instanceof (JsSIP.NameAddrHeader)).toBeTruthy();
+ expect(c3.displayName).toBe(undefined);
+ expect(c3.uri instanceof (JsSIP.URI)).toBeTruthy();
+ expect(c3.uri.scheme).toBe('sip');
+ expect(c3.uri.user).toBe(undefined);
+ expect(c3.uri.host).toBe('domain.com');
+ expect(c3.uri.port).toBe(5);
+ expect(c3.uri.hasParam('nooo')).toBe(false);
+ expect(c3.toString()).toBe('<sip:domain.com:5>');
// Alter data.
c3.uri.setParam('newUriParam', 'zxCV');
c3.setParam('newHeaderParam', 'zxCV');
- test.strictEqual(c3.toString(), '<sip:domain.com:5;newuriparam=zxCV>;newheaderparam=zxCV');
-
- test.done();
- },
+ expect(c3.toString()).toBe('<sip:domain.com:5;newuriparam=zxCV>;newheaderparam=zxCV');
+ });
- 'parse Via' : function(test)
+ test('parse Via', () =>
{
let data = 'SIP / 3.0 \r\n / UDP [1:ab::FF]:6060 ;\r\n BRanch=1234;Param1=Foo;paRAM2;param3=Bar';
let via = JsSIP.Grammar.parse(data, 'Via');
- test.strictEqual(via.protocol, 'SIP');
- test.strictEqual(via.transport, 'UDP');
- test.strictEqual(via.host, '[1:ab::FF]');
- test.strictEqual(via.host_type, 'IPv6');
- test.strictEqual(via.port, 6060);
- test.strictEqual(via.branch, '1234');
- test.deepEqual(via.params, { param1: 'Foo', param2: undefined, param3: 'Bar' });
+ expect(via.protocol).toBe('SIP');
+ expect(via.transport).toBe('UDP');
+ expect(via.host).toBe('[1:ab::FF]');
+ expect(via.host_type).toBe('IPv6');
+ expect(via.port).toBe(6060);
+ expect(via.branch).toBe('1234');
+ expect(via.params).toEqual({ param1: 'Foo', param2: undefined, param3: 'Bar' });
data = 'SIP / 3.0 \r\n / UDP [1:ab::FF]:6060 ;\r\n BRanch=1234;rport=1111;Param1=Foo;paRAM2;param3=Bar';
via = JsSIP.Grammar.parse(data, 'Via');
- test.strictEqual(via.protocol, 'SIP');
- test.strictEqual(via.transport, 'UDP');
- test.strictEqual(via.host, '[1:ab::FF]');
- test.strictEqual(via.host_type, 'IPv6');
- test.strictEqual(via.port, 6060);
- test.strictEqual(via.branch, '1234');
- test.strictEqual(via.rport, 1111);
- test.deepEqual(via.params, { param1: 'Foo', param2: undefined, param3: 'Bar' });
+ expect(via.protocol).toBe('SIP');
+ expect(via.transport).toBe('UDP');
+ expect(via.host).toBe('[1:ab::FF]');
+ expect(via.host_type).toBe('IPv6');
+ expect(via.port).toBe(6060);
+ expect(via.branch).toBe('1234');
+ expect(via.rport).toBe(1111);
+ expect(via.params).toEqual({ param1: 'Foo', param2: undefined, param3: 'Bar' });
data = 'SIP / 3.0 \r\n / UDP [1:ab::FF]:6060 ;\r\n BRanch=1234;rport;Param1=Foo;paRAM2;param3=Bar';
via = JsSIP.Grammar.parse(data, 'Via');
- test.strictEqual(via.protocol, 'SIP');
- test.strictEqual(via.transport, 'UDP');
- test.strictEqual(via.host, '[1:ab::FF]');
- test.strictEqual(via.host_type, 'IPv6');
- test.strictEqual(via.port, 6060);
- test.strictEqual(via.branch, '1234');
- test.strictEqual(via.rport, undefined);
- test.deepEqual(via.params, { param1: 'Foo', param2: undefined, param3: 'Bar' });
-
- test.done();
- },
-
- 'parse CSeq' : function(test)
+ expect(via.protocol).toBe('SIP');
+ expect(via.transport).toBe('UDP');
+ expect(via.host).toBe('[1:ab::FF]');
+ expect(via.host_type).toBe('IPv6');
+ expect(via.port).toBe(6060);
+ expect(via.branch).toBe('1234');
+ expect(via.rport).toBe(undefined);
+ expect(via.params).toEqual({ param1: 'Foo', param2: undefined, param3: 'Bar' });
+ });
+
+ test('parse CSeq', () =>
{
const data = '123456 CHICKEN';
const cseq = JsSIP.Grammar.parse(data, 'CSeq');
- test.strictEqual(cseq.value, 123456);
- test.strictEqual(cseq.method, 'CHICKEN');
-
- test.done();
- },
+ expect(cseq.value).toBe(123456);
+ expect(cseq.method).toBe('CHICKEN');
+ });
- 'parse authentication challenge' : function(test)
+ test('parse authentication challenge', () =>
{
const data = 'Digest realm = "[1:ABCD::abc]", nonce = "31d0a89ed7781ce6877de5cb032bf114", qop="AUTH,autH-INt", algorithm = md5 , stale = TRUE , opaque = "00000188"';
const auth = JsSIP.Grammar.parse(data, 'challenge');
- test.strictEqual(auth.realm, '[1:ABCD::abc]');
- test.strictEqual(auth.nonce, '31d0a89ed7781ce6877de5cb032bf114');
- test.deepEqual(auth.qop, [ 'auth', 'auth-int' ]);
- test.strictEqual(auth.algorithm, 'MD5');
- test.strictEqual(auth.stale, true);
- test.strictEqual(auth.opaque, '00000188');
+ expect(auth.realm).toBe('[1:ABCD::abc]');
+ expect(auth.nonce).toBe('31d0a89ed7781ce6877de5cb032bf114');
+ expect(auth.qop).toEqual([ 'auth', 'auth-int' ]);
+ expect(auth.algorithm).toBe('MD5');
+ expect(auth.stale).toBe(true);
+ expect(auth.opaque).toBe('00000188');
+ });
- test.done();
- },
-
- 'parse Event' : function(test)
+ test('parse Event', () =>
{
const data = 'Presence;Param1=QWe;paraM2';
const event = JsSIP.Grammar.parse(data, 'Event');
- test.strictEqual(event.event, 'presence');
- test.deepEqual(event.params, { param1: 'QWe', param2: undefined });
-
- test.done();
- },
+ expect(event.event).toBe('presence');
+ expect(event.params).toEqual({ param1: 'QWe', param2: undefined });
+ });
- 'parse Session-Expires' : function(test)
+ test('parse Session-Expires', () =>
{
let data, session_expires;
data = '180;refresher=uac';
session_expires = JsSIP.Grammar.parse(data, 'Session_Expires');
- test.strictEqual(session_expires.expires, 180);
- test.strictEqual(session_expires.refresher, 'uac');
+ expect(session_expires.expires).toBe(180);
+ expect(session_expires.refresher).toBe('uac');
data = '210 ; refresher = UAS ; foo = bar';
session_expires = JsSIP.Grammar.parse(data, 'Session_Expires');
- test.strictEqual(session_expires.expires, 210);
- test.strictEqual(session_expires.refresher, 'uas');
-
- test.done();
- },
+ expect(session_expires.expires).toBe(210);
+ expect(session_expires.refresher).toBe('uas');
+ });
- 'parse Reason' : function(test)
+ test('parse Reason', () =>
{
let data, reason;
data = 'SIP ; cause = 488 ; text = "Wrong SDP"';
reason = JsSIP.Grammar.parse(data, 'Reason');
- test.strictEqual(reason.protocol, 'sip');
- test.strictEqual(reason.cause, 488);
- test.strictEqual(reason.text, 'Wrong SDP');
+ expect(reason.protocol).toBe('sip');
+ expect(reason.cause).toBe(488);
+ expect(reason.text).toBe('Wrong SDP');
data = 'ISUP; cause=500 ; LALA = foo';
reason = JsSIP.Grammar.parse(data, 'Reason');
- test.strictEqual(reason.protocol, 'isup');
- test.strictEqual(reason.cause, 500);
- test.strictEqual(reason.text, undefined);
- test.strictEqual(reason.params.lala, 'foo');
+ expect(reason.protocol).toBe('isup');
+ expect(reason.cause).toBe(500);
+ expect(reason.text).toBe(undefined);
+ expect(reason.params.lala).toBe('foo');
+ });
- test.done();
- },
-
- 'parse host' : function(test)
+ test('parse host', () =>
{
let data, parsed;
data = 'versatica.com';
- test.ok((parsed = JsSIP.Grammar.parse(data, 'host')) !== -1);
- test.strictEqual(parsed.host_type, 'domain');
+ expect((parsed = JsSIP.Grammar.parse(data, 'host'))).not.toBe(-1);
+ expect(parsed.host_type).toBe('domain');
data = 'myhost123';
- test.ok((parsed = JsSIP.Grammar.parse(data, 'host')) !== -1);
- test.strictEqual(parsed.host_type, 'domain');
+ expect((parsed = JsSIP.Grammar.parse(data, 'host'))).not.toBe(-1);
+ expect(parsed.host_type).toBe('domain');
data = '1.2.3.4';
- test.ok((parsed = JsSIP.Grammar.parse(data, 'host')) !== -1);
- test.strictEqual(parsed.host_type, 'IPv4');
+ expect((parsed = JsSIP.Grammar.parse(data, 'host'))).not.toBe(-1);
+ expect(parsed.host_type).toBe('IPv4');
data = '[1:0:fF::432]';
- test.ok((parsed = JsSIP.Grammar.parse(data, 'host')) !== -1);
- test.strictEqual(parsed.host_type, 'IPv6');
+ expect((parsed = JsSIP.Grammar.parse(data, 'host'))).not.toBe(-1);
+ expect(parsed.host_type).toBe('IPv6');
data = '1.2.3.444';
- test.ok(JsSIP.Grammar.parse(data, 'host') === -1);
+ expect((parsed = JsSIP.Grammar.parse(data, 'host'))).toBe(-1);
data = 'iñaki.com';
- test.ok(JsSIP.Grammar.parse(data, 'host') === -1);
+ expect((parsed = JsSIP.Grammar.parse(data, 'host'))).toBe(-1);
data = '1.2.3.bar.qwe-asd.foo';
- test.ok((parsed = JsSIP.Grammar.parse(data, 'host')) !== -1);
- test.strictEqual(parsed.host_type, 'domain');
+ expect((parsed = JsSIP.Grammar.parse(data, 'host'))).not.toBe(-1);
+ expect(parsed.host_type).toBe('domain');
data = '1.2.3.4.bar.qwe-asd.foo';
- test.ok((parsed = JsSIP.Grammar.parse(data, 'host')) !== -1);
- test.strictEqual(parsed.host_type, 'domain');
-
- test.done();
- },
+ expect((parsed = JsSIP.Grammar.parse(data, 'host'))).not.toBe(-1);
+ expect(parsed.host_type).toBe('domain');
+ });
- 'parse Refer-To' : function(test)
+ test('parse Refer-To', () =>
{
let data, parsed;
data = 'sip:alice@versatica.com';
- test.ok((parsed = JsSIP.Grammar.parse(data, 'Refer_To')) !== -1);
- test.strictEqual(parsed.uri.scheme, 'sip');
- test.strictEqual(parsed.uri.user, 'alice');
- test.strictEqual(parsed.uri.host, 'versatica.com');
+ expect((parsed = JsSIP.Grammar.parse(data, 'Refer_To'))).not.toBe(-1);
+ expect(parsed.uri.scheme).toBe('sip');
+ expect(parsed.uri.user).toBe('alice');
+ expect(parsed.uri.host).toBe('versatica.com');
data = '<sip:bob@versatica.com?Accept-Contact=sip:bobsdesk.versatica.com>';
- test.ok((parsed = JsSIP.Grammar.parse(data, 'Refer_To')) !== -1);
- test.strictEqual(parsed.uri.scheme, 'sip');
- test.strictEqual(parsed.uri.user, 'bob');
- test.strictEqual(parsed.uri.host, 'versatica.com');
- test.ok(parsed.uri.hasHeader('Accept-Contact') === true);
-
- test.done();
- },
-
- 'parse Replaces' : function(test)
+ expect((parsed = JsSIP.Grammar.parse(data, 'Refer_To'))).not.toBe(-1);
+ expect(parsed.uri.scheme).toBe('sip');
+ expect(parsed.uri.user).toBe('bob');
+ expect(parsed.uri.host).toBe('versatica.com');
+ expect(parsed.uri.hasHeader('Accept-Contact')).toBe(true);
+ });
+
+ test('parse Replaces', () =>
{
let parsed;
const data = '5t2gpbrbi72v79p1i8mr;to-tag=03aq91cl9n;from-tag=kun98clbf7';
- test.ok((parsed = JsSIP.Grammar.parse(data, 'Replaces')) !== -1);
- test.strictEqual(parsed.call_id, '5t2gpbrbi72v79p1i8mr');
- test.strictEqual(parsed.to_tag, '03aq91cl9n');
- test.strictEqual(parsed.from_tag, 'kun98clbf7');
-
- test.done();
- },
+ expect((parsed = JsSIP.Grammar.parse(data, 'Replaces'))).not.toBe(-1);
+ expect(parsed.call_id).toBe('5t2gpbrbi72v79p1i8mr');
+ expect(parsed.to_tag).toBe('03aq91cl9n');
+ expect(parsed.from_tag).toBe('kun98clbf7');
+ });
- 'parse Status Line' : function(test)
+ test('parse Status Line', () =>
{
const data = 'SIP/2.0 420 Bad Extension';
let parsed;
- test.ok((parsed = JsSIP.Grammar.parse(data, 'Status_Line')) !== -1);
- test.strictEqual(parsed.status_code, 420);
-
- test.done();
- }
-};
+ expect((parsed = JsSIP.Grammar.parse(data, 'Status_Line'))).not.toBe(-1);
+ expect(parsed.status_code).toBe(420);
+ });
+});