blob: f0a9b4a834d5bd8939374990dd34c56db434c3d4 [file] [log] [blame]
'use strict'
const test = require('ava')
const proxyquire = require('proxyquire')
const stub = {}
const ctor = function (options) { this.options = options }
ctor.prototype = stub
const Feeds = proxyquire('../../lib/feeds.js', {'./base_operation': ctor})
test('delete feed using default namespace', t => {
const params = {api: 'https://openwhisk.ng.bluemix.net/api/v1/', api_key: 'user_authorisation_key', namespace: 'default'}
const feed_name = 'rule_name'
const trigger_name = '/trigger_ns/trigger_name'
stub.request = req => {
t.is(req.url, `${params.api}namespaces/${params.namespace}/actions/${feed_name}`)
t.is(req.headers.Authorization, `Basic ${new Buffer(params.api_key).toString('base64')}`)
t.is(req.method, 'POST')
t.deepEqual(req.body, {authKey: params.api_key, lifecycleEvent: 'DELETE', triggerName: `${trigger_name}`})
t.deepEqual(req.qs, {blocking: true, result: false})
return Promise.resolve()
}
t.plan(5)
const feeds = new Feeds(params)
return feeds.delete({feedName: feed_name, trigger: trigger_name})
})
test('delete feed using custom namespace', t => {
const params = {api: 'https://openwhisk.ng.bluemix.net/api/v1/', api_key: 'user_authorisation_key', namespace: 'default'}
const feed_name = 'rule_name'
const trigger_name = '/trigger_ns/trigger_name'
const namespace = 'custom_namespace'
stub.request = req => {
t.is(req.url, `${params.api}namespaces/${namespace}/actions/${feed_name}`)
t.is(req.headers.Authorization, `Basic ${new Buffer(params.api_key).toString('base64')}`)
t.is(req.method, 'POST')
t.deepEqual(req.body, {authKey: params.api_key, lifecycleEvent: 'DELETE', triggerName: `${trigger_name}`})
t.deepEqual(req.qs, {blocking: true, result: false})
return Promise.resolve()
}
t.plan(5)
const feeds = new Feeds(params)
return feeds.delete({feedName: feed_name, trigger: trigger_name, namespace: namespace})
})
test('should throw errors without trigger parameter on create', t => {
const params = {api: 'https://openwhisk.ng.bluemix.net/api/v1/', api_key: 'user_authorisation_key', namespace: 'default'}
const feeds = new Feeds(params)
t.throws(() => feeds.create({feedName: 'myFeed'}), /trigger/)
})
test('should throw errors without feed name parameter on create', t => {
const params = {api: 'https://openwhisk.ng.bluemix.net/api/v1/', api_key: 'user_authorisation_key', namespace: 'default'}
const feeds = new Feeds(params)
t.throws(() => feeds.create({}), /feedName/)
})
test('should throw errors without trigger parameter on delete', t => {
const params = {api: 'https://openwhisk.ng.bluemix.net/api/v1/', api_key: 'user_authorisation_key', namespace: 'default'}
const feeds = new Feeds(params)
t.throws(() => feeds.delete({feedName: 'myFeed'}), /trigger/)
})
test('should throw errors without feed name parameter on delete', t => {
const params = {api: 'https://openwhisk.ng.bluemix.net/api/v1/', api_key: 'user_authorisation_key', namespace: 'default'}
const feeds = new Feeds(params)
t.throws(() => feeds.delete({}), /feedName/)
})
// must pass params
test('create feed using default namespace', t => {
const params = {api: 'https://openwhisk.ng.bluemix.net/api/v1/', api_key: 'user_authorisation_key', namespace: 'default'}
const feed_name = 'rule_name'
const trigger_name = '/trigger_ns/trigger_name'
stub.request = req => {
t.is(req.url, `${params.api}namespaces/${params.namespace}/actions/${feed_name}`)
t.is(req.headers.Authorization, `Basic ${new Buffer(params.api_key).toString('base64')}`)
t.is(req.method, 'POST')
t.deepEqual(req.body, {authKey: params.api_key, lifecycleEvent: 'CREATE', triggerName: `${trigger_name}`})
t.deepEqual(req.qs, {blocking: true, result: false})
return Promise.resolve()
}
t.plan(5)
const feeds = new Feeds(params)
return feeds.create({feedName: feed_name, trigger: trigger_name})
})
test('create feed with custom parameters', t => {
const params = {api: 'https://openwhisk.ng.bluemix.net/api/v1/', api_key: 'user_authorisation_key', namespace: 'default'}
const feed_name = 'rule_name'
const trigger_name = '/trigger_ns/trigger_name'
const custom_params = {hello: 'world'}
stub.request = req => {
t.is(req.url, `${params.api}namespaces/${params.namespace}/actions/${feed_name}`)
t.is(req.headers.Authorization, `Basic ${new Buffer(params.api_key).toString('base64')}`)
t.is(req.method, 'POST')
t.deepEqual(req.body, {hello: 'world', authKey: params.api_key, lifecycleEvent: 'CREATE', triggerName: `${trigger_name}`})
t.deepEqual(req.qs, {blocking: true, result: false})
return Promise.resolve()
}
t.plan(5)
const feeds = new Feeds(params)
return feeds.create({feedName: feed_name, trigger: trigger_name, params: custom_params})
})
test('create feed using options namespace', t => {
const params = {api: 'https://openwhisk.ng.bluemix.net/api/v1/', api_key: 'user_authorisation_key', namespace: 'default'}
const feed_name = 'rule_name'
const trigger_name = '/trigger_ns/trigger_name'
const namespace = 'custom_namespace'
stub.request = req => {
t.is(req.url, `${params.api}namespaces/${namespace}/actions/${feed_name}`)
t.is(req.headers.Authorization, `Basic ${new Buffer(params.api_key).toString('base64')}`)
t.is(req.method, 'POST')
t.deepEqual(req.body, {authKey: params.api_key, lifecycleEvent: 'CREATE', triggerName: `${trigger_name}`})
t.deepEqual(req.qs, {blocking: true, result: false})
return Promise.resolve()
}
t.plan(5)
const feeds = new Feeds(params)
return feeds.create({feedName: feed_name, trigger: trigger_name, namespace: namespace})
})