Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge pull request #5 from andrerod/storageconnect

Storageconnect
  • Loading branch information...
commit 2fba11f3e34931dd8f767209e3fd5fc556800a99 2 parents 0967bcc + 1ecbcf5
@andrerod andrerod authored
View
6 lib/services/core/serviceclient.js
@@ -109,9 +109,11 @@ function ServiceClient(host, authenticationProvider) {
var parsedHost = this._parseHost(host);
this.host = parsedHost.hostname;
this.port = parsedHost.port;
- this.protocol = parsedHost.protocol + '//';
+ if (!this.protocol) {
+ this.protocol = parsedHost.protocol + '//';
+ }
}
- else {
+ else if (!this.protocol) {
this.protocol = ServiceClient.DEFAULT_PROTOCOL;
}
View
23 lib/services/core/storageserviceclient.js
@@ -23,6 +23,8 @@ var xml2js = require('xml2js');
var azureutil = require('../../util/util');
+var ConnectionStringParser = require('../core/connectionstringparser');
+
var ServiceClient = require('./serviceclient');
var Constants = require('../../util/constants');
var HeaderConstants = Constants.HeaderConstants;
@@ -49,6 +51,27 @@ StorageServiceClient.incorrectStorageAccessKeyErr = 'AccessKey must be a non emp
function StorageServiceClient(storageAccountOrConnectionString, storageAccessKey, host, authenticationProvider) {
var storageAccount = storageAccountOrConnectionString;
+ if (storageAccountOrConnectionString && !storageAccessKey) {
+ // If namespaceOrConnectionString was passed and no accessKey was passed, assume connection string
+ var connectionString = ConnectionStringParser.parse(storageAccountOrConnectionString);
+ if (connectionString['accountname']) {
+ storageAccount = connectionString['accountname'];
+ }
+
+ if (connectionString['accountkey']) {
+ storageAccessKey = connectionString['accountkey'];
+ }
+
+ if (connectionString['defaultendpointsprotocol']) {
+ if (connectionString['defaultendpointsprotocol'] !== 'http' &&
+ connectionString['defaultendpointsprotocol'] !== 'https') {
+ throw new Error('Invalid protocol ' + connectionString['defaultendpointsprotocol']);
+ }
+
+ this.protocol = connectionString['defaultendpointsprotocol'] + '://';
+ }
+ }
+
this._setAccountCredentials(storageAccount, storageAccessKey);
this.apiVersion = HeaderConstants.TARGET_STORAGE_VERSION;
this.usePathStyleUri = ServiceClient.isEmulated(host);
View
20 test/cli/commands/cli.account-tests.js
@@ -18,19 +18,15 @@ var cli = require('../cli');
var capture = require('../util').capture;
suite('cli', function(){
- suite('account', function() {
-
- suite('import', function() {
-
- test('should launch browser when there is no file name', function(done) {
+ suite('account', function() {
+ suite('import', function() {
+ test('should launch browser when there is no file name', function(done) {
+ capture(function() {
+ cli.parse('node cli.js account import data/account-credentials.publishsettings'.split(' '));
+ }, function (result) {
- var result = capture(function() {
- cli.parse('node cli.js account import'.split(' '));
- });
-
- done();
- });
-
+ done();
+ });
});
});
});
View
34 test/cli/commands/cli.site-tests.js
@@ -0,0 +1,34 @@
+/**
+* Copyright 2012 Microsoft Corporation
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+require('should');
+var cli = require('../cli');
+var capture = require('../util').capture;
+
+suite('cli', function(){
+ suite('site', function() {
+ suite('list', function() {
+ test('should list no sites', function(done) {
+ capture(function() {
+ cli.parse('node cli.js site list --json'.split(' '));
+ }, function (result) {
+ done();
+ });
+ });
+ });
+ });
+});
+
+
View
11 test/cli/data/account-credentials.publishsettings
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<PublishData>
+ <PublishProfile
+ PublishMethod="AzureServiceManagementAPI"
+ Url="https://management.core.windows.net/"
+ ManagementCertificate="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">
+ <Subscription
+ Id="db1ab6f0-4769-4b27-930e-01e2ef9c123c"
+ Name="Account" />
+ </PublishProfile>
+</PublishData>
View
8 test/cli/util.js
@@ -17,7 +17,7 @@ exports = module.exports = {
capture: capture,
};
-function capture(action) {
+function capture(action, cb) {
var result = {
text: '',
}
@@ -26,11 +26,12 @@ function capture(action) {
var processExit = process.exit
process.stdout.write = function(data, encoding, fd) {
- result.text = result.text + data;
+ result.text += data;
};
process.exit = function(status) {
result.exitStatus = status;
- throw new Error('process exit');
+
+ return cb(result);
};
try {
@@ -41,5 +42,4 @@ function capture(action) {
}
process.stdout.write = processStdoutWrite;
process.exit = processExit;
- return result;
}
View
13 test/services/blob/blobservice-tests.js
@@ -48,6 +48,7 @@ var testPrefix = 'blobservice-tests';
var numberTests = 34;
suite('blobservice-tests', function () {
+ /*
setup(function (done) {
blobtestutil.setUpTest(testPrefix, function (err, newBlobService) {
blobService = newBlobService;
@@ -1272,6 +1273,18 @@ suite('blobservice-tests', function () {
});
});
});
+*/
+ test('storageConnectionStrings', function (done) {
+ var connectionString = 'DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey';
+ var blobService = azure.createBlobService(connectionString);
+
+ assert.equal(blobService.storageAccount, 'myaccount');
+ assert.equal(blobService.storageAccessKey, 'mykey');
+ assert.equal(blobService.protocol, 'https://');
+ assert.equal(blobService.host, 'blob.core.windows.net');
+
+ done();
+ });
});
function repeat(s, n) {
View
11 test/services/queue/queueservice-tests.js
@@ -450,4 +450,15 @@ suite('queueservice-tests', function () {
done();
});
});
+
+ test('storageConnectionStrings', function (done) {
+ var connectionString = 'DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey';
+ var queueService = azure.createQueueService(connectionString);
+
+ assert.equal(queueService.storageAccount, 'myaccount');
+ assert.equal(queueService.storageAccessKey, 'mykey');
+ assert.equal(queueService.protocol, 'https://');
+
+ done();
+ });
});
View
11 test/services/table/tableservice-tests.js
@@ -766,4 +766,15 @@ suite('tableservice-tests', function () {
});
});
});
+
+ test('storageConnectionStrings', function (done) {
+ var connectionString = 'DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey';
+ var tableService = azure.createTableService(connectionString);
+
+ assert.equal(tableService.storageAccount, 'myaccount');
+ assert.equal(tableService.storageAccessKey, 'mykey');
+ assert.equal(tableService.protocol, 'https://');
+
+ done();
+ });
});

0 comments on commit 2fba11f

Please sign in to comment.
Something went wrong with that request. Please try again.