Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit18ca74d

Browse files
committed
fixed bug when trying to leak private variables while using "module.exports = ..."
1 parent57cb8ac commit18ca74d

File tree

7 files changed

+35
-17
lines changed

7 files changed

+35
-17
lines changed

‎lib/getLeakingSrc.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
* Returns the source code that will leak private vars.
55
*
66
* e.g.:
7-
* "exports.__ = {myPrivateVar: myPrivateVar};"
7+
* "module.exports.__ = {myPrivateVar: myPrivateVar};"
88
*
99
*@param {Array<String>} leaks
1010
*@return {String}
1111
*/
1212
functiongetLeakingSrc(leaks){
13-
varsrc="exports.__ = {",
13+
varsrc="module.exports.__ = {",
1414
varName,
1515
i;
1616

‎package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name" :"rewire",
3-
"version" :"0.1.1",
3+
"version" :"0.1.2",
44
"description" :"Dependency injection for node.js applications",
55
"keywords" : [
66
"dependency",

‎test/getLeakingSrc.test.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ var expect = require("expect.js"),
44
getLeakingWrapper=require("../lib/getLeakingSrc.js");
55

66
describe("getLeakingWrapper",function(){
7-
it("should return 'exports.__ = {};'",function(){
8-
expect(getLeakingWrapper([])).to.be("exports.__ = {};");
7+
it("should return 'module.exports.__ = {};'",function(){
8+
expect(getLeakingWrapper([])).to.be("module.exports.__ = {};");
99
});
10-
it("should return 'exports.__ = {somethingPrivate:somethingPrivate,somethingSecret:somethingSecret};'",function(){
10+
it("should return 'module.exports.__ = {somethingPrivate:somethingPrivate,somethingSecret:somethingSecret};'",function(){
1111
varleakArr=["somethingPrivate","somethingSecret"];
1212

1313
expect(getLeakingWrapper(leakArr))
14-
.to.be("exports.__ = {somethingPrivate:somethingPrivate,somethingSecret:somethingSecret};");
14+
.to.be("module.exports.__ = {somethingPrivate:somethingPrivate,somethingSecret:somethingSecret};");
1515
});
1616
});

‎test/rewire.test.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,18 +70,22 @@ describe("rewire", function () {
7070
rewired.exportAll();
7171
expect(rewired.console).to.be(456);
7272
});
73-
it("should leak private variables",function(){
73+
it("should leak private variables with both exports-styles (exports.bla = bla and module.exports = bla)",function(){
7474
varrewired,
7575
leaks=["myPrivateVar"];
7676

77-
rewired=rewire("./testModules/A/moduleA.js",null,null,leaks);
77+
rewired=rewire("./testModules/privateModules/privateModuleA.js",null,null,leaks);
78+
expect(rewired.__.myPrivateVar).to.be("Hello I'm very private");
79+
rewired=rewire("./testModules/privateModules/privateModuleB.js",null,null,leaks);
7880
expect(rewired.__.myPrivateVar).to.be("Hello I'm very private");
7981
});
80-
it("should leak private functions",function(){
82+
it("should leak private functions with both exports-styles (exports.bla = bla and module.exports = bla)",function(){
8183
varrewired,
8284
leaks=["myPrivateFunction"];
8385

84-
rewired=rewire("./testModules/A/moduleA.js",null,null,leaks);
86+
rewired=rewire("./testModules/privateModules/privateModuleA.js",null,null,leaks);
87+
expect(rewired.__.myPrivateFunction()).to.be("Hello I'm very private");
88+
rewired=rewire("./testModules/privateModules/privateModuleB.js",null,null,leaks);
8589
expect(rewired.__.myPrivateFunction()).to.be("Hello I'm very private");
8690
});
8791
it("should leak nothing on demand",function(){

‎test/testModules/A/moduleA.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,6 @@ var path = require("path"),
99
toSrc=require("toSrc"),// node_modules path
1010
index=require("../");// index.js path
1111

12-
varmyPrivateVar="Hello I'm very private";
13-
14-
functionmyPrivateFunction(){
15-
return"Hello I'm very private";
16-
}
17-
1812
functionexportAll(){
1913
// expose all required modules to test for mocks
2014
exports.fs=fs;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"use strict";// run code in ES5 strict mode
2+
3+
varmyPrivateVar="Hello I'm very private";
4+
5+
functionmyPrivateFunction(){
6+
return"Hello I'm very private";
7+
}
8+
9+
// privateModuleA and privateModuleB use different styles of exports
10+
exports.bla="somevalue";
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"use strict";// run code in ES5 strict mode
2+
3+
varmyPrivateVar="Hello I'm very private";
4+
5+
functionmyPrivateFunction(){
6+
return"Hello I'm very private";
7+
}
8+
9+
// privateModuleA and privateModuleB use different styles of exports
10+
module.exports=functionbla(){};

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp