From fa432099a8835ed4a0c18edd215b00824887fd21 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Sat, 3 Dec 2016 00:06:03 +0000 Subject: [PATCH 1/2] Implemented vfs server killing connections. Added more tests --- plugins/c9.vfs.server/vfs.server.js | 13 ++++++++++++ plugins/c9.vfs.server/vfs.server_test.js | 27 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/plugins/c9.vfs.server/vfs.server.js b/plugins/c9.vfs.server/vfs.server.js index 069fd3ed..af1578ef 100644 --- a/plugins/c9.vfs.server/vfs.server.js +++ b/plugins/c9.vfs.server/vfs.server.js @@ -343,6 +343,8 @@ function plugin(options, imports, register) { case "update_member_access": handleProjectMemberAccessChange(vfs, message); break; + case "project_changed": + handleProjectVisibilityChanged(vfs, message); default: break; } @@ -359,6 +361,17 @@ function plugin(options, imports, register) { }, 100); } + function handleProjectVisibilityChanged(vfs, message) { + if (vfs.uid == message.body.owner) return; + + console.log("Project visibilty changed. Message is: ", message); + if ((message.body.visibility && message.body.visibility == "private") || + (message.body.appAccess && message.body.appAccess == "private")) { + + cache.remove(vfs.id); + } + } + register(null, { "vfs.server": { get section() { return section; }, diff --git a/plugins/c9.vfs.server/vfs.server_test.js b/plugins/c9.vfs.server/vfs.server_test.js index 492907e3..915432a0 100644 --- a/plugins/c9.vfs.server/vfs.server_test.js +++ b/plugins/c9.vfs.server/vfs.server_test.js @@ -116,6 +116,33 @@ describe(__filename, function() { }); }); + describe("project_changed", function() { + it("If the project is being made private all non-owner members should be ejected", function (done) { + var projectOwnerVfs = { + id: "9c123", + uid: "123" + }; + var projectMemberVfs = { + id: "9c456", + uid: "456" + }; + var message = JSON.stringify({ + action: "project_changed", + body: { + owner: 123, + visibility: "private" + } + }); + server.handlePublish(projectOwnerVfs, message); + server.handlePublish(projectMemberVfs, message); + setTimeout(function() { + assert(mockCache.remove.neverCalledWith(projectOwnerVfs.id)); + assert(mockCache.remove.calledWith(projectMemberVfs.id)); + done(); + }, 150); + }); + }); + }); From 01e1b4061fddbfb9e3a7951f38fb37ec02214bbc Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Sat, 3 Dec 2016 00:58:21 +0000 Subject: [PATCH 2/2] Cleanup --- plugins/c9.vfs.server/vfs.server.js | 3 +-- plugins/c9.vfs.server/vfs.server_test.js | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/c9.vfs.server/vfs.server.js b/plugins/c9.vfs.server/vfs.server.js index af1578ef..99b32b9c 100644 --- a/plugins/c9.vfs.server/vfs.server.js +++ b/plugins/c9.vfs.server/vfs.server.js @@ -364,10 +364,9 @@ function plugin(options, imports, register) { function handleProjectVisibilityChanged(vfs, message) { if (vfs.uid == message.body.owner) return; - console.log("Project visibilty changed. Message is: ", message); if ((message.body.visibility && message.body.visibility == "private") || (message.body.appAccess && message.body.appAccess == "private")) { - + console.log("Project ", vfs.pid, " recieved message: ", message.body, ". Killing connection of user ", vfs.uid); cache.remove(vfs.id); } } diff --git a/plugins/c9.vfs.server/vfs.server_test.js b/plugins/c9.vfs.server/vfs.server_test.js index 915432a0..f5378d3a 100644 --- a/plugins/c9.vfs.server/vfs.server_test.js +++ b/plugins/c9.vfs.server/vfs.server_test.js @@ -117,7 +117,7 @@ describe(__filename, function() { }); describe("project_changed", function() { - it("If the project is being made private all non-owner members should be ejected", function (done) { + it("If the project is being made private all non-owner connected users should be ejected", function (done) { var projectOwnerVfs = { id: "9c123", uid: "123"