Skip to content

Commit 94eba85

Browse files
authored
BKNDLSS-34660 - [JS]API for delete PUB_SUB channels (#245)
* BKNDLSS-34660 - [JS]API for delete PUB_SUB channels * API-1 - Logging API codeless block improvement(fixed code style)
1 parent ee5fe0a commit 94eba85

File tree

5 files changed

+57
-0
lines changed

5 files changed

+57
-0
lines changed

backendless.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,8 @@ declare module Backendless {
713713

714714
function subscribe(channelName: string): ChannelClass;
715715

716+
function deleteChannel(channelName: string): Promise<object>;
717+
716718
function publish(channelName: string, message: string | Object, publishOptions?: Backendless.PublishOptions, deliveryOptions?: Backendless.DeliveryOptions): Promise<Object>;
717719

718720
function sendEmail(subject: string, bodyParts: Backendless.Bodyparts, recipients: string[], attachments?: string[]): Promise<object>;

src/messaging/index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,14 @@ export default class Messaging {
5454
})
5555
}
5656

57+
async deleteChannel(channelName) {
58+
validateChannelName(channelName)
59+
60+
return this.app.request.delete({
61+
url: this.app.urls.messagingChannelName(channelName),
62+
})
63+
}
64+
5765
async pushWithTemplate(templateName, templateValues) {
5866
if (!templateName || typeof templateName !== 'string') {
5967
throw new Error('Push Template Name must be provided and must be a string.')

src/urls.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,14 @@ export default class Urls {
219219
return `${this.messaging()}/${channel}`
220220
}
221221

222+
messagingChannels() {
223+
return `${this.messaging()}/channels`
224+
}
225+
226+
messagingChannelName(channelName) {
227+
return `${this.messagingChannels()}/${channelName}`
228+
}
229+
222230
messagingMessage(messageId) {
223231
return `${this.messaging()}/${messageId}`
224232
}

test/tsd.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1563,6 +1563,8 @@ function testMessaging() {
15631563

15641564
channel = Backendless.Messaging.subscribe(channelName);
15651565

1566+
promiseObject = Backendless.Messaging.deleteChannel(channelName);
1567+
15661568
promiseObject = Backendless.Messaging.publish(channelName, message, publishOptions, deliveryOptions);
15671569

15681570
promiseObject = Backendless.Messaging.sendEmail(subject, bodyParts, recipients, attachments);

test/unit/specs/messaging/channel.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,43 @@ describe('<Messaging> Channel', function() {
391391

392392
})
393393

394+
describe('Delete', () => {
395+
it('deletes the specified channel', async () => {
396+
const req1 = prepareMockRequest()
397+
398+
await Backendless.Messaging.deleteChannel(channelName)
399+
400+
expect(req1).to.deep.include({
401+
method: 'DELETE',
402+
path: `${APP_PATH}/messaging/channels/${channelName}`,
403+
})
404+
})
405+
406+
it('fails when channelName is invalid', async () => {
407+
const errorMsg = 'Channel Name must be provided and must be a string.'
408+
409+
await expect( Backendless.Messaging.deleteChannel()).to.eventually.be.rejectedWith(errorMsg)
410+
await expect( Backendless.Messaging.deleteChannel(undefined)).to.eventually.be.rejectedWith(errorMsg)
411+
await expect( Backendless.Messaging.deleteChannel(null)).to.eventually.be.rejectedWith(errorMsg)
412+
await expect( Backendless.Messaging.deleteChannel(true)).to.eventually.be.rejectedWith(errorMsg)
413+
await expect( Backendless.Messaging.deleteChannel(false)).to.eventually.be.rejectedWith(errorMsg)
414+
await expect( Backendless.Messaging.deleteChannel(0)).to.eventually.be.rejectedWith(errorMsg)
415+
await expect( Backendless.Messaging.deleteChannel(123)).to.eventually.be.rejectedWith(errorMsg)
416+
await expect( Backendless.Messaging.deleteChannel('')).to.eventually.be.rejectedWith(errorMsg)
417+
await expect( Backendless.Messaging.deleteChannel({})).to.eventually.be.rejectedWith(errorMsg)
418+
await expect( Backendless.Messaging.deleteChannel([])).to.eventually.be.rejectedWith(errorMsg)
419+
await expect( Backendless.Messaging.deleteChannel(() => ({}))).to.eventually.be.rejectedWith(errorMsg)
420+
})
421+
422+
it('fails when channelName has a slash char', async () => {
423+
const errorMsg = 'Channel Name can not contain slash chars'
424+
425+
await expect(Backendless.Messaging.deleteChannel('/channelName')).to.eventually.be.rejectedWith(errorMsg)
426+
await expect(Backendless.Messaging.deleteChannel('channel/Name')).to.eventually.be.rejectedWith(errorMsg)
427+
await expect(Backendless.Messaging.deleteChannel('channelName/')).to.eventually.be.rejectedWith(errorMsg)
428+
})
429+
})
430+
394431
describe('Connection', () => {
395432
it('can join and leave the channel', async () => {
396433
const sub1Promise = rtClient.getNext_SUB_ON() // PUB_SUB_CONNECT

0 commit comments

Comments
 (0)