According to documentation and sample code, access policies within the azure-node-storage module use the property Permissions
(capitalized, plural). The Azure API expects the XML attribute to be permission
(lowercase, singular). For XML attributes, constants exists in common/util/constants.js
.
if (signedIdentifier.AccessPolicy.Permissions) {
doc = doc
.ele(AclConstants.PERMISSION)
.txt(signedIdentifier.AccessPolicy.Permissions)
.up();
}
if (signedIdentifier.AccessPolicy.Permission) {
si.AccessPolicy.Permission = signedIdentifier.AccessPolicy.Permission;
}
Thus, the access policy permission information in a downloaded XML is being lost/ends up in the wrong field.
diff --git a/test/services/blob/blobservice-container-tests.js b/test/services/blob/blobservice-container-tests.js
index 63ad178..7a8fd7b 100644
--- a/test/services/blob/blobservice-container-tests.js
+++ b/test/services/blob/blobservice-container-tests.js
@@ -578,7 +578,7 @@ describe('BlobContainer', function () {
if (identifier.Id === 'id1') {
assert.equal(identifier.AccessPolicy.Start.getTime(), new Date('2009-10-10T00:00:00.123Z').getTime());
assert.equal(identifier.AccessPolicy.Expiry.getTime(), new Date('2009-10-11T00:00:00.456Z').getTime());
- assert.equal(identifier.AccessPolicy.Permission, 'r');
+ assert.equal(identifier.AccessPolicy.Permissions, 'r');
entries += 1;
}
else if (identifier.Id === 'id2') {
@@ -586,7 +586,7 @@ describe('BlobContainer', function () {
assert.equal(identifier.AccessPolicy.Start.getMilliseconds(), 6);
assert.equal(identifier.AccessPolicy.Expiry.getTime(), new Date('2009-11-11T00:00:00.4Z').getTime());
assert.equal(identifier.AccessPolicy.Expiry.getMilliseconds(), 400);
- assert.equal(identifier.AccessPolicy.Permission, 'w');
+ assert.equal(identifier.AccessPolicy.Permissions, 'w');
entries += 2;
}
});
diff --git a/lib/common/models/aclresult.js b/lib/common/models/aclresult.js
index 105d164..5bea440 100644
--- a/lib/common/models/aclresult.js
+++ b/lib/common/models/aclresult.js
@@ -91,7 +91,7 @@ exports.serialize = function (signedIdentifiersJs) {
exports.parse = function (signedIdentifiersXml) {
var signedIdentifiers = [];
- signedIdentifiersXml = azureutil.tryGetValueChain(signedIdentifiersXml, [ 'SignedIdentifiers', 'SignedIdentifier' ]);
+ signedIdentifiersXml = azureutil.tryGetValueChain(signedIdentifiersXml, [ AclConstants.SIGNED_IDENTIFIERS_ELEMENT, AclConstants.SIGNED_IDENTIFIER_ELEMENT ]);
if (signedIdentifiersXml) {
if (!_.isArray(signedIdentifiersXml)) {
signedIdentifiersXml = [ signedIdentifiersXml ];
@@ -99,20 +99,22 @@ exports.parse = function (signedIdentifiersXml) {
signedIdentifiersXml.forEach(function (signedIdentifier) {
var si = {};
- si.Id = signedIdentifier.Id;
- if (signedIdentifier.AccessPolicy) {
+ var accessPolicy;
+ si.Id = signedIdentifier[AclConstants.ID];
+ accessPolicy = signedIdentifier[AclConstants.ACCESS_POLICY];
+ if (accessPolicy) {
si.AccessPolicy = {};
- if (signedIdentifier.AccessPolicy.Start) {
- si.AccessPolicy.Start = ISO8061Date.parse(signedIdentifier.AccessPolicy.Start);
+ if (accessPolicy[AclConstants.START]) {
+ si.AccessPolicy.Start = ISO8061Date.parse(accessPolicy[AclConstants.START]);
}
- if (signedIdentifier.AccessPolicy.Expiry) {
- si.AccessPolicy.Expiry = ISO8061Date.parse(signedIdentifier.AccessPolicy.Expiry);
+ if (accessPolicy[AclConstants.EXPIRY]) {
+ si.AccessPolicy.Expiry = ISO8061Date.parse(accessPolicy[AclConstants.EXPIRY]);
}
- if (signedIdentifier.AccessPolicy.Permission) {
- si.AccessPolicy.Permission = signedIdentifier.AccessPolicy.Permission;
+ if (accessPolicy[AclConstants.PERMISSION]) {
+ si.AccessPolicy.Permissions = accessPolicy[AclConstants.PERMISSION];
}
}