diameter
Version:
Diameter base protocol implementation
74 lines (60 loc) • 2.88 kB
JavaScript
var Buffer = require('buffer').Buffer;
var types = require('../lib/diameter-types');
var _ = require('lodash');
describe('diameter-types', function() {
it('handles common types', function() {
var parsableTypes = types.getParsableTypes();
_.each(['OctetString',
'UTF8String',
'Unsigned32',
'Integer32',
'Unsigned64',
'Integer64',
'Time',
'IPAddress'], function(type) {
expect(_.includes(parsableTypes, type)).toBe(true);
});
});
it('throws on unknown type', function() {
expect(types.encode.bind(null, 'UnknownType', 'test')).toThrow('No handler for type: UnknownType');
expect(types.decode.bind(null, 'UnknownType', new Buffer('test'))).toThrow('No handler for type: UnknownType');
});
it('encodes OctetString', function() {
expect(types.encode('OctetString', new Buffer([ 0xde, 0xad, 0xbe, 0xef ])).toString('hex')).toBe('deadbeef');
});
it('decodes OctetString', function() {
expect(types.decode('OctetString', new Buffer([ 0xde, 0xad, 0xbe, 0xef ])).toString('hex')).toBe('deadbeef');
});
it('encodes UTF8String', function() {
expect(types.encode('UTF8String', 'test').toString('utf8')).toBe('test');
});
it('decodes UTF8String', function() {
expect(types.decode('UTF8String', new Buffer('test', 'utf8'))).toBe('test');
});
it('encodes Unsigned32', function() {
expect(types.encode('Unsigned32', 123).toString('hex')).toBe('0000007b');
});
it('decodes Unsigned32', function() {
expect(types.decode('Unsigned32', new Buffer('0000007b', 'hex'))).toBe(123);
});
it('encodes Integer32', function() {
expect(types.encode('Integer32', 123).toString('hex')).toBe('0000007b');
});
it('decodes Integer32', function() {
expect(types.decode('Integer32', new Buffer('0000007b', 'hex'))).toBe(123);
});
it('encodes IPAddress', function() {
expect(types.encode('IPAddress', '1.2.3.4').toString('hex')).toBe('000101020304');
expect(types.encode('IPAddress', '2001:0db8:0000:0000:0000:ff00:0042:8329').toString('hex'))
.toBe('000220010db8000000000000ff0000428329');
expect(types.encode('IPAddress', '2001:db8:0:0:0:ff00:42:8329').toString('hex'))
.toBe('000220010db8000000000000ff0000428329');
expect(types.encode('IPAddress', '2001:db8::ff00:42:8329').toString('hex'))
.toBe('000220010db8000000000000ff0000428329');
});
it('decodes IPAddress', function() {
expect(types.decode('IPAddress', new Buffer('000101020304', 'hex'))).toBe('1.2.3.4');
expect(types.decode('IPAddress', new Buffer('000220010db8000000000000ff0000428329', 'hex')))
.toBe('2001:db8::ff00:42:8329');
});
});