htpasswd
Version:
Node.js package for HTTP Basic Authentication password file utility.
130 lines (94 loc) • 4.46 kB
text/coffeescript
# Importing module.
processor = require '../lib/processor'
# FS module.
fs = require 'fs'
module.exports =
# After each test.
tearDown: (callback) ->
fs.unlinkSync "password.txt" if fs.existsSync "password.txt"
callback()
# Test for process with console output.
testProcessConsole: (test) ->
program = {'batch': true, 'nofile': true, 'sha': true, 'args': ["mary", "pass12"]}
preservedLog = console.log
console.log = () ->
console.log = preservedLog
console.log.apply console, arguments
test.equals arguments[0], "mary:{SHA}TgXU+mQ5o9ryuFPj3xhY1C6GHfE=", "Output is wrong!"
processor.process program
test.done()
# Test for process with successful password verification.
testProcessVerifyOk: (test) ->
fs.writeFileSync "password.txt", "detka:milaya\n", 'UTF-8'
program = {'batch': true, 'verify': true, plain: true, 'args': ["password.txt", "detka", "milaya"]}
preservedLog = console.log
console.log = () ->
console.log = preservedLog
console.log.apply console, arguments
test.equals arguments[0], "Password for user detka correct.", "Output is wrong!"
processor.process program
test.done()
# Test for process with failed password verification.
testProcessVerifyFailed: (test) ->
fs.writeFileSync "password.txt", "detka:nemilaya\n", 'UTF-8'
program = {'batch': true, 'verify': true, plain: true, 'args': ["password.txt", "detka", "milaya"]}
preservedLog = console.log
console.log = () ->
console.log = preservedLog
console.log.apply console, arguments
test.equals arguments[0], "Password verification failed.", "Output is wrong!"
processor.process program
test.done()
# Test for process with file create.
testProcessFileCreate: (test) ->
program = {'batch': true, 'sha': true, 'create': true, 'args': ["password.txt", "gevorg", "sho"]}
processor.process program
fileData = fs.readFileSync "password.txt", 'UTF-8'
test.equal fileData, "gevorg:{SHA}NSjjR5VzkksaQNgdEKs0MqPtStI=\n", "File data is wrong!"
test.done()
# Test for process with file update.
testProcessFileUpdate: (test) ->
fs.writeFileSync "password.txt", "mihrdat:{SHA}NSjjR5VzkksaQNgdEKs0MqPtStI=\n", 'UTF-8'
program = {'batch': true, 'sha': true, 'args': ["password.txt", "mihrdat", "king"]}
processor.process program
fileData = fs.readFileSync "password.txt", 'UTF-8'
test.equal fileData, "mihrdat:{SHA}SBkC7BTq8/z+xr6CvWpjuXKsUX8=\n", "File data is wrong!"
test.done()
# Test for process with file delete.
testProcessFileDelete: (test) ->
fs.writeFileSync "password.txt", "urmia:{SHA}NSjjR5VzkksaQNgdEKs0MqPtStI=\n", 'UTF-8'
program = {'delete': true, 'args': ["password.txt", "urmia"]}
processor.process program
fileData = fs.readFileSync "password.txt", 'UTF-8'
test.equal fileData, "\n", "File data is wrong!"
test.done()
# Test for process with file delete not existing.
testProcessFileDeleteNotExisting: (test) ->
fs.writeFileSync "password.txt", "urmia:{SHA}NSjjR5VzkksaQNgdEKs0MqPtStI=\n", 'UTF-8'
program = {'delete': true, 'args': ["password.txt", "sonya"]}
preservedLog = console.log
console.error = () ->
console.error = preservedLog
console.error.apply console, arguments
test.equals arguments[0], "User sonya not found.", "Output is wrong!"
processor.process(program)
test.done()
# Test for process with file add.
testProcessFileAdd: (test) ->
initData = "mihrdat:{SHA}NSjjR5VzkksaQNgdEKs0MqPtStI=\n"
fs.writeFileSync "password.txt", initData, 'UTF-8'
program = {'sha': true, 'batch': true, 'args': ["password.txt", "tigran", "thegreat"]}
processor.process program
fileData = fs.readFileSync "password.txt", 'UTF-8'
test.equal fileData, "#{initData}tigran:{SHA}1cYTTawbHcKifj2Yn6MC8bDq7Dc=\n", "File data is wrong!"
test.done()
# Test for process with file add, not existing.
testProcessFileAddNotExisting: (test) ->
program = {'batch': true, 'args': ["password.txt", "tigran", "thegreat"]}
preservedLog = console.log;
console.error = () ->
console.error = preservedLog
console.error.apply console, arguments
test.equals arguments[0], "Cannot modify file password.txt; use '-c' to create it.", "Output is wrong!"
processor.process program
test.done()