diff --git a/test-old/test-https-exception.coffee b/test-old/test-https-exception.coffee deleted file mode 100644 index 02d9229..0000000 --- a/test-old/test-https-exception.coffee +++ /dev/null @@ -1,62 +0,0 @@ -# Request library. -request = require 'request' - -# HTTPS library. -https = require 'https' - -# File system library. -fs = require 'fs' - -# Authentication library. -auth = require '../gensrc/http-auth' - -module.exports = - - # Before each test. - setUp: (callback) -> - basic = auth.basic { # Configure authentication. - realm: "Private Area." - }, - (username, password, callback) => - if username is "gevorg" - callback new Error("Error comes here") - else - callback true - - # HTTPS server options. - options = { - key: fs.readFileSync(__dirname + "/../data/server.key"), - cert: fs.readFileSync(__dirname + "/../data/server.crt") - } - - # Creating new HTTPS server. - @server = https.createServer basic, options, (req, res) -> - res.end "Welcome to private area - #{req.user}!" - - # Start server. - @server.listen 1337 - callback() - - # After each test. - tearDown: (callback) -> - @server.close() # Stop server. - callback() - - # Error should be thrown. - testError: (test) -> - callback = (error, response, body) -> # Callback. - test.equals body, "Error comes here" - test.done() - - # Test request. - (request.get {uri: 'https://127.0.0.1:1337', strictSSL: false}, callback).auth 'gevorg', 'ggg' - - - # Correct encrypted details. - testSuccess: (test) -> - callback = (error, response, body) -> # Callback. - test.equals body, "Welcome to private area - valod!" - test.done() - - # Test request. - (request.get {uri: 'https://127.0.0.1:1337', strictSSL: false}, callback).auth 'valod', 'sss' diff --git a/test-old/test-https.coffee b/test-old/test-https.coffee deleted file mode 100644 index 86f0898..0000000 --- a/test-old/test-https.coffee +++ /dev/null @@ -1,74 +0,0 @@ -# Request library. -request = require 'request' - -# HTTPS library. -https = require 'https' - -# File system library. -fs = require 'fs' - -# Authentication library. -auth = require '../gensrc/http-auth' - -module.exports = - - # Before each test. - setUp: (callback) -> - basic = auth.basic { # Configure authentication. - realm: "Private Area.", - file: __dirname + "/../data/users.htpasswd" - } - - # HTTPS server options. - options = { - key: fs.readFileSync(__dirname + "/../data/server.key"), - cert: fs.readFileSync(__dirname + "/../data/server.crt") - } - - # Creating new HTTPS server. - @server = https.createServer basic, options, (req, res) -> - res.end "Welcome to private area - #{req.user}!" - # Start server. - @server.listen 1337 - callback() - - # After each test. - tearDown: (callback) -> - @server.close() # Stop server. - callback() - - # Correct encrypted details. - testSuccess: (test) -> - callback = (error, response, body) -> # Callback. - test.equals body, "Welcome to private area - gevorg!" - test.done() - - # Test request. - (request.get {uri: 'https://127.0.0.1:1337', strictSSL: false}, callback).auth 'gevorg', 'gpass' - - # Correct plain details. - testSuccessPlain: (test) -> - callback = (error, response, body) -> # Callback. - test.equals body, "Welcome to private area - Sarah!" - test.done() - - # Test request. - (request.get {uri: 'https://127.0.0.1:1337', strictSSL: false}, callback).auth 'Sarah', 'testpass' - - # Wrong password. - testWrongPassword: (test) -> - callback = (error, response, body) -> # Callback. - test.equals body, "401 Unauthorized" - test.done() - - # Test request. - (request.get {uri: 'https://127.0.0.1:1337', strictSSL: false}, callback).auth 'gevorg', 'duck' - - # Wrong user. - testWrongUser: (test) -> - callback = (error, response, body) -> # Callback. - test.equals body, "401 Unauthorized" - test.done() - - # Test request. - (request.get {uri: 'https://127.0.0.1:1337', strictSSL: false}, callback).auth 'solomon', 'gpass' \ No newline at end of file diff --git a/test-old/test-passport-exception.coffee b/test-old/test-passport-exception.coffee deleted file mode 100644 index 0c19112..0000000 --- a/test-old/test-passport-exception.coffee +++ /dev/null @@ -1,70 +0,0 @@ -# Request library. -request = require 'request' - -# express library. -express = require 'express' - -# Authentication library. -auth = require '../gensrc/http-auth' - -# passport library. -passport = require 'passport' - -# Utility library. -utils = require '../gensrc/auth/utils' - -module.exports = - - # Before each test. - setUp: (callback) -> - # Configure authentication. - digest = auth.digest { - realm: "Simon Area.", - }, - (username, callback) => - if username is "simon" - callback (utils.md5 "simon:Simon Area.:smart") - else - callback new Error("Error comes here") - - # Creating new HTTP server. - app = express() - - # Setup passport. - passport.use(auth.passport(digest)); - - # Setup route. - app.get '/', passport.authenticate('http', { session: false }), (req, res) -> - res.send "Hello from passport - #{req.user}!" - - # Error handler. - app.use (err, req, res, next) -> - res.status(400).end(err.message); - - # Start server. - @server = app.listen 1337 - callback() - - # After each test. - tearDown: (callback) -> - @server.close() # Stop server. - callback() - - # Error should be thrown. - testError: (test) -> - callback = (error, response, body) -> # Callback. - test.equals body, "Error comes here" - test.done() - - # Test request. - (request.get 'http://127.0.0.1:1337', callback).auth 'gevorg', 'gpass', false - - - # Correct details. - testSuccess: (test) -> - callback = (error, response, body) -> # Callback. - test.equals body, "Hello from passport - simon!" - test.done() - - # Test request. - (request.get 'http://127.0.0.1:1337', callback).auth 'simon', 'smart', false \ No newline at end of file diff --git a/test-old/test-passport.coffee b/test-old/test-passport.coffee deleted file mode 100644 index 421cd76..0000000 --- a/test-old/test-passport.coffee +++ /dev/null @@ -1,66 +0,0 @@ -# Request library. -request = require 'request' - -# express library. -express = require 'express' - -# Authentication library. -auth = require '../gensrc/http-auth' - -# passport library. -passport = require 'passport' - -module.exports = - - # Before each test. - setUp: (callback) -> - digest = auth.digest { # Configure authentication. - realm: "Simon Area.", - file: __dirname + "/../data/users.htdigest" - } - - # Creating new HTTP server. - app = express() - - # Setup passport. - passport.use(auth.passport(digest)); - - # Setup route. - app.get '/', passport.authenticate('http', { session: false }), (req, res) -> - res.send "Hello from passport - #{req.user}!" - - # Start server. - @server = app.listen 1337 - callback() - - # After each test. - tearDown: (callback) -> - @server.close() # Stop server. - callback() - - # Correct details. - testSuccess: (test) -> - callback = (error, response, body) -> # Callback. - test.equals body, "Hello from passport - vivi!" - test.done() - - # Test request. - (request.get 'http://127.0.0.1:1337', callback).auth 'vivi', 'anna', false - - # Wrong password. - testWrongPassword: (test) -> - callback = (error, response, body) -> # Callback. - test.equals body, "Unauthorized" - test.done() - - # Test request. - (request.get 'http://127.0.0.1:1337', callback).auth 'vivi', 'duck', false - - # Wrong user. - testWrongUser: (test) -> - callback = (error, response, body) -> # Callback. - test.equals body, "Unauthorized" - test.done() - - # Test request. - (request.get 'http://127.0.0.1:1337', callback).auth 'solomon', 'gpass', false \ No newline at end of file diff --git a/test/https.js b/test/https.js new file mode 100644 index 0000000..e2842fb --- /dev/null +++ b/test/https.js @@ -0,0 +1,103 @@ +"use strict"; + +// Expect module. +import {expect} from 'chai' + +// Request module. +import request from 'request' + +// HTTPS library. +import https from 'https' + +// FS. +import fs from 'fs' + +// Source. +import auth from '../gensrc/http-auth' + +// HTTPS. +describe('https', function () { + let server = undefined; + + before(function() { + // Configure authentication. + let basic = auth.basic({ + realm: "Private Area." + }, function (username, password, done) { + if (username === 'gevorg') { + done(new Error("Error comes here")); + } else if (username === "mia" && password === "supergirl") { + done(true); + } else if (username === "ColonUser" && password === "apasswordwith:acolon") { + done(true); + } else { + done(false); + } + }); + + // HTTPS server options. + let options = { + key: fs.readFileSync(__dirname + "/../data/server.key"), + cert: fs.readFileSync(__dirname + "/../data/server.crt") + }; + + + // Creating new HTTPS server. + server = https.createServer(basic, options, function (req, res) { + res.end(`Welcome to private area - ${req.user}!`); + }); + + // Start server. + server.listen(1337); + }); + + after(function() { + server.close(); + }); + + it('error', function () { + let callback = function (error, response, body) { + expect(body).to.equal("Error comes here"); + }; + + // Test request. + request.get({uri: 'https://127.0.0.1:1337', strictSSL: false}, callback).auth('gevorg', 'gpass'); + }); + + it('success', function () { + let callback = function (error, response, body) { + expect(body).to.equal("Welcome to private area - mia!"); + }; + + // Test request. + request.get({uri: 'https://127.0.0.1:1337', strictSSL: false}, callback).auth('mia', 'supergirl'); + }); + + it('wrong password', function () { + let callback = function (error, response, body) { + expect(body).to.equal("401 Unauthorized"); + }; + + // Test request. + request.get({uri: 'https://127.0.0.1:1337', strictSSL: false}, callback).auth('mia', 'cute'); + }); + + it('wrong user', function () { + let callback = function (error, response, body) { + expect(body).to.equal("401 Unauthorized"); + }; + + // Test request. + request.get({uri: 'https://127.0.0.1:1337', strictSSL: false}, callback).auth('Tina', 'supergirl'); + }); + + it('password with colon', function () { + let callback = function (error, response, body) { + expect(body).to.equal("Welcome to private area - ColonUser!"); + }; + + // Test request. + request.get({uri: 'https://127.0.0.1:1337', strictSSL: false}, callback).auth( + 'ColonUser', 'apasswordwith:acolon'); + }); +}); diff --git a/test/passport.js b/test/passport.js new file mode 100644 index 0000000..f3d64fb --- /dev/null +++ b/test/passport.js @@ -0,0 +1,107 @@ +"use strict"; + +// Expect module. +import {expect} from 'chai' + +// Request module. +import request from 'request' + +// Express. +import express from 'express' + +// Passport. +import passport from 'passport' + +// Source. +import auth from '../gensrc/http-auth' + +// Passport. +describe('passport', function () { + let server = undefined; + + before(function () { + // Configure authentication. + let basic = auth.basic({ + realm: "Private Area." + }, function (username, password, done) { + if (username === 'gevorg') { + done(new Error("Error comes here")); + } else if (username === "mia" && password === "supergirl") { + done(true); + } else if (username === "ColonUser" && password === "apasswordwith:acolon") { + done(true); + } else { + done(false); + } + }); + + // Creating new HTTP server. + let app = express(); + app.use(auth.connect(basic)); + + // Setup passport. + passport.use(auth.passport(basic)); + + // Setup route. + app.get( '/', passport.authenticate('http', { session: false }), function (req, res) { + res.send(`Welcome to private area - ${req.user}!`); + }); + + // Error handler. + app.use(function (err, req, res, next) { + res.status(400).end(err.message); + }); + + // Start server. + server = app.listen(1337); + }); + + after(function () { + server.close(); + }); + + it('error', function () { + let callback = function (error, response, body) { + expect(body).to.equal("Error comes here"); + }; + + // Test request. + request.get('http://127.0.0.1:1337', callback).auth('gevorg', 'gpass'); + }); + + it('success', function () { + let callback = function (error, response, body) { + expect(body).to.equal("Welcome to private area - mia!"); + }; + + // Test request. + request.get('http://127.0.0.1:1337', callback).auth('mia', 'supergirl'); + }); + + it('wrong password', function () { + let callback = function (error, response, body) { + expect(body).to.equal("401 Unauthorized"); + }; + + // Test request. + request.get('http://127.0.0.1:1337', callback).auth('mia', 'cute'); + }); + + it('wrong user', function () { + let callback = function (error, response, body) { + expect(body).to.equal("401 Unauthorized"); + }; + + // Test request. + request.get('http://127.0.0.1:1337', callback).auth('Tina', 'supergirl'); + }); + + it('password with colon', function () { + let callback = function (error, response, body) { + expect(body).to.equal("Welcome to private area - ColonUser!"); + }; + + // Test request. + request.get('http://127.0.0.1:1337', callback).auth('ColonUser', 'apasswordwith:acolon'); + }); +}); \ No newline at end of file