microsoft/vscode-react-native

Public

mirrored from https://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
30d12ab8ec0f57ab20a3dc05bbb13707e040d75e

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/test/common/extensionMessaging.test.ts

102lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT license. See LICENSE file in the project root for details.
3
4import {HostPlatform} from "../../common/hostPlatform";
5
6import {
7 ExtensionMessage,
8 ExtensionMessageSender
9} from "../../common/extensionMessaging";
10
11import * as assert from "assert";
12import * as net from "net";
13import * as Q from "q";
14
15let mockServer: net.Server;
16
17suite("extensionMessaging", function() {
18 suite("commonContext", function() {
19 teardown(function() {
20 if (mockServer) {
21 mockServer.close();
22 }
23 });
24
25 test("should successfully send a message", function(done: MochaDone) {
26 const port: string = HostPlatform.getExtensionPipePath();
27 let receivedMessage: ExtensionMessage;
28
29 mockServer = net.createServer(function(client: net.Socket): void {
30 mockServer.close();
31 client.on("data", function(data: Buffer) {
32 const messageData: any = JSON.parse(data.toString("utf8"));
33 client.end();
34
35 receivedMessage = messageData.message;
36 });
37 });
38
39 mockServer.on("error", done);
40 mockServer.listen(port);
41
42 const sender = new ExtensionMessageSender();
43
44 Q({})
45 .then(function() {
46 return sender.sendMessage(ExtensionMessage.START_PACKAGER);
47 })
48 .then(function() {
49 assert.equal(receivedMessage, ExtensionMessage.START_PACKAGER);
50 }).done(() => done(), done);
51 });
52
53 test("should successfully send a message with args", function(done: MochaDone) {
54 const port: string = HostPlatform.getExtensionPipePath();
55 const args = ["android"];
56 let receivedMessage: ExtensionMessage;
57 let receivedArgs: any;
58
59 mockServer = net.createServer(function(client: net.Socket): void {
60 mockServer.close();
61 client.on("data", function(data: Buffer) {
62 const messageData: any = JSON.parse(data.toString("utf8"));
63 client.end();
64
65 receivedMessage = messageData.message;
66 receivedArgs = messageData.args;
67 });
68 });
69
70 mockServer.on("error", done);
71 mockServer.listen(port);
72
73 const sender = new ExtensionMessageSender();
74
75 Q({})
76 .then(function() {
77 return sender.sendMessage(ExtensionMessage.PREWARM_BUNDLE_CACHE, args);
78 })
79 .then(function() {
80 assert.equal(receivedMessage, ExtensionMessage.PREWARM_BUNDLE_CACHE);
81 assert.deepEqual(receivedArgs, args);
82 }).done(() => done(), done);
83 });
84
85 test("should reject on socket error", function(done: MochaDone) {
86 const sender = new ExtensionMessageSender();
87
88 Q({})
89 .then(function() {
90 return sender.sendMessage(ExtensionMessage.PREWARM_BUNDLE_CACHE);
91 })
92 .then(function() {
93 assert(false, "sendMessage should reject on socket error");
94 },
95 function(reason: any) {
96 let expectedErrorMessage = "An error ocurred while handling message: PREWARM_BUNDLE_CACHE";
97 assert.equal(reason.message, expectedErrorMessage);
98 })
99 .done(() => done(), done);
100 });
101 });
102});