From: deepak1556 Date: Wed, 30 Nov 2016 20:02:17 +0000 (+0530) Subject: add spec X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=21be9a33091fd16b4a286f8e9968056e37282bb1;p=platform%2Fframework%2Fweb%2Fcrosswalk-tizen.git add spec --- diff --git a/spec/api-session-spec.js b/spec/api-session-spec.js index f7a5330..000a258 100644 --- a/spec/api-session-spec.js +++ b/spec/api-session-spec.js @@ -4,10 +4,11 @@ const https = require('https') const path = require('path') const fs = require('fs') const send = require('send') +const auth = require('basic-auth') const {closeWindow} = require('./window-helpers') const {ipcRenderer, remote} = require('electron') -const {ipcMain, session, BrowserWindow} = remote +const {ipcMain, session, BrowserWindow, net} = remote describe('session module', function () { var fixtures = path.resolve(__dirname, 'fixtures') @@ -661,4 +662,60 @@ describe('session module', function () { }) }) }) + + describe('ses.clearAuthCache(options[, callback])', function () { + it('can clear http auth info from cache', function (done) { + const ses = session.fromPartition('auth-cache') + const server = http.createServer(function (req, res) { + var credentials = auth(req) + if (!credentials || credentials.name !== 'test' || credentials.pass !== 'test') { + res.statusCode = 401 + res.setHeader('WWW-Authenticate', 'Basic realm="Restricted"') + res.end() + } else { + res.statusCode = 200 + res.write('authenticated') + res.end() + } + }) + server.listen(0, '127.0.0.1', function () { + const port = server.address().port + function issueLoginRequest (attempt = 1) { + if (attempt > 2) { + server.close() + return done() + } + const request = net.request({ + url: `http://127.0.0.1:${port}`, + session: ses + }) + request.on('login', function (info, callback) { + attempt++ + assert.equal(info.scheme, 'basic') + assert.equal(info.realm, 'Restricted') + callback('test', 'test') + }) + request.on('response', function (response) { + let data = '' + response.on('data', function (chunk) { + data += chunk + }) + response.on('end', function () { + assert.equal(data, 'authenticated') + ses.clearAuthCache({type: 'password'}, function () { + issueLoginRequest(attempt) + }) + }) + response.on('error', function (error) { + done(error) + }) + }) + // Internal api to bypass cache for testing. + request.urlRequest._setLoadFlags(1 << 1) + request.end() + } + issueLoginRequest() + }) + }) + }) })