microsoft/vscode-react-native

Public

mirrored fromhttps://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
bb77358c8dc7ea46fae9d6aa601a11fde8eed0fd

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 {ExtensionMessage, MessagingChannel} from "../../common/extensionMessaging";
5
6import {RemoteExtension} from "../../common/remoteExtension";
7
8import {InterProcessMessageSender} from "../../common/interProcessMessageSender";
9
10import * as assert from "assert";
11import * as net from "net";
12import * as Q from "q";
13
14let mockServer: net.Server;
15
16suite("extensionMessaging", function() {
17 suite("commonContext", function() {
18 const projectRootPath = "/myPath";
19 const port: string = new MessagingChannel(projectRootPath).getPath();
20
21 teardown(function() {
22 if (mockServer) {
23 mockServer.close();
24 }
25 });
26
27 test("should successfully send a message", function(done: MochaDone) {
28 let receivedMessage: ExtensionMessage;
29
30 mockServer = net.createServer(function(client: net.Socket): void {
31 mockServer.close();
32 client.on("data", function(data: Buffer) {
33 const messageData: any = JSON.parse(data.toString("utf8"));
34 client.end();
35
36 receivedMessage = messageData.message;
37 });
38 });
39
40 mockServer.on("error", done);
41 mockServer.listen(port);
42
43 const sender = RemoteExtension.atProjectRootPath(projectRootPath);
44
45 Q({})
46 .then(function() {
47 return sender.startPackager();
48 })
49 .then(function() {
50 assert.equal(receivedMessage, ExtensionMessage.START_PACKAGER);
51 }).done(() => done(), done);
52 });
53
54 test("should successfully send a message with args", function(done: MochaDone) {
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 = RemoteExtension.atProjectRootPath(projectRootPath);
74
75 Q({})
76 .then(function() {
77 return sender.prewarmBundleCache(args[0]);
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 InterProcessMessageSender(projectRootPath);
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});
103