Skip to content

Commit

Permalink
Add tests for china and validate ip address as well. (#517)
Browse files Browse the repository at this point in the history
  • Loading branch information
harshavardhana authored and Krishna Srinivas committed Oct 14, 2016
1 parent eacc4ad commit fce7f6a
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 15 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -7,3 +7,4 @@ logs
node_modules

/dist/
yarn.lock
23 changes: 14 additions & 9 deletions .travis.yml
@@ -1,6 +1,11 @@
sudo: false
language: node_js

cache:
directories:
- $HOME/.npm
- $HOME/.yarn-cache
- node_modules

os:
- linux

Expand All @@ -9,16 +14,16 @@ env:
- ARCH=i686

node_js:
- '0.10'
- '0.11'
- '0.12'
- '4.2.4'
- '6'
- '5'
- '4'

script:
- gulp browserify
- gulp lint
- npm test

notifications:
slack:
secure: cnwaQJv7JtcnBU+FOzXuX5LI2SW9zzQVBkxvKUXqGzMJwiKnrpRP9JZtWdDFcafE+QDhUMfzjM7SsAdyZuq+wRm1I/TNylxDvJibVRxbKDlJQgoHvJ9+OdfXwwAfv4uS13ko/jSiLGdOvByWljA85ASoDRBzlhpb/bfVfx2chFA6sZHMmvKBD/Kk2x7WqkHvbHdh6qvsuwnYZAQNHQkHRr/ZljIzuer1OQHrzqPg1sTSiqRXv0/CqZ2g0ILXlaWTu07EbPmGmr5Ua0ViPK3C6Rlgve4LVS3T+QJZp5FQHlZX/9dN1LK0OZRfyQ2rfV3HiRDtF0BPxuPhMLDYgy9UIX0wXo+45+i1dzNJoyN7VrOaBmgPdZyy4thmc6sR/aU5l7jQjEG2SYQDUwYJYIQmdZ7f2YXQNqQvWSW+e+/TYmiXg/q/wOWYtMpDDwtXB3xedAs1GZCKRKpSUQHiTbUKbD5vNLWEfpcHzmU4gJBMp5kcWmhzPLOx3JogfUioCKWMWe0dgt4koX8RN7oLUlHqROOQfCDAIb6Pbo+tvoYsIlihzGO0zPewDnwU3dxwjWnP7mT8+8uDHvn5WFS9rFtPp/UThyASZuKEj1llA2UPJJ0OVa2tC8qz5qfDnty7B5yY9bFQhjfnR+DHiIjyj4o3VkkzmRuDk4qWqiABTayuOqk=
before_install:
- npm i -g yarn

install:
- yarn
16 changes: 11 additions & 5 deletions src/main/helpers.js
Expand Up @@ -56,9 +56,9 @@ export function getScope(region, date) {
return `${date.format('YYYYMMDD')}/${region}/s3/aws4_request`
}

// isAmazonEndpoint - true if endpoint is 's3.amazonaws.com'.
// isAmazonEndpoint - true if endpoint is 's3.amazonaws.com' or 's3.cn-north-1.amazonaws.com.cn'
export function isAmazonEndpoint(endpoint) {
return endpoint === 's3.amazonaws.com'
return endpoint === 's3.amazonaws.com' || endpoint === 's3.cn-north-1.amazonaws.com.cn'
}

// isVirtualHostStyle - verify if bucket name is support with virtual
Expand All @@ -73,18 +73,24 @@ export function isVirtualHostStyle(endpoint, protocol, bucket) {
return isAmazonEndpoint(endpoint)
}

var ipv4Regex = /^(\d{1,3}\.){3,3}\d{1,3}$/;

export function isValidIP(ip) {
return ipv4Regex.test(ip)
}

// isValidEndpoint - true if endpoint is valid domain.
export function isValidEndpoint(endpoint) {
if (!isValidDomain(endpoint)) {
if (!isValidDomain(endpoint) && !isValidIP(endpoint)) {
return false
}
// Endpoint matches amazon, make sure its 's3.amazonaws.com'
if (endpoint.match('.amazonaws.com$')) {
if (endpoint.match('.amazonaws.com$') || endpoint.match('.amazonaws.com.cn$')) {
if (!isAmazonEndpoint(endpoint)) {
return false
}
}
// Returning true for all other cases.
// Return true.
return true
}

Expand Down
24 changes: 23 additions & 1 deletion src/test/unit/test.js
Expand Up @@ -23,11 +23,33 @@ import Nock from 'nock';
import Through2 from 'through2';
import Stream from 'stream';
import * as Minio from '../../../dist/main/minio';
import { isValidEndpoint, isValidIP } from '../../../dist/main/helpers';

import { parseBucketPolicy, generateBucketPolicy } from '../../../dist/main/bucket-policy'
import { parseBucketPolicy, generateBucketPolicy } from '../../../dist/main/bucket-policy';

var Package = require('../../../package.json')

describe('Helpers', () => {
it('should validate for s3 endpoint', () => {
assert.equal(isValidEndpoint('s3.amazonaws.com'), true)
})
it('should validate for s3 china', () => {
assert.equal(isValidEndpoint('s3.cn-north-1.amazonaws.com.cn'), true)
})
it('should fail for invalid endpoint', () => {
assert.equal(isValidEndpoint('s3-us-west-2.amazonaws.com'), false)
})
it('should fail for invalid endpoint characters', () => {
assert.equal(isValidEndpoint('111.#2.11'), false)
})
it('should validate for valid ip', () => {
assert.equal(isValidIP('1.1.1.1'), true)
})
it('should fail for invalid ip', () => {
assert.equal(isValidIP('1.1.1'), false)
})
})

describe('Client', function() {
var nockRequests = []
this.timeout(5000)
Expand Down

0 comments on commit fce7f6a

Please sign in to comment.