diff options
author | Johannes <mail@johannesewald.de> | 2012-06-04 19:46:12 +0400 |
---|---|---|
committer | Johannes <mail@johannesewald.de> | 2012-06-04 19:46:12 +0400 |
commit | 18ca74d9c514ad0df3ff92b4310afde36434e808 (patch) | |
tree | 8372545d55fee77c73517f290b1d4a4151e8b7b3 /test | |
parent | 57cb8ac4d3a7026af4f0aa27a0cd2c99e7fac177 (diff) |
fixed bug when trying to leak private variables while using "module.exports = ..."
Diffstat (limited to 'test')
-rw-r--r-- | test/getLeakingSrc.test.js | 8 | ||||
-rw-r--r-- | test/rewire.test.js | 12 | ||||
-rw-r--r-- | test/testModules/A/moduleA.js | 6 | ||||
-rw-r--r-- | test/testModules/privateModules/privateModuleA.js | 10 | ||||
-rw-r--r-- | test/testModules/privateModules/privateModuleB.js | 10 |
5 files changed, 32 insertions, 14 deletions
diff --git a/test/getLeakingSrc.test.js b/test/getLeakingSrc.test.js index c9a595f..b1e137b 100644 --- a/test/getLeakingSrc.test.js +++ b/test/getLeakingSrc.test.js @@ -4,13 +4,13 @@ var expect = require("expect.js"), getLeakingWrapper = require("../lib/getLeakingSrc.js");
describe("getLeakingWrapper", function () {
- it("should return 'exports.__ = {};'", function () {
- expect(getLeakingWrapper([])).to.be("exports.__ = {};");
+ it("should return 'module.exports.__ = {};'", function () {
+ expect(getLeakingWrapper([])).to.be("module.exports.__ = {};");
});
- it("should return 'exports.__ = {somethingPrivate:somethingPrivate,somethingSecret:somethingSecret};'", function () {
+ it("should return 'module.exports.__ = {somethingPrivate:somethingPrivate,somethingSecret:somethingSecret};'", function () {
var leakArr = ["somethingPrivate", "somethingSecret"];
expect(getLeakingWrapper(leakArr))
- .to.be("exports.__ = {somethingPrivate:somethingPrivate,somethingSecret:somethingSecret};");
+ .to.be("module.exports.__ = {somethingPrivate:somethingPrivate,somethingSecret:somethingSecret};");
});
});
\ No newline at end of file diff --git a/test/rewire.test.js b/test/rewire.test.js index 3414399..1f8ebf9 100644 --- a/test/rewire.test.js +++ b/test/rewire.test.js @@ -70,18 +70,22 @@ describe("rewire", function () { rewired.exportAll();
expect(rewired.console).to.be(456);
});
- it("should leak private variables", function () {
+ it("should leak private variables with both exports-styles (exports.bla = bla and module.exports = bla)", function () {
var rewired,
leaks = ["myPrivateVar"];
- rewired = rewire("./testModules/A/moduleA.js", null, null, leaks);
+ rewired = rewire("./testModules/privateModules/privateModuleA.js", null, null, leaks);
+ expect(rewired.__.myPrivateVar).to.be("Hello I'm very private");
+ rewired = rewire("./testModules/privateModules/privateModuleB.js", null, null, leaks);
expect(rewired.__.myPrivateVar).to.be("Hello I'm very private");
});
- it("should leak private functions", function () {
+ it("should leak private functions with both exports-styles (exports.bla = bla and module.exports = bla)", function () {
var rewired,
leaks = ["myPrivateFunction"];
- rewired = rewire("./testModules/A/moduleA.js", null, null, leaks);
+ rewired = rewire("./testModules/privateModules/privateModuleA.js", null, null, leaks);
+ expect(rewired.__.myPrivateFunction()).to.be("Hello I'm very private");
+ rewired = rewire("./testModules/privateModules/privateModuleB.js", null, null, leaks);
expect(rewired.__.myPrivateFunction()).to.be("Hello I'm very private");
});
it("should leak nothing on demand", function () {
diff --git a/test/testModules/A/moduleA.js b/test/testModules/A/moduleA.js index ffa3290..b8671cf 100644 --- a/test/testModules/A/moduleA.js +++ b/test/testModules/A/moduleA.js @@ -9,12 +9,6 @@ var path = require("path"), toSrc = require("toSrc"), // node_modules path
index = require("../"); // index.js path
-var myPrivateVar = "Hello I'm very private";
-
-function myPrivateFunction() {
- return "Hello I'm very private";
-}
-
function exportAll() {
// expose all required modules to test for mocks
exports.fs = fs;
diff --git a/test/testModules/privateModules/privateModuleA.js b/test/testModules/privateModules/privateModuleA.js new file mode 100644 index 0000000..757df3e --- /dev/null +++ b/test/testModules/privateModules/privateModuleA.js @@ -0,0 +1,10 @@ +"use strict"; // run code in ES5 strict mode
+
+var myPrivateVar = "Hello I'm very private";
+
+function myPrivateFunction() {
+ return "Hello I'm very private";
+}
+
+// privateModuleA and privateModuleB use different styles of exports
+exports.bla = "somevalue";
\ No newline at end of file diff --git a/test/testModules/privateModules/privateModuleB.js b/test/testModules/privateModules/privateModuleB.js new file mode 100644 index 0000000..c9e5bc7 --- /dev/null +++ b/test/testModules/privateModules/privateModuleB.js @@ -0,0 +1,10 @@ +"use strict"; // run code in ES5 strict mode
+
+var myPrivateVar = "Hello I'm very private";
+
+function myPrivateFunction() {
+ return "Hello I'm very private";
+}
+
+// privateModuleA and privateModuleB use different styles of exports
+module.exports = function bla() {};
\ No newline at end of file |