Skip to content

Commit 8b6d5dd

Browse files
committed
feat: Exporting all types of Messages so they can be used by consumers (#1147)
* feat: Exporting all types of Messages so they can be used by consumers Fixes firebase/firebase-admin-node#1146 * feat(exportMessageTypes): Testing TokenMessage * feat(exportMessageTypes): Added tests for all Message types * feat(exportMessageTypes): Fixed build * feat(exportMessageTypes): Better unit tests * feat(exportMessageTypes): Deleted unneeded separate TS test * feat(exportMessageTypes): Fixed build * feat(exportMessageTypes): Fixed linting
1 parent c9d50d6 commit 8b6d5dd

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

src/messaging/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ export namespace messaging {
5858
fcmOptions?: FcmOptions;
5959
}
6060

61-
interface TokenMessage extends BaseMessage {
61+
export interface TokenMessage extends BaseMessage {
6262
token: string;
6363
}
6464

65-
interface TopicMessage extends BaseMessage {
65+
export interface TopicMessage extends BaseMessage {
6666
topic: string;
6767
}
6868

69-
interface ConditionMessage extends BaseMessage {
69+
export interface ConditionMessage extends BaseMessage {
7070
condition: string;
7171
}
7272

test/unit/messaging/messaging.spec.ts

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ chai.use(chaiAsPromised);
4141
const expect = chai.expect;
4242

4343
import Message = messaging.Message;
44+
import TokenMessage = messaging.TokenMessage;
45+
import TopicMessage = messaging.TopicMessage;
46+
import ConditionMessage = messaging.ConditionMessage;
4447
import MessagingOptions = messaging.MessagingOptions;
4548
import MessagingPayload = messaging.MessagingPayload;
4649
import MessagingDevicesResponse = messaging.MessagingDevicesResponse;
@@ -823,6 +826,32 @@ describe('Messaging', () => {
823826
[validMessage],
824827
).should.eventually.be.rejected.and.have.property('code', 'app/invalid-credential');
825828
});
829+
830+
// This test was added to also verify https://github.com/firebase/firebase-admin-node/issues/1146
831+
it('should be fulfilled when called with different message types', () => {
832+
const messageIds = [
833+
'projects/projec_id/messages/1',
834+
'projects/projec_id/messages/2',
835+
'projects/projec_id/messages/3',
836+
];
837+
const tokenMessage: TokenMessage = { token: 'test' };
838+
const topicMessage: TopicMessage = { topic: 'test' };
839+
const conditionMessage: ConditionMessage = { condition: 'test' };
840+
const messages: Message[] = [tokenMessage, topicMessage, conditionMessage];
841+
842+
mockedRequests.push(mockBatchRequest(messageIds));
843+
844+
return messaging.sendAll(messages)
845+
.then((response: BatchResponse) => {
846+
expect(response.successCount).to.equal(3);
847+
expect(response.failureCount).to.equal(0);
848+
response.responses.forEach((resp, idx) => {
849+
expect(resp.success).to.be.true;
850+
expect(resp.messageId).to.equal(messageIds[idx]);
851+
expect(resp.error).to.be.undefined;
852+
});
853+
});
854+
});
826855
});
827856

828857
describe('sendMulticast()', () => {
@@ -887,7 +916,7 @@ describe('Messaging', () => {
887916
expect(messages.length).to.equal(3);
888917
expect(stub!.args[0][1]).to.be.undefined;
889918
messages.forEach((message, idx) => {
890-
expect((message as any).token).to.equal(tokens[idx]);
919+
expect((message as TokenMessage).token).to.equal(tokens[idx]);
891920
expect(message.android).to.be.undefined;
892921
expect(message.apns).to.be.undefined;
893922
expect(message.data).to.be.undefined;
@@ -917,7 +946,7 @@ describe('Messaging', () => {
917946
expect(messages.length).to.equal(3);
918947
expect(stub!.args[0][1]).to.be.undefined;
919948
messages.forEach((message, idx) => {
920-
expect((message as any).token).to.equal(tokens[idx]);
949+
expect((message as TokenMessage).token).to.equal(tokens[idx]);
921950
expect(message.android).to.deep.equal(multicast.android);
922951
expect(message.apns).to.be.deep.equal(multicast.apns);
923952
expect(message.data).to.be.deep.equal(multicast.data);

0 commit comments

Comments
 (0)