You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-csc-ui/t/api/call-blocking.js

310 lines
11 KiB

'use strict'
// eslint-disable-next-line import/default
import Vue from 'vue'
import VueResource from 'vue-resource'
import {
enableIncomingCallBlocking,
disableIncomingCallBlocking,
getIncomingCallBlocking,
addNumberToIncomingList,
editNumberFromIncomingList,
removeNumberFromIncomingList,
enableOutgoingCallBlocking,
disableOutgoingCallBlocking,
getOutgoingCallBlocking,
addNumberToOutgoingList,
editNumberFromOutgoingList,
removeNumberFromOutgoingList
} from '../../src/api/call-blocking'
import { assert } from 'chai'
Vue.use(VueResource)
describe('CallBlocking', function () {
const subscriberId = 123
beforeEach(function () {
Vue.http.interceptors = []
})
describe('Incoming', function () {
it('should enable call blocking for incoming calls', function (done) {
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
assert.equal(request.body[0].op, 'replace')
assert.equal(request.body[0].path, '/block_in_mode')
assert.equal(request.body[0].value, true)
next(request.respondWith('', {
status: 204
}))
})
enableIncomingCallBlocking(subscriberId).then(() => {
done()
}).catch((err) => {
done(err)
})
})
it('should disable call blocking for incoming calls', function (done) {
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
assert.equal(request.body[0].op, 'replace')
assert.equal(request.body[0].path, '/block_in_mode')
assert.equal(request.body[0].value, false)
next(request.respondWith('', {
status: 204
}))
})
disableIncomingCallBlocking(subscriberId).then(() => {
done()
}).catch((err) => {
done(err)
})
})
it('should get all data regarding incoming call blocking', function (done) {
const list = [
'0123456789',
'0987654321'
]
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
next(request.respondWith(JSON.stringify({
block_in_list: list,
block_in_mode: true
}), {
status: 200
}))
})
getIncomingCallBlocking(subscriberId).then((result) => {
assert.deepEqual(result.list, list)
assert.equal(result.enabled, true)
done()
}).catch((err) => {
done(err)
})
})
it('should add a new number to incoming call blocking list', function (done) {
const number = '0987654321'
const list = [
'0123456789'
]
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
if (request.method === 'GET') {
next(request.respondWith(JSON.stringify({
block_in_list: list
}), {
status: 200
}))
} else if (request.method === 'PUT') {
assert.deepEqual(request.body.block_in_list, [].concat([number], list))
next(request.respondWith('', {
status: 200
}))
}
})
addNumberToIncomingList(subscriberId, number).then((result) => {
done()
}).catch((err) => {
done(err)
})
})
it('should edit a number from incoming call blocking list', function (done) {
const number = '0987654321'
const list = [
'0123456789'
]
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
if (request.method === 'GET') {
next(request.respondWith(JSON.stringify({
block_in_list: list
}), {
status: 200
}))
} else if (request.method === 'PUT') {
assert.deepEqual(request.body.block_in_list, [number])
next(request.respondWith('', {
status: 200
}))
}
})
editNumberFromIncomingList(subscriberId, 0, number).then((result) => {
done()
}).catch((err) => {
done(err)
})
})
it('should remove a number from incoming call blocking list', function (done) {
const number = '0987654321'
const list = [
'0123456789'
]
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
if (request.method === 'GET') {
next(request.respondWith(JSON.stringify({
block_in_list: [].concat([number]).concat(list)
}), {
status: 200
}))
} else if (request.method === 'PUT') {
assert.deepEqual(request.body.block_in_list, list)
next(request.respondWith('', {
status: 200
}))
}
})
removeNumberFromIncomingList(subscriberId, 0, number).then((result) => {
done()
}).catch((err) => {
done(err)
})
})
})
describe('Outgoing', function () {
it('should enable call blocking for outgoing calls', function (done) {
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
assert.equal(request.body[0].op, 'replace')
assert.equal(request.body[0].path, '/block_out_mode')
assert.equal(request.body[0].value, true)
next(request.respondWith('', {
status: 204
}))
})
enableOutgoingCallBlocking(subscriberId).then(() => {
done()
}).catch((err) => {
done(err)
})
})
it('should disable call blocking for outgoing calls', function (done) {
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
assert.equal(request.body[0].op, 'replace')
assert.equal(request.body[0].path, '/block_out_mode')
assert.equal(request.body[0].value, false)
next(request.respondWith('', {
status: 204
}))
})
disableOutgoingCallBlocking(subscriberId).then(() => {
done()
}).catch((err) => {
done(err)
})
})
it('should get all data regarding outgoing call blocking', function (done) {
const list = [
'0123456789',
'0987654321'
]
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
next(request.respondWith(JSON.stringify({
block_out_list: list,
block_out_mode: true
}), {
status: 200
}))
})
getOutgoingCallBlocking(subscriberId).then((result) => {
assert.deepEqual(result.list, list)
assert.equal(result.enabled, true)
done()
}).catch((err) => {
done(err)
})
})
it('should add a new number to outgoing call blocking list', function (done) {
const number = '0987654321'
const list = [
'0123456789'
]
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
if (request.method === 'GET') {
next(request.respondWith(JSON.stringify({
block_out_list: list
}), {
status: 200
}))
} else if (request.method === 'PUT') {
assert.deepEqual(request.body.block_out_list, [].concat([number], list))
next(request.respondWith('', {
status: 200
}))
}
})
addNumberToOutgoingList(subscriberId, number).then((result) => {
done()
}).catch((err) => {
done(err)
})
})
it('should edit a number from outgoing call blocking list', function (done) {
const number = '0987654321'
const list = [
'0123456789'
]
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
if (request.method === 'GET') {
next(request.respondWith(JSON.stringify({
block_out_list: list
}), {
status: 200
}))
} else if (request.method === 'PUT') {
assert.deepEqual(request.body.block_out_list, [number])
next(request.respondWith('', {
status: 200
}))
}
})
editNumberFromOutgoingList(subscriberId, 0, number).then((result) => {
done()
}).catch((err) => {
done(err)
})
})
it('should remove a number from outgoing call blocking list', function (done) {
const number = '0987654321'
const list = [
'0123456789'
]
Vue.http.interceptors.unshift((request, next) => {
assert.equal(request.url, 'api/subscriberpreferences/' + subscriberId)
if (request.method === 'GET') {
next(request.respondWith(JSON.stringify({
block_out_list: [].concat([number]).concat(list)
}), {
status: 200
}))
} else if (request.method === 'PUT') {
assert.deepEqual(request.body.block_out_list, list)
next(request.respondWith('', {
status: 200
}))
}
})
removeNumberFromOutgoingList(subscriberId, 0).then(() => {
done()
}).catch((err) => {
done(err)
})
})
})
})