Skip to content

Commit f4ad4c1

Browse files
committed
Merge pull request #1172 from ParsePlatform/flovilmart.externalAdapters
Moves Files adapters to external packages
2 parents 82ebba4 + 83f5207 commit f4ad4c1

12 files changed

+46
-538
lines changed

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
"license": "BSD-3-Clause",
2020
"dependencies": {
2121
"apn": "^1.7.5",
22-
"aws-sdk": "~2.2.33",
2322
"babel-polyfill": "^6.5.0",
2423
"babel-runtime": "^6.5.0",
2524
"bcrypt-nodejs": "0.0.3",
@@ -28,14 +27,16 @@
2827
"commander": "^2.9.0",
2928
"deepcopy": "^0.6.1",
3029
"express": "^4.13.4",
31-
"gcloud": "^0.28.0",
3230
"lru-cache": "^4.0.0",
3331
"mailgun-js": "^0.7.7",
3432
"mime": "^1.3.4",
3533
"mongodb": "~2.1.0",
3634
"multer": "^1.1.0",
3735
"node-gcm": "^0.14.0",
3836
"parse": "^1.8.0",
37+
"parse-server-fs-adapter": "^1.0.0",
38+
"parse-server-gcs-adapter": "^1.0.0",
39+
"parse-server-s3-adapter": "^1.0.0",
3940
"redis": "^2.5.0-1",
4041
"request": "^2.65.0",
4142
"tv4": "^1.2.7",

spec/AdapterLoader.spec.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11

22
var loadAdapter = require("../src/Adapters/AdapterLoader").loadAdapter;
3-
var FilesAdapter = require("../src/Adapters/Files/FilesAdapter").default;
3+
var FilesAdapter = require("parse-server-fs-adapter").default;
4+
var S3Adapter = require("parse-server-s3-adapter").default;
5+
var GCSAdapter = require("parse-server-gcs-adapter").default;
46
var ParsePushAdapter = require("../src/Adapters/Push/ParsePushAdapter");
5-
var S3Adapter = require("../src/Adapters/Files/S3Adapter").default;
6-
var GCSAdapter = require("../src/Adapters/Files/GCSAdapter").default;
77

88
describe("AdapterLoader", ()=>{
99

@@ -38,7 +38,11 @@ describe("AdapterLoader", ()=>{
3838
adapter: adapterPath
3939
});
4040

41-
expect(adapter instanceof FilesAdapter).toBe(true);
41+
expect(typeof adapter).toBe('object');
42+
expect(typeof adapter.createFile).toBe('function');
43+
expect(typeof adapter.deleteFile).toBe('function');
44+
expect(typeof adapter.getFileData).toBe('function');
45+
expect(typeof adapter.getFileLocation).toBe('function');
4246
done();
4347
});
4448

spec/FilesController.spec.js

Lines changed: 19 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,30 @@
1-
var FilesController = require('../src/Controllers/FilesController').FilesController;
21
var GridStoreAdapter = require("../src/Adapters/Files/GridStoreAdapter").GridStoreAdapter;
3-
var S3Adapter = require("../src/Adapters/Files/S3Adapter").S3Adapter;
4-
var GCSAdapter = require("../src/Adapters/Files/GCSAdapter").GCSAdapter;
5-
var FileSystemAdapter = require("../src/Adapters/Files/FileSystemAdapter").FileSystemAdapter;
62
var Config = require("../src/Config");
7-
8-
var FCTestFactory = require("./FilesControllerTestFactory");
3+
var FilesController = require('../src/Controllers/FilesController').default;
94

105

116
// Small additional tests to improve overall coverage
12-
describe("FilesController",()=>{
13-
14-
// Test the grid store adapter
15-
var gridStoreAdapter = new GridStoreAdapter('mongodb://localhost:27017/parse');
16-
FCTestFactory.testAdapter("GridStoreAdapter", gridStoreAdapter);
17-
18-
if (process.env.S3_ACCESS_KEY && process.env.S3_SECRET_KEY) {
19-
20-
// Test the S3 Adapter
21-
var s3Adapter = new S3Adapter(process.env.S3_ACCESS_KEY, process.env.S3_SECRET_KEY, 'parse.server.tests');
22-
23-
FCTestFactory.testAdapter("S3Adapter",s3Adapter);
24-
25-
// Test S3 with direct access
26-
var s3DirectAccessAdapter = new S3Adapter(process.env.S3_ACCESS_KEY, process.env.S3_SECRET_KEY, 'parse.server.tests', {
27-
directAccess: true
28-
});
29-
30-
FCTestFactory.testAdapter("S3AdapterDirect", s3DirectAccessAdapter);
31-
32-
} else if (!process.env.TRAVIS) {
33-
console.log("set S3_ACCESS_KEY and S3_SECRET_KEY to test S3Adapter")
34-
}
35-
36-
if (process.env.GCP_PROJECT_ID && process.env.GCP_KEYFILE_PATH && process.env.GCS_BUCKET) {
37-
38-
// Test the GCS Adapter
39-
var gcsAdapter = new GCSAdapter(process.env.GCP_PROJECT_ID, process.env.GCP_KEYFILE_PATH, process.env.GCS_BUCKET);
40-
41-
FCTestFactory.testAdapter("GCSAdapter", gcsAdapter);
7+
describe("FilesController",() =>{
8+
it("should properly expand objects", (done) => {
429

43-
// Test GCS with direct access
44-
var gcsDirectAccessAdapter = new GCSAdapter(process.env.GCP_PROJECT_ID, process.env.GCP_KEYFILE_PATH, process.env.GCS_BUCKET, {
45-
directAccess: true
46-
});
10+
var config = new Config(Parse.applicationId);
11+
var gridStoreAdapter = new GridStoreAdapter('mongodb://localhost:27017/parse');
12+
var filesController = new FilesController(gridStoreAdapter)
13+
var result = filesController.expandFilesInObject(config, function(){});
4714

48-
FCTestFactory.testAdapter("GCSAdapterDirect", gcsDirectAccessAdapter);
15+
expect(result).toBeUndefined();
4916

50-
} else if (!process.env.TRAVIS) {
51-
console.log("set GCP_PROJECT_ID, GCP_KEYFILE_PATH, and GCS_BUCKET to test GCSAdapter")
52-
}
17+
var fullFile = {
18+
type: '__type',
19+
url: "http://an.url"
20+
}
5321

54-
try {
55-
// Test the file system adapter
56-
var fsAdapter = new FileSystemAdapter({
57-
filesSubDirectory: 'sub1/sub2'
58-
});
22+
var anObject = {
23+
aFile: fullFile
24+
}
25+
filesController.expandFilesInObject(config, anObject);
26+
expect(anObject.aFile.url).toEqual("http://an.url");
5927

60-
FCTestFactory.testAdapter("FileSystemAdapter", fsAdapter);
61-
} catch (e) {
62-
console.log("Give write access to the file system to test the FileSystemAdapter. Error: " + e);
63-
}
28+
done();
29+
})
6430
});

spec/FilesControllerTestFactory.js

Lines changed: 0 additions & 72 deletions
This file was deleted.

src/Adapters/Files/FileSystemAdapter.js

Lines changed: 0 additions & 120 deletions
This file was deleted.

src/Adapters/Files/FilesAdapter.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,20 @@
1313

1414
export class FilesAdapter {
1515
/* this method is responsible to store the file in order to be retrived later by it's file name
16-
*
17-
*
18-
* @param config the current config
16+
*
1917
* @param filename the filename to save
2018
* @param data the buffer of data from the file
2119
* @param contentType the supposed contentType
22-
* @discussion the contentType can be undefined if the controller was not able to determine it
23-
*
20+
* @discussion the contentType can be undefined if the controller was not able to determine it
21+
*
2422
* @return a promise that should fail if the storage didn't succeed
25-
*
23+
*
2624
*/
27-
createFile(config, filename: string, data, contentType: string) { }
25+
createFile(filename: string, data, contentType: string) { }
2826

29-
deleteFile(config, filename) { }
27+
deleteFile(filename) { }
3028

31-
getFileData(config, filename) { }
29+
getFileData(filename) { }
3230

3331
getFileLocation(config, filename) { }
3432
}

0 commit comments

Comments
 (0)