2013-05-18 2 views
1

mocha, 요청 및 SHA1 해시를 사용하여 Express 테스트에서 제공되는 favicon이 파일 시스템에있는 것과 동일한 지 확인합니다. . 나는 두 개의 다른 해시를 얻었고 그 이유를 알 수 없습니다. 인코딩이 변경 될 가능성이 있습니까?favicon 정적 이미지의 해시에서 모카 테스트에 실패했습니다.

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0" // Avoids DEPTH_ZERO_SELF_SIGNED_CERT error for self-signed certs 
var request = require("request"); 
var crypto = require('crypto'); 
var fs = require('fs'); 
var favicon = crypto.createHash('sha1').update(fs.readFileSync(__dirname + '/../../public/img/favicon.ico')).digest('hex'); 
var app = require("../../server.js"); 
var expect = require('expect.js'); 

describe("Static tests", function() { 
    it("responds successfully", function (done) { 
     request.get("https://localhost:" + process.env.PORT + "/favicon.ico", function (err, res, body) { 
      // console.log(res) 
      expect(res.statusCode).to.be(200); 
      done(); 
     }); 
    }); 

    it("serves out the file correctly", function (done) { 
     request.get("https://localhost:" + process.env.PORT + "/favicon.ico", function (err, res, body) { 
      // console.log(res) 
      expect(crypto.createHash('sha1').update(body).digest('hex')).to.be(favicon); 
      done(); 
     }); 
    }); 
}); 

테스트 1 개 패스와는 내가 얻을 : "1) 서버 정적 테스트 파일 오류 밖으로 제공 : 동일한 'd3e242e289b401c18d6e96526f586abf06385108'예상 'b09865f78dae40afa5f31503c208f5474e1d76a9'를"

어떤 아이디어 같은 파비콘은 해싱 할 이유 HTTP를 통해 전송 될 때와 파일 시스템에서 읽힐 때 다르게?

답변

2

request module을 npm에서 사용한다고 가정하면 body 인수에 대해 수신중인 개체의 유형이 Buffer인지 확인해야합니다. 요청 모듈의 소스를 살펴보면, 대신 String이 표시되는 것으로 보입니다. 당신은 필요로 할 때 다음과 같은 요청을하고 시도 할 수 있습니다 :

당신은 기본적으로 Buffer 객체를 원하는 요청 모듈을 말해야한다

var request = require("request").defaults({ encoding: null }); 
.

관련 문제