ezdev-onvif
Version:
Client to ONVIF NVT devices Profile S: cameras
136 lines (122 loc) • 5.8 kB
text/coffeescript
synthTest = not process.env.HOSTNAME
assert = require 'assert'
onvif = require('../lib/onvif')
serverMockup = require('./serverMockup') if synthTest
util = require('util')
describe 'Media', () ->
cam = null
before (done) ->
options = {
hostname: process.env.HOSTNAME || 'localhost'
username: process.env.USERNAME || 'admin'
password: process.env.PASSWORD || '9999'
port: if process.env.PORT then parseInt(process.env.PORT) else 10101
}
cam = new onvif.Cam options, done
describe 'getProfiles', () ->
it 'should create an array of profile objects with correspondent properties', (done) ->
cam.getProfiles (err, data) ->
assert.equal err, null
assert.ok Object.keys(cam.profiles).length > 0
assert.equal cam.profiles, data
done()
describe 'createAndDeleteProfile', () ->
name = 'test'
token = 'testToken'
it 'should create a new profile with name and token', (done) ->
cam.createProfile {name: name, token: token}, (err, res) ->
assert.equal err, null
assert.equal res.$.fixed, false
assert.equal res.name, name
assert.equal res.$.token, token
done()
it 'should delete already created profile by its token', (done) ->
cam.deleteProfile token, (err, res) ->
assert.equal err, null
assert.equal res, ''
done()
describe 'getVideoSourceConfigurations', () ->
it 'should return videosource configurations', (done) ->
cam.getVideoSourceConfigurations (err, res) ->
assert.equal err, null
assert.ok Array.isArray(res)
assert.ok res.every (conf) ->
conf.name and conf.token and conf.sourceToken and conf.bounds
done()
describe 'getVideoEncoderConfiguration', () ->
it 'should return an error when no token present as a parameter or in #videoEncoderConfigurations array and there is no `videoEncoderConfigurations` property', (done) ->
cam.getVideoEncoderConfiguration (err) ->
assert.notEqual err, null
done()
describe 'getVideoEncoderConfigurationOptions', () ->
it 'should return an error when no token present as a parameter or in #videoEncoderConfigurations array and there is no `videoEncoderConfigurations` property', (done) ->
cam.getVideoEncoderConfigurationOptions (err, res) ->
assert.notEqual err, null
done()
describe 'getVideoEncoderConfigurations', () ->
it 'should return video encoder configurations', (done) ->
cam.getVideoEncoderConfigurations (err, res) ->
assert.equal err, null
assert.ok ['name', '$', 'quality', 'resolution', 'multicast'].every (prop) ->
res.every (vec) ->
!!vec[prop]
done()
describe 'getVideoEncoderConfiguration', () ->
it 'should return a configuration for the first token in #videoEncoderConfigurations array', (done) ->
cam.getVideoEncoderConfiguration (err, res) ->
assert.equal err, null
assert.ok ['name', '$', 'quality', 'resolution', 'multicast'].every (prop) ->
!!res[prop]
done()
it 'should return a configuration for the named token as a first argument', (done) ->
cam.getVideoEncoderConfiguration cam.videoEncoderConfigurations[0].$.token, (err, res) ->
assert.equal err, null
assert.ok ['name', '$', 'quality', 'resolution', 'multicast'].every (prop) ->
!!res[prop]
done()
describe 'getVideoEncoderConfigurationOptions', () ->
it 'should return a configuration options for the first token in #videoEncoderConfigurations array', (done) ->
cam.getVideoEncoderConfigurationOptions (err, res) ->
assert.equal err, null
assert.ok res.qualityRange
done()
it 'should return a configuration options for the named token as a first argument', (done) ->
cam.getVideoEncoderConfigurationOptions cam.videoEncoderConfigurations[0].$.token, (err, res) ->
assert.equal err, null
assert.ok res.qualityRange
done()
describe 'setVideoEncoderConfiguration', () ->
it 'should generate an error when no token in the options is present', (done) ->
cam.setVideoEncoderConfiguration {}, (err) ->
assert.notEqual err, null
done()
it 'should accept setting existing configuration and return the same configuration by the getVideoEncoderConfiguration method', (done) ->
cam.setVideoEncoderConfiguration cam.videoEncoderConfigurations[0], (err, res, xml) ->
assert.equal err, null
assert.deepEqual cam.videoEncoderConfigurations[0], res
done()
it 'should accept setting some new video configuration based on the existing', (done) ->
conf = {
token: cam.videoEncoderConfigurations[0].$.token
resolution: cam.videoEncoderConfigurations[0].resolution
}
cam.setVideoEncoderConfiguration conf, (err, res) ->
assert.equal err, null
done()
if synthTest
it 'should emits error with wrong response', (done) ->
serverMockup.conf.bad = true
cam.setVideoEncoderConfiguration cam.videoEncoderConfigurations[0], (err, res) ->
assert.notEqual err, null
delete serverMockup.conf.bad
done()
describe 'getAudioSources', () ->
it 'should return audio sources', (done) ->
cam.getAudioSources (err, res) ->
assert.equal err, null
done()
describe 'getAudioEncoderConfigurations', () ->
it 'should return audio encoder configurations', (done) ->
cam.getAudioEncoderConfigurations (err, res) ->
assert.equal err, null
done()