extracting base class for tests, adding readEvent tests, fixing typed error in related operations, adding a file logger

This commit is contained in:
Nicolas Dextraze
2016-03-13 18:38:42 -07:00
parent 0b63df85e7
commit d1b9d6958b
11 changed files with 540 additions and 259 deletions

View File

@ -38,18 +38,21 @@ function eventDataFactory(eventId, type, isJson, data, metadata) {
return new EventData(eventId, type, isJson, data, metadata);
}
// Exporting classes
module.exports.EventStoreConnection = require('./eventStoreConnection');
module.exports.UserCredentials = require('./systemData/userCredentials');
module.exports.EventData = EventData;
module.exports.PersistentSubscriptionSettings = require('./persistentSubscriptionSettings');
module.exports.SystemConsumerStrategies = require('./systemConsumerStrategies');
// Exporting errors
module.exports.WrongExpectedVersionError = require('./errors/wrongExpectedVersionError');
module.exports.StreamDeletedError = require('./errors/streamDeletedError');
module.exports.AccessDeniedError = require('./errors/accessDeniedError');
// Exporting enums/constants
module.exports.expectedVersion = expectedVersion;
module.exports.positions = positions;
module.exports.systemMetadata = require('./common/systemMetadata');
module.exports.eventReadStatus = results.EventReadStatus;
// Helper functions
module.exports.createConnection = module.exports.EventStoreConnection.create;
module.exports.createEventData = eventDataFactory;

View File

@ -6,6 +6,9 @@ var InspectionDecision = require('../systemData/inspectionDecision');
var InspectionResult = require('./../systemData/inspectionResult');
var ClientMessage = require('../messages/clientMessage');
var results = require('../results');
var WrongExpectedVersionError = require('../errors/wrongExpectedVersionError');
var StreamDeletedError = require('../errors/streamDeletedError');
var AccessDeniedError = require('../errors/accessDeniedError');
var OperationBase = require('../clientOperations/operationBase');
@ -38,17 +41,16 @@ DeleteStreamOperation.prototype._inspectResponse = function(response) {
case ClientMessage.OperationResult.ForwardTimeout:
return new InspectionResult(InspectionDecision.Retry, "ForwardTimeout");
case ClientMessage.OperationResult.WrongExpectedVersion:
var err = util.format("Delete stream failed due to WrongExpectedVersion. Stream: %s, Expected version: %d.", this._stream, this._expectedVersion);
this.fail(new Error("Wrong expected version: " + err));
this.fail(new WrongExpectedVersionError("Delete", this._stream, this._expectedVersion));
return new InspectionResult(InspectionDecision.EndOperation, "WrongExpectedVersion");
case ClientMessage.OperationResult.StreamDeleted:
this.fail(new Error("Stream deleted: " + this._stream));
this.fail(new StreamDeletedError(this._stream));
return new InspectionResult(InspectionDecision.EndOperation, "StreamDeleted");
case ClientMessage.OperationResult.InvalidTransaction:
this.fail(new Error("Invalid transaction."));
return new InspectionResult(InspectionDecision.EndOperation, "InvalidTransaction");
case ClientMessage.OperationResult.AccessDenied:
this.fail(new Error(util.format("Write access denied for stream '%s'.", this._stream)));
this.fail(new AccessDeniedError("Delete", this._stream));
return new InspectionResult(InspectionDecision.EndOperation, "AccessDenied");
default:
throw new Error(util.format("Unexpected OperationResult: %d.", response.result));

View File

@ -5,6 +5,7 @@ var ClientMessage = require('../messages/clientMessage');
var InspectionResult = require('./../systemData/inspectionResult');
var InspectionDecision = require('../systemData/inspectionDecision');
var results = require('../results');
var AccessDeniedError = require('../errors/accessDeniedError');
var OperationBase = require('./operationBase');
@ -42,7 +43,7 @@ ReadEventOperation.prototype._inspectResponse = function(response) {
this.fail(new Error("Server error: " + response.error));
return new InspectionResult(InspectionDecision.EndOperation, "Error");
case ClientMessage.ReadEventCompleted.ReadEventResult.AccessDenied:
this.fail(new Error(util.format("Read access denied for stream '%s'.", this._stream)));
this.fail(new AccessDeniedError("Read", this._stream));
return new InspectionResult(InspectionDecision.EndOperation, "AccessDenied");
default:
throw new Error(util.format("Unexpected ReadEventResult: %s.", response.result));

View File

@ -13,7 +13,7 @@ function FileLogger(filePath, append) {
function createLine(level, args, argsStartIndex) {
var msg = util.format.apply(util, Array.prototype.slice.call(args, argsStartIndex));
return util.format('%s %s - %s%s', new Date().toISOString(), level, msg, os.EOL);
return util.format('%s %s - %s%s', new Date().toISOString().substr(11,12), level, msg, os.EOL);
}
FileLogger.prototype.debug = function() {

View File

@ -111,7 +111,12 @@ module.exports = require("protobufjs").newBuilder({})['import']({
"name": "ResolvedIndexedEvent",
"fields": [
{
"rule": "required",
/*
rule changed from required to optional
because protobufjs doesn't allow null value for required object
and in the case of a non-success result, event will be null
*/
"rule": "optional",
"type": "EventRecord",
"name": "event",
"id": 1