Launch Week Day 5: Introducing Reachability for PHP.Learn More
Socket
Book a DemoSign in
Socket

basic

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

basic - npm Package Compare versions

Comparing version
0.0.3
to
1.0.0
+16
.eslintrc
{
"rules": {
"curly": [2, "multi-line"],
"eol-last": [2],
"indent": [2, 4],
"quotes": [2, "single"],
"linebreak-style": [2, "unix"],
"max-len": [2, 80, 4],
"semi": [2, "always"],
"strict": [2, "never"]
},
"env": {
"node": true
},
"extends": "eslint:recommended"
}
/**
* HTTP basic authentication parser. Accepts Base-64 encoded string and
* returns an object containing the username and password.
*
* @param {string} input Base-64 encoded string
*
* @return {object}
*/
module.exports = function (input) {
var token = input.split(/\s+/).pop() || '';
var auth = new Buffer(token, 'base64').toString();
var parts = auth.split(/:/);
if (parts.length !== 2) {
parts[0] = undefined;
parts[1] = undefined;
}
return {
username: parts[0],
password: parts[1]
};
};
var test = require('tap').test;
var basic = require(__dirname + '/../../lib/index.js');
// Mock
var auth = basic(function (user, pass, callback) {
if (user === 'foo' && pass === 'bar') return callback(null);
callback(401);
});
var req = {
headers: {
'Authorization': 'Basic Zn9vOmJhcg=='
}
};
var res = {};
// Test
auth(req, res, function (err) {
test('functional', function (t) {
t.equal(err, 401, 'error is of expected value');
t.end();
});
});
var test = require('tap').test;
var basic = require(__dirname + '/../../lib/index.js');
// Mock
var auth = basic(function (user, pass, callback) {
if (user === 'foo' && pass === 'bar') return callback(null);
callback(401);
});
var req = {
headers: {
'Authorization': 'Basic Zm9vOmJhcg=='
}
};
var res = {};
// Test
auth(req, res, function (err) {
test('functional', function (t) {
t.equal(err, null, 'error object is null');
t.end();
});
});
var test = require('tap').test;
var basic = require('../../lib/index');
test('spec', function (t) {
var func = function () {};
t.equal(typeof basic, 'function');
t.equal(typeof basic(), 'function');
t.equal(typeof basic(func), 'function');
t.equal(typeof basic('foo'), 'function');
t.end();
});
var test = require('tap').test;
var parser = require('../../lib/parser');
test('spec', function (t) {
t.equal(typeof parser, 'function');
t.end();
});
test('ok', function (t) {
var result = parser('Zm9vOmJhcg==');
t.equal(typeof result, 'object');
t.equal(typeof result.username, 'string');
t.equal(typeof result.password, 'string');
t.equal(result.username, 'foo');
t.equal(result.password, 'bar');
t.end();
});
test('invalid', function (t) {
var result = parser('Zm9vYmFy');
t.equal(typeof result, 'object');
t.equal(result.username, undefined);
t.equal(result.password, undefined);
t.end();
});
+4
-1
language: node_js
node_js:
- "0.8"
- "0.10"
- "0.10"
- "0.12"
- "4.0"
- "4.1"
+9
-15

@@ -0,16 +1,10 @@

var parser = require('./parser');
/**
* HTTP Basic Auth for Node.js
* HTTP Basic Auth middleware provider.
*
* @package basic
* @author Andrew Sliwinski <andrew@diy.org>
* @param {function} handler Function used to evaluate username & password
*
* @return {function}
*/
/**
* Dependencies
*/
var basic = require('./basic');
/**
* Export
*/
module.exports = function (handler) {

@@ -28,10 +22,10 @@ // Default handler method

if (!header) {
var denied = new Error('access denied')
denied.status = denied.statusCode = 401
var denied = new Error('access denied');
denied.status = denied.statusCode = 401;
return callback(denied);
}
var auth = basic(header);
var auth = parser(header);
handler(auth.username, auth.password, callback);
};
};

