mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Merge pull request #1848 from node-red-hitachi/grunt-on-windows
Fix test cases on windows and under proxy
This commit is contained in:
		@@ -102,38 +102,13 @@ describe('HTTP Request Node', function() {
 | 
			
		||||
        return "localhost:"+testSslPort+url;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function saveProxySetting() {
 | 
			
		||||
        preEnvHttpProxyLowerCase = process.env.http_proxy;
 | 
			
		||||
        preEnvHttpProxyUpperCase = process.env.HTTP_PROXY;
 | 
			
		||||
        preEnvNoProxyLowerCase = process.env.no_proxy;
 | 
			
		||||
        preEnvNoProxyUpperCase = process.env.NO_PROXY;
 | 
			
		||||
    function deleteProxySetting() {
 | 
			
		||||
        delete process.env.http_proxy;
 | 
			
		||||
        delete process.env.HTTP_PROXY;
 | 
			
		||||
        delete process.env.no_proxy;
 | 
			
		||||
        delete process.env.NO_PROXY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function restoreProxySetting() {
 | 
			
		||||
        process.env.http_proxy = preEnvHttpProxyLowerCase;
 | 
			
		||||
        process.env.HTTP_PROXY = preEnvHttpProxyUpperCase;
 | 
			
		||||
        // On Windows, if environment variable of NO_PROXY that includes lower cases
 | 
			
		||||
        // such as No_Proxy is replaced with NO_PROXY.
 | 
			
		||||
        process.env.no_proxy = preEnvNoProxyLowerCase;
 | 
			
		||||
        process.env.NO_PROXY = preEnvNoProxyUpperCase;
 | 
			
		||||
        if (preEnvHttpProxyLowerCase == undefined){
 | 
			
		||||
            delete process.env.http_proxy;
 | 
			
		||||
        }
 | 
			
		||||
        if (preEnvHttpProxyUpperCase == undefined){
 | 
			
		||||
            delete process.env.HTTP_PROXY;
 | 
			
		||||
        }
 | 
			
		||||
        if (preEnvNoProxyLowerCase == undefined){
 | 
			
		||||
            delete process.env.no_proxy;
 | 
			
		||||
        }
 | 
			
		||||
        if (preEnvNoProxyUpperCase == undefined){
 | 
			
		||||
            delete process.env.NO_PROXY;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    before(function(done) {
 | 
			
		||||
        testApp = express();
 | 
			
		||||
        testApp.use(bodyParser.raw({type:"*/*"}));
 | 
			
		||||
@@ -225,7 +200,35 @@ describe('HTTP Request Node', function() {
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    beforeEach(function() {
 | 
			
		||||
        preEnvHttpProxyLowerCase = process.env.http_proxy;
 | 
			
		||||
        preEnvHttpProxyUpperCase = process.env.HTTP_PROXY;
 | 
			
		||||
        preEnvNoProxyLowerCase = process.env.no_proxy;
 | 
			
		||||
        preEnvNoProxyUpperCase = process.env.NO_PROXY;
 | 
			
		||||
        process.env.no_proxy = 'localhost';
 | 
			
		||||
        process.env.NO_PROXY = 'localhost';
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    afterEach(function() {
 | 
			
		||||
        process.env.http_proxy = preEnvHttpProxyLowerCase;
 | 
			
		||||
        process.env.HTTP_PROXY = preEnvHttpProxyUpperCase;
 | 
			
		||||
        // On Windows, if environment variable of NO_PROXY that includes lower cases
 | 
			
		||||
        // such as No_Proxy is replaced with NO_PROXY.
 | 
			
		||||
        process.env.no_proxy = preEnvNoProxyLowerCase;
 | 
			
		||||
        process.env.NO_PROXY = preEnvNoProxyUpperCase;
 | 
			
		||||
        if (preEnvHttpProxyLowerCase == undefined) {
 | 
			
		||||
            delete process.env.http_proxy;
 | 
			
		||||
        }
 | 
			
		||||
        if (preEnvHttpProxyUpperCase == undefined) {
 | 
			
		||||
            delete process.env.HTTP_PROXY;
 | 
			
		||||
        }
 | 
			
		||||
        if (preEnvNoProxyLowerCase == undefined) {
 | 
			
		||||
            delete process.env.no_proxy;
 | 
			
		||||
        }
 | 
			
		||||
        if (preEnvNoProxyUpperCase == undefined) {
 | 
			
		||||
            delete process.env.NO_PROXY;
 | 
			
		||||
        }
 | 
			
		||||
        helper.unload();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
@@ -1060,13 +1063,12 @@ describe('HTTP Request Node', function() {
 | 
			
		||||
        it('should use http_proxy', function(done) {
 | 
			
		||||
            var flow = [{id:"n1",type:"http request",wires:[["n2"]],method:"POST",ret:"obj",url:getTestURL('/postInspect')},
 | 
			
		||||
                {id:"n2", type:"helper"}];
 | 
			
		||||
            saveProxySetting();
 | 
			
		||||
            deleteProxySetting();
 | 
			
		||||
            process.env.http_proxy = "http://localhost:" + testProxyPort;
 | 
			
		||||
            helper.load(httpRequestNode, flow, function() {
 | 
			
		||||
                var n1 = helper.getNode("n1");
 | 
			
		||||
                var n2 = helper.getNode("n2");
 | 
			
		||||
                n2.on("input", function(msg) {
 | 
			
		||||
                    restoreProxySetting();
 | 
			
		||||
                    try {
 | 
			
		||||
                        msg.should.have.property('statusCode',200);
 | 
			
		||||
                        msg.payload.should.have.property('headers');
 | 
			
		||||
@@ -1083,13 +1085,12 @@ describe('HTTP Request Node', function() {
 | 
			
		||||
        it('should use http_proxy when environment variable is invalid', function(done) {
 | 
			
		||||
            var flow = [{id:"n1",type:"http request",wires:[["n2"]],method:"POST",ret:"obj",url:getTestURL('/postInspect')},
 | 
			
		||||
                {id:"n2", type:"helper"}];
 | 
			
		||||
            saveProxySetting();
 | 
			
		||||
            deleteProxySetting();
 | 
			
		||||
            process.env.http_proxy = "invalidvalue";
 | 
			
		||||
            helper.load(httpRequestNode, flow, function() {
 | 
			
		||||
                var n1 = helper.getNode("n1");
 | 
			
		||||
                var n2 = helper.getNode("n2");
 | 
			
		||||
                n2.on("input", function(msg) {
 | 
			
		||||
                    restoreProxySetting();
 | 
			
		||||
                    try {
 | 
			
		||||
                        msg.should.have.property('statusCode',200);
 | 
			
		||||
                        msg.payload.should.have.property('headers');
 | 
			
		||||
@@ -1106,13 +1107,12 @@ describe('HTTP Request Node', function() {
 | 
			
		||||
        it('should use HTTP_PROXY', function(done) {
 | 
			
		||||
            var flow = [{id:"n1",type:"http request",wires:[["n2"]],method:"POST",ret:"obj",url:getTestURL('/postInspect')},
 | 
			
		||||
                {id:"n2", type:"helper"}];
 | 
			
		||||
            saveProxySetting();
 | 
			
		||||
            deleteProxySetting();
 | 
			
		||||
            process.env.HTTP_PROXY = "http://localhost:" + testProxyPort;
 | 
			
		||||
            helper.load(httpRequestNode, flow, function() {
 | 
			
		||||
                var n1 = helper.getNode("n1");
 | 
			
		||||
                var n2 = helper.getNode("n2");
 | 
			
		||||
                n2.on("input", function(msg) {
 | 
			
		||||
                    restoreProxySetting();
 | 
			
		||||
                    try {
 | 
			
		||||
                        msg.should.have.property('statusCode',200);
 | 
			
		||||
                        msg.payload.should.have.property('headers');
 | 
			
		||||
@@ -1129,14 +1129,13 @@ describe('HTTP Request Node', function() {
 | 
			
		||||
        it('should use no_proxy', function(done) {
 | 
			
		||||
            var flow = [{id:"n1",type:"http request",wires:[["n2"]],method:"POST",ret:"obj",url:getTestURL('/postInspect')},
 | 
			
		||||
                {id:"n2", type:"helper"}];
 | 
			
		||||
            saveProxySetting();
 | 
			
		||||
            deleteProxySetting();
 | 
			
		||||
            process.env.http_proxy = "http://localhost:" + testProxyPort;
 | 
			
		||||
            process.env.no_proxy = "foo,localhost";
 | 
			
		||||
            helper.load(httpRequestNode, flow, function() {
 | 
			
		||||
                var n1 = helper.getNode("n1");
 | 
			
		||||
                var n2 = helper.getNode("n2");
 | 
			
		||||
                n2.on("input", function(msg) {
 | 
			
		||||
                    restoreProxySetting();
 | 
			
		||||
                    try {
 | 
			
		||||
                        msg.should.have.property('statusCode',200);
 | 
			
		||||
                        msg.payload.headers.should.not.have.property('x-testproxy-header','foobar');
 | 
			
		||||
@@ -1152,14 +1151,13 @@ describe('HTTP Request Node', function() {
 | 
			
		||||
        it('should use NO_PROXY', function(done) {
 | 
			
		||||
            var flow = [{id:"n1",type:"http request",wires:[["n2"]],method:"POST",ret:"obj",url:getTestURL('/postInspect')},
 | 
			
		||||
                {id:"n2", type:"helper"}];
 | 
			
		||||
            saveProxySetting();
 | 
			
		||||
            deleteProxySetting();
 | 
			
		||||
            process.env.HTTP_PROXY = "http://localhost:" + testProxyPort;
 | 
			
		||||
            process.env.NO_PROXY = "foo,localhost";
 | 
			
		||||
            helper.load(httpRequestNode, flow, function() {
 | 
			
		||||
                var n1 = helper.getNode("n1");
 | 
			
		||||
                var n2 = helper.getNode("n2");
 | 
			
		||||
                n2.on("input", function(msg) {
 | 
			
		||||
                    restoreProxySetting();
 | 
			
		||||
                    try {
 | 
			
		||||
                        msg.should.have.property('statusCode',200);
 | 
			
		||||
                        msg.payload.headers.should.not.have.property('x-testproxy-header','foobar');
 | 
			
		||||
@@ -1198,13 +1196,12 @@ describe('HTTP Request Node', function() {
 | 
			
		||||
        it('should authenticate on proxy server', function(done) {
 | 
			
		||||
            var flow = [{id:"n1",type:"http request", wires:[["n2"]],method:"GET",ret:"obj",url:getTestURL('/proxyAuthenticate')},
 | 
			
		||||
                {id:"n2", type:"helper"}];
 | 
			
		||||
            saveProxySetting();
 | 
			
		||||
            deleteProxySetting();
 | 
			
		||||
            process.env.http_proxy = "http://foouser:barpassword@localhost:" + testProxyPort;
 | 
			
		||||
            helper.load(httpRequestNode, flow, function() {
 | 
			
		||||
                var n1 = helper.getNode("n1");
 | 
			
		||||
                var n2 = helper.getNode("n2");
 | 
			
		||||
                n2.on("input", function(msg) {
 | 
			
		||||
                    restoreProxySetting();
 | 
			
		||||
                    try {
 | 
			
		||||
                        msg.should.have.property('statusCode',200);
 | 
			
		||||
                        msg.payload.should.have.property('user', 'foouser');
 | 
			
		||||
@@ -1223,13 +1220,12 @@ describe('HTTP Request Node', function() {
 | 
			
		||||
        it('should output an error when proxy authentication was failed', function(done) {
 | 
			
		||||
            var flow = [{id:"n1",type:"http request", wires:[["n2"]],method:"GET",ret:"obj",url:getTestURL('/proxyAuthenticate')},
 | 
			
		||||
                {id:"n2", type:"helper"}];
 | 
			
		||||
            saveProxySetting();
 | 
			
		||||
            deleteProxySetting();
 | 
			
		||||
            process.env.http_proxy = "http://xxxuser:barpassword@localhost:" + testProxyPort;
 | 
			
		||||
            helper.load(httpRequestNode, flow, function() {
 | 
			
		||||
                var n1 = helper.getNode("n1");
 | 
			
		||||
                var n2 = helper.getNode("n2");
 | 
			
		||||
                n2.on("input", function(msg) {
 | 
			
		||||
                    restoreProxySetting();
 | 
			
		||||
                    try {
 | 
			
		||||
                        msg.should.have.property('statusCode',407);
 | 
			
		||||
                        msg.headers.should.have.property('proxy-authenticate', 'BASIC realm="test"');
 | 
			
		||||
 
 | 
			
		||||
@@ -463,6 +463,11 @@ describe('file Nodes', function() {
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should try to create a new directory if asked to do so (append)', function(done) {
 | 
			
		||||
            // fs.writeFileSync of afterEach failed on Windows.
 | 
			
		||||
            if (os.type() === "Windows_NT") {
 | 
			
		||||
                done();
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            // Stub file write so we can make writes fail
 | 
			
		||||
            var fileToTest2 = path.join(resourcesDir,"file-out-node","50-file-test-file.txt");
 | 
			
		||||
            var spy = sinon.stub(fs, "ensureDir", function(arg1,arg2,arg3,arg4) { arg2(null); });
 | 
			
		||||
 
 | 
			
		||||
@@ -155,7 +155,7 @@ describe('nodes/registry/installer', function() {
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
        it("rejects when non-existant path is provided", function(done) {
 | 
			
		||||
            this.timeout(10000);
 | 
			
		||||
            this.timeout(20000);
 | 
			
		||||
            var resourcesDir = path.resolve(path.join(__dirname,"..","resources","local","TestNodeModule","node_modules","NonExistant"));
 | 
			
		||||
            installer.installModule(resourcesDir).then(function() {
 | 
			
		||||
                done(new Error("Unexpected success"));
 | 
			
		||||
 
 | 
			
		||||
@@ -287,7 +287,7 @@ describe("storage/localfilesystem/projects/ssh", function() {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should generate sshkey file with size data', function(done) {
 | 
			
		||||
        this.timeout(10000);
 | 
			
		||||
        this.timeout(20000);
 | 
			
		||||
        var sshkeyDirPath = path.join(userDir, 'projects', '.sshkeys');
 | 
			
		||||
        var username = 'test';
 | 
			
		||||
        var options = {
 | 
			
		||||
@@ -311,7 +311,7 @@ describe("storage/localfilesystem/projects/ssh", function() {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should generate sshkey file with password & size data', function(done) {
 | 
			
		||||
        this.timeout(10000);
 | 
			
		||||
        this.timeout(20000);
 | 
			
		||||
        var sshkeyDirPath = path.join(userDir, 'projects', '.sshkeys');
 | 
			
		||||
        var username = 'test';
 | 
			
		||||
        var options = {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user