This commit is contained in:
Andre Rodrigues 2012-10-10 14:57:08 +01:00
Родитель 803e19bccb
Коммит 30caaf2f0f
2 изменённых файлов: 46 добавлений и 2 удалений

Просмотреть файл

@ -13,6 +13,8 @@
* limitations under the License.
*/
var util = require('../../util/util');
// Expose 'ConnectionStringParser'.
exports = module.exports = ConnectionStringParser;
@ -32,6 +34,7 @@ function ConnectionStringParser(connectionString) {
}
ConnectionStringParser.prototype._parse = function () {
var self = this;
var parts = this._connectionString.split(';');
var parsedConnectionString = { };
@ -41,7 +44,11 @@ ConnectionStringParser.prototype._parse = function () {
if (part) {
var currentKVP = part.split('=');
if (currentKVP.length === 2) {
parsedConnectionString[currentKVP[0].toLowerCase()] = currentKVP[1];
if (currentKVP[0].length > 0) {
parsedConnectionString[self._getValue(currentKVP[0].toLowerCase())] = self._getValue(currentKVP[1]);
} else {
throw new Error('Invalid key');
}
} else {
throw new Error('Invalid connection string');
}
@ -49,4 +56,13 @@ ConnectionStringParser.prototype._parse = function () {
});
return parsedConnectionString;
};
ConnectionStringParser.prototype._getValue = function (str) {
if ((util.stringStartsWith(str, '"') && util.stringEndsWith(str, '"')) ||
(util.stringStartsWith(str, '\'') && util.stringEndsWith(str, '\''))) {
return str.substring(1, str.length - 1);
}
return str;
};

Просмотреть файл

@ -43,7 +43,7 @@ suite('connectionstringparser-tests', function () {
done();
});
test('parseInvalid', function (done) {
test('parseInvalidAssignment', function (done) {
// no assignment
assert.throws(
function() {
@ -54,4 +54,32 @@ suite('connectionstringparser-tests', function () {
done();
});
test('parseInvalidKey', function (done) {
assert.throws(
function() {
var parsedConnectionString = ConnectionStringParser.parse('=value');
},
Error
);
assert.throws(
function() {
var parsedConnectionString = ConnectionStringParser.parse(' =value');
},
Error
);
done();
});
test('parseQuotedValues', function (done) {
var parsedConnectionString = ConnectionStringParser.parse('"test"=\'value\'');
assert.equal(parsedConnectionString['test'], 'value');
var parsedConnectionString = ConnectionStringParser.parse('\'test\'="value"');
assert.equal(parsedConnectionString['test'], 'value');
done();
});
});