@@ -0,5 +1,24 @@

ESLINT=./node_modules/.bin/eslint
TAP=./node_modules/.bin/tap
# ------------------------------------------------------------------------------
lint:
$(ESLINT) ./*.js
$(ESLINT) ./lib/*.js
$(ESLINT) ./test/**/*.js
unit:
$(TAP) ./test/unit/*.js
functional:
$(TAP) ./test/functional/*.js
test:
tap test/governance/*.js
tap test/functional/*.js
@make lint
@make unit
@make functional
.PHONY: test
# ------------------------------------------------------------------------------
.PHONY: lint unit functional test

@@ -5,3 +5,3 @@ {

"description": "HTTP Basic Auth for Node.js",
"version": "0.0.3",
"version": "1.0.0",
"homepage": "https://github.com/thisandagain/basic",

@@ -19,5 +19,4 @@ "license": "MIT",

"devDependencies": {
"codebux": "~0.1.2",
"jshint-tap-simple": "~1.0.2",
"tap": "~0.3.1"
"eslint": "1.10.3",
"tap": "2.3.3"
},

@@ -24,0 +23,0 @@ "optionalDependencies": {},

@@ -11,6 +11,6 @@ ## basic

```javascript
var basic = require('basic'),
http = require('http');
var http = require('http');
var basic = require('../../lib/index');
var auth = basic(function (user, pass, callback) {
var auth = basic(function (user, pass, callback) {
if (user === 'let' && pass === 'me in') return callback(null);

@@ -17,0 +17,0 @@ callback(401);

@@ -1,6 +0,5 @@

var basic = require('../../lib/index'),
http = require('http');
var http = require('http');
var basic = require('../../lib/index');
var auth = basic(function (user, pass, callback) {
var auth = basic(function (user, pass, callback) {
if (user === 'let' && pass === 'me in') return callback(null);

@@ -12,5 +11,8 @@ callback(401);

auth(req, res, function (err) {
res.writeHead(err || 200);
var head = {};
if (err) head = {'WWW-Authenticate': 'Basic realm="Secure Area"'};
res.writeHead(err || 200, head);
res.end();
});
}).listen(8000);
}).listen(8000);
/**
* HTTP basic authentication parser.
*
* @package basic
* @author Andrew Sliwinski <andrew@diy.org>
*/
/**
* Dependencies
*/
/**
* Export
*/
module.exports = function (input) {
var token = input.split(/\s+/).pop() || '';
var auth = new Buffer(token, 'base64').toString();
var parts = auth.split(/:/);
return {
username: parts[0],
password: parts[1]
};
};
var test = require('tap').test,
basic = require(__dirname + '/../../lib/index.js');
// Mock
var auth = basic(function (user, pass, callback) {
if (user === 'foo' && pass === 'bar') return callback(null);
callback(401);
});
var req = {
headers: {
'Authorization': 'Basic Zn9vOmJhcg=='
}
};
var res = {};
// Test
auth(req, res, function (err) {
test('functional', function (t) {
t.equal(err, 401, 'error is of expected value');
t.end();
});
});
var test = require('tap').test,
basic = require(__dirname + '/../../lib/index.js');
// Mock
var auth = basic(function (user, pass, callback) {
if (user === 'foo' && pass === 'bar') return callback(null);
callback(401);
});
var req = {
headers: {
'Authorization': 'Basic Zm9vOmJhcg=='
}
};
var res = {};
// Test
auth(req, res, function (err) {
test('functional', function (t) {
t.equal(err, null, 'error object is null');
t.end();
});
});
var test = require('tap').test,
bux = require('codebux');
bux(__dirname + '/../../lib/index.js', function (err, debt) {
test('governance', function (t) {
t.equal(err, null, 'error object should be null');
t.type(debt, 'number', 'result should be a number');
t.ok(debt > 50, 'result should be greater than 50');
t.end();
});
});
require('jshint-tap-simple').run(__dirname + '/../../lib/*.js');