Skip to content

Commit ab06055

Browse files
drew-grossflovilmart
authored andcommitted
Postgres exclude failing tests (#2081)
* reload the right data More passing postgres tests Handle schema updates, and $in for non array columns remove authdata from user and implement ensureUniqueness Make some tests work, detect existing classes Throw proper error for unique index violation fix findOneAndUpdate Support more types support more type Support boolean, fix _rperm/_wperm, add TODO Support string types and also simplify tests Move operator flattening into Parse Server and out of mongo adapters Move authdata transform for create into Parse Server Move authdata transforms completely in to Parse Server Fix test setup inline addSchema Inject default schema to response from DB adapter * Mark tests that don't work in Postgres * Exclude one more test * Exclude some more failing tests * Exclude more tests
1 parent 7da4deb commit ab06055

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+811
-795
lines changed

.travis.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ env:
1818
- MONGODB_VERSION=3.2.6
1919
matrix:
2020
fast_finish: true,
21-
allow_failures:
22-
- env: PARSE_SERVER_TEST_DB=postgres
2321
branches:
2422
only:
2523
- master

spec/AdaptableController.spec.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ MockController.prototype = Object.create(AdaptableController.prototype);
1010
MockController.prototype.constructor = AdaptableController;
1111

1212
describe("AdaptableController", ()=>{
13-
1413
it("should use the provided adapter", (done) => {
1514
var adapter = new FilesAdapter();
1615
var controller = new FilesController(adapter);

spec/CLI.spec.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ var definitions = {
2424
}
2525

2626
describe("commander additions", () => {
27-
2827
afterEach((done) => {
2928
commander.options = [];
3029
delete commander.arg0;

spec/Client.spec.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ var Client = require('../src/LiveQuery/Client').Client;
22
var ParseWebSocket = require('../src/LiveQuery/ParseWebSocketServer').ParseWebSocket;
33

44
describe('Client', function() {
5-
65
it('can be initialized', function() {
76
var parseWebSocket = new ParseWebSocket({});
87
var client = new Client(1, parseWebSocket);

spec/CloudCodeLogger.spec.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ var LoggerController = require('../src/Controllers/LoggerController').LoggerCont
33
var FileLoggerAdapter = require('../src/Adapters/Logger/FileLoggerAdapter').FileLoggerAdapter;
44

55
describe("Cloud Code Logger", () => {
6-
76
it("should expose log to functions", (done) => {
87
var logController = new LoggerController(new FileLoggerAdapter());
98

spec/EventEmitterPubSub.spec.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
var EventEmitterPubSub = require('../src/LiveQuery/EventEmitterPubSub').EventEmitterPubSub;
22

33
describe('EventEmitterPubSub', function() {
4-
54
it('can publish and subscribe', function() {
65
var publisher = EventEmitterPubSub.createPublisher();
76
var subscriber = EventEmitterPubSub.createSubscriber();

spec/FileLoggerAdapter.spec.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ var Parse = require('parse/node').Parse;
55
var request = require('request');
66

77
describe('info logs', () => {
8-
98
it("Verify INFO logs", (done) => {
109
var fileLoggerAdapter = new FileLoggerAdapter();
1110
fileLoggerAdapter.info('testing info logs', () => {
@@ -27,7 +26,6 @@ describe('info logs', () => {
2726
});
2827

2928
describe('error logs', () => {
30-
3129
it("Verify ERROR logs", (done) => {
3230
var fileLoggerAdapter = new FileLoggerAdapter();
3331
fileLoggerAdapter.error('testing error logs', () => {
@@ -50,7 +48,6 @@ describe('error logs', () => {
5048
});
5149

5250
describe('verbose logs', () => {
53-
5451
it("mask sensitive information in _User class", (done) => {
5552
reconfigureServer({ verbose: true })
5653
.then(() => createTestUser())

spec/HTTPRequest.spec.js

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ app.listen(13371);
3636

3737

3838
describe("httpRequest", () => {
39-
4039
it("should do /hello", (done) => {
4140
httpRequest({
4241
url: httpRequestServer+"/hello"
@@ -51,7 +50,7 @@ describe("httpRequest", () => {
5150
done();
5251
})
5352
});
54-
53+
5554
it("should do /hello with callback and promises", (done) => {
5655
var calls = 0;
5756
httpRequest({
@@ -70,7 +69,7 @@ describe("httpRequest", () => {
7069
done();
7170
})
7271
});
73-
72+
7473
it("should do not follow redirects by default", (done) => {
7574

7675
httpRequest({
@@ -83,7 +82,7 @@ describe("httpRequest", () => {
8382
done();
8483
})
8584
});
86-
85+
8786
it("should follow redirects when set", (done) => {
8887

8988
httpRequest({
@@ -100,17 +99,17 @@ describe("httpRequest", () => {
10099
done();
101100
})
102101
});
103-
102+
104103
it("should fail on 404", (done) => {
105104
var calls = 0;
106105
httpRequest({
107106
url: httpRequestServer+"/404",
108-
success: function() {
107+
success: function() {
109108
calls++;
110109
fail("should not succeed");
111110
done();
112111
},
113-
error: function(httpResponse) {
112+
error: function(httpResponse) {
114113
calls++;
115114
expect(calls).toBe(1);
116115
expect(httpResponse.status).toBe(404);
@@ -121,7 +120,7 @@ describe("httpRequest", () => {
121120
}
122121
});
123122
})
124-
123+
125124
it("should fail on 404", (done) => {
126125
httpRequest({
127126
url: httpRequestServer+"/404",
@@ -136,7 +135,7 @@ describe("httpRequest", () => {
136135
done();
137136
})
138137
})
139-
138+
140139
it("should post on echo", (done) => {
141140
var calls = 0;
142141
httpRequest({
@@ -160,27 +159,27 @@ describe("httpRequest", () => {
160159
done();
161160
})
162161
});
163-
162+
164163
it("should encode a query string body by default", (done) => {
165164
let options = {
166-
body: {"foo": "bar"},
165+
body: {"foo": "bar"},
167166
}
168167
let result = httpRequest.encodeBody(options);
169168
expect(result.body).toEqual('foo=bar');
170169
expect(result.headers['Content-Type']).toEqual('application/x-www-form-urlencoded');
171170
done();
172-
171+
173172
})
174-
173+
175174
it("should encode a JSON body", (done) => {
176175
let options = {
177-
body: {"foo": "bar"},
176+
body: {"foo": "bar"},
178177
headers: {'Content-Type': 'application/json'}
179178
}
180179
let result = httpRequest.encodeBody(options);
181180
expect(result.body).toEqual('{"foo":"bar"}');
182181
done();
183-
182+
184183
})
185184
it("should encode a www-form body", (done) => {
186185
let options = {
@@ -193,7 +192,7 @@ describe("httpRequest", () => {
193192
});
194193
it("should not encode a wrong content type", (done) => {
195194
let options = {
196-
body:{"foo": "bar", "bar": "baz"},
195+
body:{"foo": "bar", "bar": "baz"},
197196
headers: {'cOntent-tYpe': 'mime/jpeg'}
198197
}
199198
let result = httpRequest.encodeBody(options);
@@ -204,18 +203,18 @@ describe("httpRequest", () => {
204203
it("should fail gracefully", (done) => {
205204
httpRequest({
206205
url: "http://not a good url",
207-
success: function() {
206+
success: function() {
208207
fail("should not succeed");
209208
done();
210209
},
211-
error: function(error) {
210+
error: function(error) {
212211
expect(error).not.toBeUndefined();
213212
expect(error).not.toBeNull();
214213
done();
215214
}
216215
});
217216
});
218-
217+
219218
it("should params object to query string", (done) => {
220219
httpRequest({
221220
url: httpRequestServer+"/qs",

spec/InstallationsRouter.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ describe('InstallationsRouter', () => {
103103
});
104104
});
105105

106-
it('query installations with count = 1', (done) => {
106+
it_exclude_dbs(['postgres'])('query installations with count = 1', (done) => {
107107
var androidDeviceRequest = {
108108
'installationId': '12345678-abcd-abcd-abcd-123456789abc',
109109
'deviceType': 'android'
@@ -133,7 +133,7 @@ describe('InstallationsRouter', () => {
133133
});
134134
});
135135

136-
it('query installations with limit = 0 and count = 1', (done) => {
136+
it_exclude_dbs(['postgres'])('query installations with limit = 0 and count = 1', (done) => {
137137
var androidDeviceRequest = {
138138
'installationId': '12345678-abcd-abcd-abcd-123456789abc',
139139
'deviceType': 'android'

spec/MongoTransform.spec.js

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ let dd = require('deep-diff');
66
let mongodb = require('mongodb');
77

88
describe('parseObjectToMongoObjectForCreate', () => {
9-
109
it('a basic number', (done) => {
1110
var input = {five: 5};
1211
var output = transform.parseObjectToMongoObjectForCreate(null, input, {
@@ -51,7 +50,7 @@ describe('parseObjectToMongoObjectForCreate', () => {
5150

5251
//TODO: object creation requests shouldn't be seeing __op delete, it makes no sense to
5352
//have __op delete in a new object. Figure out what this should actually be testing.
54-
notWorking('a delete op', (done) => {
53+
xit('a delete op', (done) => {
5554
var input = {deleteMe: {__op: 'Delete'}};
5655
var output = transform.parseObjectToMongoObjectForCreate(null, input, { fields: {} });
5756
jequal(output, {});
@@ -64,37 +63,33 @@ describe('parseObjectToMongoObjectForCreate', () => {
6463
done();
6564
});
6665

67-
describe('GeoPoints', () => {
68-
it('plain', (done) => {
69-
var geoPoint = {__type: 'GeoPoint', longitude: 180, latitude: -180};
70-
var out = transform.parseObjectToMongoObjectForCreate(null, {location: geoPoint},{
71-
fields: {location: {type: 'GeoPoint'}}
72-
});
73-
expect(out.location).toEqual([180, -180]);
74-
done();
66+
it('plain', (done) => {
67+
var geoPoint = {__type: 'GeoPoint', longitude: 180, latitude: -180};
68+
var out = transform.parseObjectToMongoObjectForCreate(null, {location: geoPoint},{
69+
fields: {location: {type: 'GeoPoint'}}
7570
});
71+
expect(out.location).toEqual([180, -180]);
72+
done();
73+
});
7674

77-
it('in array', (done) => {
78-
var geoPoint = {__type: 'GeoPoint', longitude: 180, latitude: -180};
79-
var out = transform.parseObjectToMongoObjectForCreate(null, {locations: [geoPoint, geoPoint]},{
80-
fields: {locations: {type: 'Array'}}
81-
});
82-
expect(out.locations).toEqual([geoPoint, geoPoint]);
83-
done();
75+
it('in array', (done) => {
76+
var geoPoint = {__type: 'GeoPoint', longitude: 180, latitude: -180};
77+
var out = transform.parseObjectToMongoObjectForCreate(null, {locations: [geoPoint, geoPoint]},{
78+
fields: {locations: {type: 'Array'}}
8479
});
80+
expect(out.locations).toEqual([geoPoint, geoPoint]);
81+
done();
82+
});
8583

86-
it('in sub-object', (done) => {
87-
var geoPoint = {__type: 'GeoPoint', longitude: 180, latitude: -180};
88-
var out = transform.parseObjectToMongoObjectForCreate(null, { locations: { start: geoPoint }},{
89-
fields: {locations: {type: 'Object'}}
90-
});
91-
expect(out).toEqual({ locations: { start: geoPoint } });
92-
done();
84+
it('in sub-object', (done) => {
85+
var geoPoint = {__type: 'GeoPoint', longitude: 180, latitude: -180};
86+
var out = transform.parseObjectToMongoObjectForCreate(null, { locations: { start: geoPoint }},{
87+
fields: {locations: {type: 'Object'}}
9388
});
89+
expect(out).toEqual({ locations: { start: geoPoint } });
90+
done();
9491
});
95-
});
9692

97-
describe('transformWhere', () => {
9893
it('objectId', (done) => {
9994
var out = transform.transformWhere(null, {objectId: 'foo'});
10095
expect(out._id).toEqual('foo');
@@ -109,9 +104,7 @@ describe('transformWhere', () => {
109104
jequal(input.objectId, output._id);
110105
done();
111106
});
112-
});
113107

114-
describe('mongoObjectToParseObject', () => {
115108
it('built-in timestamps', (done) => {
116109
var input = {createdAt: new Date(), updatedAt: new Date()};
117110
var output = transform.mongoObjectToParseObject(null, input, { fields: {} });
@@ -191,9 +184,6 @@ describe('mongoObjectToParseObject', () => {
191184
expect(dd(output, input)).toEqual(undefined);
192185
done();
193186
});
194-
});
195-
196-
describe('transform schema key changes', () => {
197187

198188
it('changes new pointer key', (done) => {
199189
var input = {

spec/OAuth.spec.js

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ var Config = require("../src/Config");
44
var defaultColumns = require('../src/Controllers/SchemaController').defaultColumns;
55

66
describe('OAuth', function() {
7-
87
it("Nonce should have right length", (done) => {
98
jequal(OAuth.nonce().length, 30);
109
done();
@@ -218,29 +217,27 @@ describe('OAuth', function() {
218217
return request.post(options, callback);
219218
}
220219

221-
it("should create user with REST API", (done) => {
222-
220+
it_exclude_dbs(['postgres'])("should create user with REST API", done => {
223221
createOAuthUser((error, response, body) => {
224-
expect(error).toBe(null);
225-
var b = JSON.parse(body);
226-
ok(b.sessionToken);
227-
expect(b.objectId).not.toBeNull();
228-
expect(b.objectId).not.toBeUndefined();
229-
var sessionToken = b.sessionToken;
230-
var q = new Parse.Query("_Session");
231-
q.equalTo('sessionToken', sessionToken);
232-
q.first({useMasterKey: true}).then((res) => {
233-
expect(res.get("installationId")).toEqual('yolo');
234-
done();
235-
}).fail((err) => {
236-
fail('should not fail fetching the session');
237-
done();
238-
})
239-
});
240-
222+
expect(error).toBe(null);
223+
var b = JSON.parse(body);
224+
ok(b.sessionToken);
225+
expect(b.objectId).not.toBeNull();
226+
expect(b.objectId).not.toBeUndefined();
227+
var sessionToken = b.sessionToken;
228+
var q = new Parse.Query("_Session");
229+
q.equalTo('sessionToken', sessionToken);
230+
q.first({useMasterKey: true}).then((res) => {
231+
expect(res.get("installationId")).toEqual('yolo');
232+
done();
233+
}).fail((err) => {
234+
fail('should not fail fetching the session');
235+
done();
236+
})
237+
});
241238
});
242239

243-
it("should only create a single user with REST API", (done) => {
240+
it_exclude_dbs(['postgres'])("should only create a single user with REST API", (done) => {
244241
var objectId;
245242
createOAuthUser((error, response, body) => {
246243
expect(error).toBe(null);
@@ -260,7 +257,7 @@ describe('OAuth', function() {
260257
});
261258
});
262259

263-
it("unlink and link with custom provider", (done) => {
260+
it_exclude_dbs(['postgres'])("unlink and link with custom provider", (done) => {
264261
var provider = getMockMyOauthProvider();
265262
Parse.User._registerAuthenticationProvider(provider);
266263
Parse.User._logInWith("myoauth", {

0 commit comments

Comments
 (0)