2013-12-17 6 views
6

मैं प्रमाणीकरण (फेसबुक रणनीति) के लिए पासपोर्ट.जेएस का उपयोग कर रहा हूं और मोचा और सुपरटेस्ट के साथ परीक्षण कर रहा हूं। मैं एक सत्र कैसे बना सकता हूं और फेसबुक रणनीति के लिए सुपरटेस्ट के साथ प्रमाणित अनुरोध कैसे कर सकता हूं?पासपोर्ट/फेसबुक रणनीति/के साथ सुपरटेस्ट अनुरोधों को प्रमाणित कैसे करें?

describe 'when user not logged in', -> 

    describe 'POST /api/posts', -> 
     it 'respond with 401', (done)-> 
     request(app). 
      post(API.url('posts')). 
      set('Accept', 'application/json'). 
      send(post: data). 
      expect('Content-Type', /json/). 
      expect(401, done) 

सलाह के लिए धन्यवाद:

यहाँ उपयोगकर्ता के लॉग इन नहीं के लिए उदाहरण परीक्षण है डी

उत्तर

12

वहाँ कुछ अलग बातें यहाँ हैं यह की तरह लग रहा है, इसलिए मैं दो भागों में मेरा उत्तर विभाजित किया है।

1) आपको पहले फेसबुक के माध्यम से परीक्षण उपयोगकर्ता बनाना होगा। आप दो तरीकों में से एक के माध्यम से ऐसा कर सकते हैं, 1) फेसबुक का ग्राफ एपीआई, या 2) आपके आवेदन के रोल पेज के माध्यम से।

2) सुपरटेस्ट के साथ लगातार सत्रों के लिए अनुशंसा विधि सत्र जारी रखने के लिए .agent() नामक सुपरएजेंट विधि का उपयोग कर रही है। सुपरएजेंट के साथ आप कुछ भी कर सकते हैं, आप सुपरटेस्ट के साथ कर सकते हैं। अधिक के लिए यह Github पोस्ट देखें।

var supertest = require('supertest'); 
var app = require('../lib/your_app_location'); 

describe('when user not logged in', function() { 
    describe('POST /api/posts', function() { 
     var agent1 = supertest.agent(app); 

     agent1 
      .post(API.url('posts')) 
      .set('Accept', 'application/json') 
      .send(post: data) 
      .(end(function(err, res) { 
       should.not.exist(err); 
       res.should.have.status(401); 
       should.exist(res.headers['set-cookie']); 
       done(); 
      })); 
    }); 
}); 

विजनमीडिया गिथब पर कुछ अन्य अच्छे कोड स्निपेट हैं। कृपया उन्हें here खोजें।

+0

धन्यवाद। आपके उत्तर ने मुझे बहुत मदद की: डी – Zeck

+0

क्या आप फेसबुक के साथ प्रमाणित करने का एक उदाहरण दिखा सकते हैं? यानी आप लॉगिन कैसे करते हैं? मुझे लगता है कि मैं शायद कुछ खो रहा हूँ। – Kilizo

2

सामान्य समाधान एक कुकी जार कि अनुरोधों के बीच फिर से इस्तेमाल किया जाएगा बनाने के लिए है ।

निम्न उदाहरण पासपोर्ट विशिष्ट नहीं है, लेकिन काम करना चाहिए:

var request = require('request'); 

describe('POST /api/posts', function() { 
    // Create a new cookie jar 
    var j = request.jar(); 
    var requestWithCookie = request.defaults({jar: j}), 

    // Authenticate, thus setting the cookie in the cookie jar 
    before(function(done) { 
     requestWithCookie.post('http://localhost/user', {user: 'foo', password: 'bar'}, done); 
    }); 

    it('should get the user profile', function (done) { 
     requestWithCookie.get('http://localhost/user', function (err, res, user) { 
      assert.equal(user.login, 'foo'); 
      done(); 
     }); 
    }); 
}); 
+0

क्या यह स्थानीय रणनीति के लिए समाधान है? या मूल प्रमाणीकरण? –

0

यह example दिखाता है कि परीक्षण के Supertest हिस्सा करने के लिए:

describe('request', function() { 
    describe('persistent agent', function() { 
    var agent1 = request.agent(); 
    var agent2 = request.agent(); 
    var agent3 = request.agent(); 
    var agent4 = request.agent(); 

    it('should gain a session on POST', function(done) { 
     agent3 
     .post('http://localhost:4000/signin') 
     .end(function(err, res) { 
      should.not.exist(err); 
      res.should.have.status(200); 
      should.not.exist(res.headers['set-cookie']); 
      res.text.should.include('dashboard'); 
      done(); 
     }); 
    }); 

यहाँ इसके बारे में एक blog post है।

संबंधित मुद्दे