jingle
Version:
Generic Jingle via WebRTC session manager.
303 lines (255 loc) • 6.78 kB
JavaScript
var test = require('tape');
var SessionManager = require('../');
var GenericSession = require('jingle-session');
test('Test session-initiate with no contents fails', function (t) {
t.plan(1);
var jingle = new SessionManager({
jid: 'zuser@example.com'
});
jingle.on('send', function (data) {
t.same(data, {
to: 'peer@example.com',
id: '123',
type: 'error',
error: {
type: 'cancel',
condition: 'bad-request'
}
});
});
jingle.process({
to: 'zuser@example.com',
from: 'peer@example.com',
id: '123',
type: 'set',
jingle: {
sid: 'sid123',
action: 'session-initiate',
contents: []
}
});
});
test('Test session action from wrong sender', function (t) {
t.plan(1);
var jingle = new SessionManager({
jid: 'zuser@example.com'
});
var sess = new GenericSession({
sid: 'sid123',
peer: 'otherpeer@example.com'
});
// We already sent a session request to the peer
jingle.addSession(sess);
sess.state = 'pending';
jingle.on('send', function (data) {
t.same(data, {
to: 'peer@example.com',
id: '123',
type: 'error',
error: {
type: 'cancel',
condition: 'item-not-found',
jingleCondition: 'unknown-session'
}
});
});
jingle.process({
to: 'zuser@example.com',
from: 'peer@example.com',
id: '123',
type: 'set',
jingle: {
sid: 'sid123',
action: 'session-info'
}
});
});
test('Duplicate session-accept', function (t) {
t.plan(1);
var jingle = new SessionManager({
jid: 'zuser@example.com'
});
var sess = new GenericSession({
sid: 'sid123',
peer: 'peer@example.com'
});
jingle.addSession(sess);
sess.state = 'active';
jingle.on('send', function (data) {
t.same(data, {
to: 'peer@example.com',
id: '123',
type: 'error',
error: {
type: 'cancel',
condition: 'unexpected-request',
jingleCondition: 'out-of-order'
}
});
});
jingle.process({
to: 'zuser@example.com',
from: 'peer@example.com',
id: '123',
type: 'set',
jingle: {
sid: 'sid123',
action: 'session-accept'
}
});
});
test('Session-initiate after session accepted', function (t) {
t.plan(1);
var jingle = new SessionManager({
jid: 'zuser@example.com'
});
var sess = new GenericSession({
sid: 'sid123',
peer: 'peer@example.com'
});
jingle.addSession(sess);
sess.state = 'active';
jingle.on('send', function (data) {
t.same(data, {
to: 'peer@example.com',
id: '123',
type: 'error',
error: {
type: 'cancel',
condition: 'unexpected-request',
jingleCondition: 'out-of-order'
}
});
});
jingle.process({
to: 'zuser@example.com',
from: 'peer@example.com',
id: '123',
type: 'set',
jingle: {
sid: 'sid123',
action: 'session-initiate',
contents: [
{
application: {applicationType: 'test'},
transport: {transportType: 'test'}
}
]
}
});
});
test('Test session action for unknown session', function (t) {
t.plan(1);
var jingle = new SessionManager({
jid: 'zuser@example.com'
});
var sess = new GenericSession({
sid: 'sid123',
peer: 'otherpeer@example.com'
});
// We already sent a session request to the peer
jingle.addSession(sess);
sess.state = 'pending';
jingle.on('send', function (data) {
t.same(data, {
to: 'peer@example.com',
id: '123',
type: 'error',
error: {
type: 'cancel',
condition: 'item-not-found',
jingleCondition: 'unknown-session'
}
});
});
jingle.process({
to: 'zuser@example.com',
from: 'peer@example.com',
id: '123',
type: 'set',
jingle: {
sid: 'sidunknown',
action: 'session-info'
}
});
});
test('Test new session with duplicate sid', function (t) {
t.plan(1);
var jingle = new SessionManager({
jid: 'zuser@example.com'
});
var sess = new GenericSession({
sid: 'sid123',
peer: 'peer@example.com'
});
// We already sent a session request to the peer
jingle.addSession(sess);
sess.state = 'active';
jingle.on('send', function (data) {
t.same(data, {
to: 'otherpeer@example.com',
id: '123',
type: 'error',
error: {
type: 'cancel',
condition: 'service-unavailable'
}
});
});
jingle.process({
to: 'zuser@example.com',
from: 'otherpeer@example.com',
id: '123',
type: 'set',
jingle: {
sid: 'sid123',
action: 'session-initiate',
contents: [
{
application: {applicationType: 'test'},
transport: {transportType: 'test'}
}
]
}
});
});
test('Test bad actions', function (t) {
t.plan(1);
var jingle = new SessionManager({
jid: 'zuser@example.com'
});
var sess = new GenericSession({
sid: 'sid123',
peer: 'peer@example.com'
});
// We already sent a session request to the peer
jingle.addSession(sess);
sess.state = 'active';
jingle.on('send', function (data) {
t.same(data, {
to: 'peer@example.com',
id: '123',
type: 'error',
error: {
type: 'cancel',
condition: 'bad-request'
}
});
});
jingle.process({
to: 'zuser@example.com',
from: 'peer@example.com',
id: '123',
type: 'set',
jingle: {
sid: 'sid123',
action: 'welp',
contents: [
{
application: {applicationType: 'test'},
transport: {transportType: 'test'}
}
]
}
});
});