microsoft/vscode-react-native

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
e2bb5edaf243abd50ab0b1dfb12a6f8c5fccceab

Branches

Tags

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

Clone

HTTPS

Download ZIP

src/test/common/extensionMessaging.test.ts

109lines · 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 {
5 ExtensionMessage,
6 MessagingChannel,
7} from "../../common/extensionMessaging";
8
9import {
10 RemoteExtension,
11} from "../../common/remoteExtension";
12
13import {
14 InterProcessMessageSender,
15} from "../../common/interProcessMessageSender";
16
17import * as assert from "assert";
18import * as net from "net";
19import * as Q from "q";
20
21let mockServer: net.Server;
22
23suite("extensionMessaging", function() {
24 suite("commonContext", function() {
25 const projectRootPath = "/myPath";
26 const port: string = new MessagingChannel(projectRootPath).getPath();
27
28 teardown(function() {
29 if (mockServer) {
30 mockServer.close();
31 }
32 });
33
34 test("should successfully send a message", function(done: MochaDone) {
35 let receivedMessage: ExtensionMessage;
36
37 mockServer = net.createServer(function(client: net.Socket): void {
38 mockServer.close();
39 client.on("data", function(data: Buffer) {
40 const messageData: any = JSON.parse(data.toString("utf8"));
41 client.end();
42
43 receivedMessage = messageData.message;
44 });
45 });
46
47 mockServer.on("error", done);
48 mockServer.listen(port);
49
50 const sender = new RemoteExtension(projectRootPath);
51
52 Q({})
53 .then(function() {
54 return sender.startPackager();
55 })
56 .then(function() {
57 assert.equal(receivedMessage, ExtensionMessage.START_PACKAGER);
58 }).done(() => done(), done);
59 });
60
61 test("should successfully send a message with args", function(done: MochaDone) {
62 const args = ["android"];
63 let receivedMessage: ExtensionMessage;
64 let receivedArgs: any;
65
66 mockServer = net.createServer(function(client: net.Socket): void {
67 mockServer.close();
68 client.on("data", function(data: Buffer) {
69 const messageData: any = JSON.parse(data.toString("utf8"));
70 client.end();
71
72 receivedMessage = messageData.message;
73 receivedArgs = messageData.args;
74 });
75 });
76
77 mockServer.on("error", done);
78 mockServer.listen(port);
79
80 const sender = new RemoteExtension(projectRootPath);
81
82 Q({})
83 .then(function() {
84 return sender.prewarmBundleCache(args[0]);
85 })
86 .then(function() {
87 assert.equal(receivedMessage, ExtensionMessage.PREWARM_BUNDLE_CACHE);
88 assert.deepEqual(receivedArgs, args);
89 }).done(() => done(), done);
90 });
91
92 test("should reject on socket error", function(done: MochaDone) {
93 const sender = new InterProcessMessageSender(projectRootPath);
94
95 Q({})
96 .then(function() {
97 return sender.sendMessage(ExtensionMessage.PREWARM_BUNDLE_CACHE);
98 })
99 .then(function() {
100 assert(false, "sendMessage should reject on socket error");
101 },
102 function(reason: any) {
103 let expectedErrorMessage = "An error ocurred while handling message: PREWARM_BUNDLE_CACHE";
104 assert.equal(reason.message, expectedErrorMessage);
105 })
106 .done(() => done(), done);
107 });
108 });
109});