Skip to content

Commit

Permalink
Adds s3 virtual host-style tests
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisradek committed May 31, 2018
1 parent 83094bb commit a7f0422
Show file tree
Hide file tree
Showing 2 changed files with 202 additions and 0 deletions.
158 changes: 158 additions & 0 deletions test/s3/virtual-host.fixture.js
@@ -0,0 +1,158 @@
var testCases = [
{
'Bucket': 'bucket-name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://bucket-name.s3.amazonaws.com',
'Region': 'us-east-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': 'bucket-name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://bucket-name.s3.us-west-1.amazonaws.com',
'Region': 'us-west-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': 'bucket-with-number-1',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://bucket-with-number-1.s3.us-west-1.amazonaws.com',
'Region': 'us-west-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': 'bucket-name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://bucket-name.s3.cn-north-1.amazonaws.com.cn',
'Region': 'cn-north-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': 'BucketName',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://s3.amazonaws.com/BucketName',
'Region': 'us-east-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': 'bucket_name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://s3.us-west-1.amazonaws.com/bucket_name',
'Region': 'us-west-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': 'bucket.name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://s3.us-west-1.amazonaws.com/bucket.name',
'Region': 'us-west-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': '-bucket-name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://s3.us-west-1.amazonaws.com/-bucket-name',
'Region': 'us-west-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': 'bucket-name-',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://s3.us-west-1.amazonaws.com/bucket-name-',
'Region': 'us-west-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': 'aa',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://s3.us-west-1.amazonaws.com/aa',
'Region': 'us-west-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://s3.us-west-1.amazonaws.com/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
'Region': 'us-west-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': 'bucket-name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://bucket-name.s3-accelerate.amazonaws.com',
'Region': 'us-east-1',
'UseDualstack': false,
'UseS3Accelerate': true
},
{
'Bucket': 'bucket-name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://bucket-name.s3-accelerate.amazonaws.com',
'Region': 'us-west-1',
'UseDualstack': false,
'UseS3Accelerate': true
},
{
'Bucket': 'bucket-name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://bucket-name.s3.dualstack.us-east-1.amazonaws.com',
'Region': 'us-east-1',
'UseDualstack': true,
'UseS3Accelerate': false
},
{
'Bucket': 'bucket-name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://bucket-name.s3.dualstack.us-west-2.amazonaws.com',
'Region': 'us-west-2',
'UseDualstack': true,
'UseS3Accelerate': false
},
{
'Bucket': 'bucket.name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://s3.dualstack.us-west-2.amazonaws.com/bucket.name',
'Region': 'us-west-2',
'UseDualstack': true,
'UseS3Accelerate': false
},
{
'Bucket': 'bucket-name',
'ConfiguredAddressingStyle': 'default',
'ExpectedUri': 'https://bucket-name.s3-accelerate.dualstack.amazonaws.com',
'Region': 'us-east-1',
'UseDualstack': true,
'UseS3Accelerate': true
},
{
'Bucket': 'bucket-name',
'ConfiguredAddressingStyle': 'path',
'ExpectedUri': 'https://s3.amazonaws.com/bucket-name',
'Region': 'us-east-1',
'UseDualstack': false,
'UseS3Accelerate': false
},
{
'Bucket': 'bucket-name',
'ConfiguredAddressingStyle': 'path',
'ExpectedUri': 'https://s3.dualstack.us-east-1.amazonaws.com/bucket-name',
'Region': 'us-east-1',
'UseDualstack': true,
'UseS3Accelerate': false
}
];

module.exports = {
testCases: testCases
};
44 changes: 44 additions & 0 deletions test/s3/virtual-host.spec.js
@@ -0,0 +1,44 @@
var testCases = require('./virtual-host.fixture').testCases;
var S3 = require('../../clients/s3');

function getConfiguration(testCase) {
var configuration = {
region: testCase.Region,
useDualstack: testCase.UseDualstack,
useAccelerateEndpoint: testCase.UseS3Accelerate,
s3ForcePathStyle: testCase.ConfiguredAddressingStyle === 'path'
};

return configuration;
}

function generateUri(httpRequest) {
var endpoint = httpRequest.endpoint;
var generatedEndpoint = endpoint.protocol + '//' + endpoint.hostname;
if (httpRequest.path !== '/') {
generatedEndpoint += httpRequest.path;
}
return generatedEndpoint;
}

describe('S3 Virtual Hosted-Style Addressing', function() {
for (var i = 0; i < testCases.length; i++) {
var testCase = testCases[i];

(function(index, testCase) {
it('test ' + (index + 1) + ' generates endpoint ' + testCase.ExpectedUri, function() {
var config = getConfiguration(testCase);
var s3 = new S3(config);
var bucket = testCase.Bucket;
var request = s3.listObjects({Bucket: bucket});

request.emit('build');
var httpRequest = request.httpRequest;
var generatedEndpoint = generateUri(httpRequest);
expect(generatedEndpoint).to.equal(testCase.ExpectedUri);
});
})(i, testCase);
}
});


0 comments on commit a7f0422

Please sign in to comment.