簡體   English   中英

api-easy-誓言-設置cookie問題

[英]api-easy - vows - setting cookie issue

我在vows使用api-easy進行API testing 我的api之一需要經過身份驗證的登錄名才能訪問數據列表。

所以第一次我用/api/session登錄並提取了cookie並在第二次api調用中使用了它。 但這仍然給我帶來了unauthorised錯誤。

var cookies;

suite.discuss('When using your awesome API')
.use('localhost', 9000)
.setHeader('Content-Type', 'application/json; charset=utf-8')
.post('/api/session', {'username': 'siteadmin', 'password': 'siteadmin' })
.expect(200)
    .expect('should login', function (err, res, body) {
        res.headers['set-cookie'].filter(function (cookie) {
            if (!!~cookie.indexOf('connect.sid')) {
                cookies = cookie.split(';', 1)[0];
            }
        })    
    })
.next()
.discuss('and your awesome resource')
.use('localhost', 9000)
.setHeader('Content-Type', 'application/json; charset=utf-8')
.setHeader('Cookie', cookies)
.get('/api/list/name')
.expect(200)
.export(module);

有任何想法如何使它運行嗎?

嘗試這個

suite.discuss('When using your awesome API')
.use('localhost', 9000)
.setHeader('Content-Type', 'application/json; charset=utf-8')
.post('/api/session', {'username': 'siteadmin', 'password': 'siteadmin' })
.expect(200)
    .expect('should login', function (err, res, body) {
        assert.include(res.headers, 'set-cookie');
        suite.before('setAuth', function (outgoing) {
                outgoing.headers['Cookie'] = res.headers['set-cookie'][0];
                return outgoing;
        });  
    })
.next()
.discuss('and your awesome resource')
.use('localhost', 9000)
.setHeader('Content-Type', 'application/json; charset=utf-8')
.get('/api/list/name')
.expect(200)
.export(module);

我刪除了cookie變量,並使用suite.before方法將cookie注入標題中。

從定義suite.before函數開始,就將在該套件的所有順序請求中設置cookie。 因此,您可以將以上示例分為兩個測試:

suite.discuss('When using your awesome API')
.use('localhost', 9000)
.setHeader('Content-Type', 'application/json; charset=utf-8');

suite.discuss('and sending login data to')
.post('/api/session', {'username': 'siteadmin', 'password': 'siteadmin' })
.expect(200)
    .expect('should login', function (err, res, body) {
        assert.include(res.headers, 'set-cookie');
        suite.before('setAuth', function (outgoing) {
                outgoing.headers['Cookie'] = res.headers['set-cookie'][0];
                return outgoing;
        });  
    });

suite.discuss('then after login')
.get('/api/list/name')
.expect(200);

suite.export(module);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM