2014-10-19 11 views
5

मैं jwt द्वारा संरक्षित एक आरईएसटी एपीआई के लिए एकीकरण परीक्षण लिख रहा हूं। एक एपीआई आपरेशन पोस्ट /user/token है लौटने एक jwt दिया एक username और एक password और इस टोकन तो जैसे आपरेशनों की एक सूची के लिए प्रयोग किया जाता है:सुपर टेस्ट, टेस्ट सुरक्षित आरईएसटी एपीआई

GET /user/:id 

मार्ग कहाँ jwt({secret: secret.secretToken}) उपयोग कर रहा है, तो टोकन में शामिल किया गया है http शीर्षलेख Authorization

सुपर टेस्ट के साथ परीक्षण करते समय, मुझे घोंसला परीक्षण हो सकता है लेकिन मैं पहले टोकन प्राप्त करना चाहता हूं, फिर अन्य ऑपरेशन परीक्षण के लिए इस टोकन का उपयोग करें।

POST /user/token => 12345 
GET /user/:id, `Authorization Bearer 12345` 
GET /user/:foo, `Authorization Bearer 12345` 

हर आपरेशन के परीक्षण के लिए एक नया टोकन बनाने से बचने के लिए कैसे (नीचे देखें), लेकिन केवल एक ही एक पोस्ट/उपयोगकर्ता/टोकन द्वारा उत्पन्न का उपयोग करें।

it('should get a valid token for user: user1', function(done) { 
    request(url) 
    .post('/user/token') 
    .send({ _id: user1._id, password: user1.password }) 
    .expect(200) // created 
     .end(function(err, res) { 
     // test operation GET /user/:id 

उत्तर

16

आप /user/token के लिए एकल पोस्ट प्रदर्शन करने के लिए और उसके बाद हर परीक्षण मामले में प्राप्त टोकन का उपयोग करना चाहते हैं? यदि ऐसा है, तो आप उपयोग कर रहे परीक्षण ढांचे के before हुक का उपयोग करें (मोचा?) और एक चर के लिए टोकन स्टोर करें, उदा।

describe('My API tests', function() { 

    var token = null; 

    before(function(done) { 
    request(url) 
     .post('/user/token') 
     .send({ _id: user1._id, password: user1.password }) 
     .end(function(err, res) { 
     token = res.body.token; // Or something 
     done(); 
     }); 
    }); 

    it('should get a valid token for user: user1', function(done) { 
    request('/get/user') 
     .set('Authorization', 'Bearer ' + token) 
     .expect(200, done); 
    }); 
}); 
+0

इस लक्ष्य को हासिल करने के लिए कैसे अगर हम उन्हें में बिखरे इकाई परीक्षण के साथ कई फ़ाइलों और फ़ोल्डरों है, टोकन प्रत्येक में हो रही दोहराए बिना फाइल? – nottinhill

+0

@SirBenBenji मुझे लगता है कि आपको बस हुक को परिभाषित करने की आवश्यकता है ताकि आप जहां आवश्यक हो, इसकी आवश्यकता हो सके। http://stackoverflow.com/a/10561632 काम करेगा। Https://github.com/mochajs/mocha/wiki/Shared-Behaviours भी देखें – vesse

0

'वाहक' + निशानी के रूप में प्राधिकरण निर्धारित करने की आवश्यकता

var token = null; 

before(function(done) { 
    request(url) 
     .post('/user/token') 
     .send({ _id: user1._id, password: user1.password }) 
     .end(function(err, res) { 
     token = res.body.token; // Or something 
     done(); 
     }); 
    }); 


it('should get a valid token for user: user1', function(done) { 
    request('/get/user') 
     .set('Authorization', 'Bearer ' + token) 
     .expect(200, done); 
    }); 
संबंधित मुद्दे