Skip to content

Commit e922a76

Browse files
authored
Add test for shared output bug (#30)
1 parent bd876fe commit e922a76

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Copyright (c) .NET Foundation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
import { app, InvocationContext, output } from '@azure/functions';
5+
6+
// Test for bug https://github.com/Azure/azure-functions-nodejs-library/issues/179
7+
8+
const queueOutput = output.storageQueue({
9+
queueName: 'e2e-test-queue-trigger',
10+
connection: 'e2eTest_storage',
11+
});
12+
13+
app.storageBlob('storageBlobTriggerReturnOutput', {
14+
path: 'e2e-test-container/e2e-test-blob-trigger-shared-output-bug',
15+
connection: 'e2eTest_storage',
16+
return: queueOutput,
17+
handler: (blob: Buffer, context: InvocationContext) => {
18+
context.log(`storageBlobTriggerReturnOutput was triggered`);
19+
return `${blob.toString()}-returnOutput`;
20+
},
21+
});
22+
23+
app.storageBlob('storageBlobTriggerExtraOutput', {
24+
path: 'e2e-test-container/e2e-test-blob-trigger-shared-output-bug',
25+
connection: 'e2eTest_storage',
26+
extraOutputs: [queueOutput],
27+
handler: (blob: Buffer, context: InvocationContext) => {
28+
context.log(`storageBlobTriggerExtraOutput was triggered`);
29+
context.extraOutputs.set(queueOutput, `${blob.toString()}-extraOutput`);
30+
},
31+
});

src/storage.test.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { QueueClient } from '@azure/storage-queue';
66
import { expect } from 'chai';
77
import { default as fetch } from 'node-fetch';
88
import { getFuncUrl } from './constants';
9-
import { waitForOutput } from './global.test';
9+
import { model, waitForOutput } from './global.test';
1010
import { storageConnectionString } from './resources/connectionStrings';
1111
import { getRandomTestData } from './utils/getRandomTestData';
1212

@@ -83,4 +83,25 @@ describe('storage', () => {
8383
expect(result).to.deep.equal(items);
8484
await waitForOutput(`httpTriggerTableInput was triggered`);
8585
});
86+
87+
// Test for bug https://github.com/Azure/azure-functions-nodejs-library/issues/179
88+
it('Shared output bug', async function (this: Mocha.Context) {
89+
if (model === 'v3') {
90+
this.skip();
91+
}
92+
93+
const containerName = 'e2e-test-container';
94+
const client = new ContainerClient(storageConnectionString, containerName);
95+
await client.createIfNotExists();
96+
97+
const message = getRandomTestData();
98+
const messageBuffer = Buffer.from(message);
99+
const blobName = 'e2e-test-blob-trigger-shared-output-bug';
100+
await client.uploadBlockBlob(blobName, messageBuffer, messageBuffer.byteLength);
101+
102+
await waitForOutput(`storageBlobTriggerReturnOutput was triggered`);
103+
await waitForOutput(`storageBlobTriggerExtraOutput was triggered`);
104+
await waitForOutput(`storageQueueTrigger was triggered by "${message}-returnOutput"`);
105+
await waitForOutput(`storageQueueTrigger was triggered by "${message}-extraOutput"`);
106+
});
86107
});

0 commit comments

Comments
 (0)