Skip to content

Commit f497db2

Browse files
Merge pull request #313 from opencomponents/add-env-as-private
[IMPROVEMENT] Add .env as a private file for storage
2 parents ebd670b + 3cde35d commit f497db2

File tree

10 files changed

+52
-10
lines changed

10 files changed

+52
-10
lines changed

.eslintrc.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"parser": "@typescript-eslint/parser",
33
"env": {
44
"es6": true,
5-
"node": true
5+
"node": true,
6+
"jest": true
67
},
78
"extends": [
89
"eslint:recommended",

packages/oc-azure-storage-adapter/__mocks__/azure-storage.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@ jest.mock('node-dir', () => {
2626
files: [
2727
`${pathToDir}\\package.json`,
2828
`${pathToDir}\\server.js`,
29+
`${pathToDir}\\.env`,
2930
`${pathToDir}\\template.js`,
3031
`${pathToDir}/package.json`,
3132
`${pathToDir}/server.js`,
33+
`${pathToDir}/.env`,
3234
`${pathToDir}/template.js`
3335
]
3436
});

packages/oc-azure-storage-adapter/__test__/privateFilesExclusion.test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jest.mock('async', () => {
1616
};
1717
});
1818

19-
test('put directory recognizes server.js to be private', done => {
19+
test('put directory recognizes server.js and .env to be private', done => {
2020
const client = new adapter({
2121
publicContainerName: 'pubcon',
2222
privateContainerName: 'privcon'
@@ -28,6 +28,7 @@ test('put directory recognizes server.js to be private', done => {
2828
expect(mockResult[`.${separator}server.js`].res.container).toBe(
2929
'privcon'
3030
);
31+
expect(mockResult[`.${separator}.env`].res.container).toBe('privcon');
3132
expect(mockResult[`.${separator}package.json`].res.container).toBe(
3233
'pubcon'
3334
);

packages/oc-azure-storage-adapter/index.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,15 @@ module.exports = function (conf) {
198198
const relativeFile = file.substr(dirInput.length),
199199
url = (dirOutput + relativeFile).replace(/\\/g, '/');
200200

201-
const serverJsNames = ['/server.js', '\\server.js'];
202-
putFile(file, url, serverJsNames.includes(relativeFile), cb);
201+
const serverPattern = /(\\|\/)server\.js/;
202+
const dotFilePattern = /(\\|\/)\..+/;
203+
const privateFilePatterns = [serverPattern, dotFilePattern];
204+
putFile(
205+
file,
206+
url,
207+
privateFilePatterns.some(r => r.test(relativeFile)),
208+
cb
209+
);
203210
},
204211
callback
205212
);

packages/oc-gs-storage-adapter/__mocks__/@google-cloud/storage.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ jest.mock('node-dir', () => {
1313
files: [
1414
`${pathToDir}${sep}package.json`,
1515
`${pathToDir}${sep}server.js`,
16+
`${pathToDir}${sep}.env`,
1617
`${pathToDir}${sep}template.js`
1718
]
1819
});
@@ -39,9 +40,15 @@ const _Storage = class {
3940
{
4041
name: 'components/image/1.0.0/server.js'
4142
},
43+
{
44+
name: 'components/image/1.0.0/.env'
45+
},
4246
{
4347
name: 'components/image/1.0.1/new-server.js'
4448
},
49+
{
50+
name: 'components/image/1.0.1/new-.env'
51+
},
4552
{
4653
name: 'components/image/1.0.1/new-app.js'
4754
}

packages/oc-gs-storage-adapter/__test__/privateFilesExclusion.test.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ jest.mock('node-dir', () => {
77
files: [
88
`${pathToDir}\\package.json`,
99
`${pathToDir}\\server.js`,
10+
`${pathToDir}\\.env`,
1011
`${pathToDir}\\template.js`,
1112
`${pathToDir}/package.json`,
1213
`${pathToDir}/server.js`,
14+
`${pathToDir}/.env`,
1315
`${pathToDir}/template.js`
1416
]
1517
});
@@ -33,7 +35,7 @@ jest.mock('async', () => {
3335
};
3436
});
3537

36-
test('put directory recognizes server.js to be private', done => {
38+
test('put directory recognizes server.js and .env to be private', done => {
3739
const options = {
3840
bucket: 'test',
3941
projectId: '12345',
@@ -47,6 +49,9 @@ test('put directory recognizes server.js to be private', done => {
4749
expect(mockResult[`.${separator}server.js`].res.ACL).toBe(
4850
'authenticated-read'
4951
);
52+
expect(mockResult[`.${separator}.env`].res.ACL).toBe(
53+
'authenticated-read'
54+
);
5055
expect(mockResult[`.${separator}package.json`].res.ACL).toBe(
5156
'public-read'
5257
);

packages/oc-gs-storage-adapter/index.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,15 @@ module.exports = function (conf) {
156156
(file, cb) => {
157157
const relativeFile = file.substr(dirInput.length);
158158
const url = (dirOutput + relativeFile).replace(/\\/g, '/');
159-
const serverJsNames = ['/server.js', '\\server.js'];
160-
putFile(file, url, serverJsNames.includes(relativeFile), cb);
159+
const serverPattern = /(\\|\/)server\.js/;
160+
const dotFilePattern = /(\\|\/)\..+/;
161+
const privateFilePatterns = [serverPattern, dotFilePattern];
162+
putFile(
163+
file,
164+
url,
165+
privateFilePatterns.some(r => r.test(relativeFile)),
166+
cb
167+
);
161168
},
162169
callback
163170
);

packages/oc-s3-storage-adapter/__mocks__/aws-sdk.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@ jest.mock('node-dir', () => {
1515
files: [
1616
`${pathToDir}\\package.json`,
1717
`${pathToDir}\\server.js`,
18+
`${pathToDir}\\.env`,
1819
`${pathToDir}\\template.js`,
1920
`${pathToDir}/package.json`,
2021
`${pathToDir}/server.js`,
22+
`${pathToDir}/.env`,
2123
`${pathToDir}/template.js`
2224
]
2325
});

packages/oc-s3-storage-adapter/__test__/privateFilesExclusion.test.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jest.mock('async', () => {
1616
};
1717
});
1818

19-
test('put directory recognizes server.js to be private', done => {
19+
test('put directory recognizes server.js and .env to be private', done => {
2020
const options = {
2121
bucket: 'test',
2222
region: 'region-test',
@@ -29,6 +29,9 @@ test('put directory recognizes server.js to be private', done => {
2929
client.putDir('.', '.', (_, mockResult) => {
3030
const separators = ['\\', '/'];
3131
for (let separator of separators) {
32+
expect(mockResult[`.${separator}.env`].res.ACL).toBe(
33+
'authenticated-read'
34+
);
3235
expect(mockResult[`.${separator}server.js`].res.ACL).toBe(
3336
'authenticated-read'
3437
);

packages/oc-s3-storage-adapter/index.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,15 @@ module.exports = function (conf) {
196196
const relativeFile = file.substr(dirInput.length),
197197
url = (dirOutput + relativeFile).replace(/\\/g, '/');
198198

199-
const serverJsNames = ['/server.js', '\\server.js'];
200-
putFile(file, url, serverJsNames.includes(relativeFile), cb);
199+
const serverPattern = /(\\|\/)server\.js/;
200+
const dotFilePattern = /(\\|\/)\..+/;
201+
const privateFilePatterns = [serverPattern, dotFilePattern];
202+
putFile(
203+
file,
204+
url,
205+
privateFilePatterns.some(r => r.test(relativeFile)),
206+
cb
207+
);
201208
},
202209
callback
203210
);

0 commit comments

Comments
 (0)