GraphQL: Optimize queries, fixes some null returns (on object), fix stitched GraphQLUpload (#6709)
* Optimize query, fixes some null returns, fix stitched GraphQLUpload * Fix authData key selection * Prefer Iso string since other GraphQL solutions use this format * fix tests Co-authored-by: Antonio Davi Macedo Coelho de Castro <adavimacedo@gmail.com>
This commit is contained in:
@@ -25,7 +25,8 @@ describe_only_db('mongo')('Idempotency', () => {
|
||||
config,
|
||||
auth.master(config),
|
||||
'_Idempotency',
|
||||
res.results[0].objectId);
|
||||
res.results[0].objectId
|
||||
);
|
||||
}
|
||||
async function setup(options) {
|
||||
await reconfigureServer({
|
||||
@@ -37,14 +38,16 @@ describe_only_db('mongo')('Idempotency', () => {
|
||||
}
|
||||
// Setups
|
||||
beforeEach(async () => {
|
||||
if (SIMULATE_TTL) { jasmine.DEFAULT_TIMEOUT_INTERVAL = 200000; }
|
||||
if (SIMULATE_TTL) {
|
||||
jasmine.DEFAULT_TIMEOUT_INTERVAL = 200000;
|
||||
}
|
||||
await setup({
|
||||
paths: [
|
||||
"functions/.*",
|
||||
"jobs/.*",
|
||||
"classes/.*",
|
||||
"users",
|
||||
"installations"
|
||||
'functions/.*',
|
||||
'jobs/.*',
|
||||
'classes/.*',
|
||||
'users',
|
||||
'installations',
|
||||
],
|
||||
ttl: 30,
|
||||
});
|
||||
@@ -61,14 +64,14 @@ describe_only_db('mongo')('Idempotency', () => {
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-Master-Key': Parse.masterKey,
|
||||
'X-Parse-Request-Id': 'abc-123'
|
||||
}
|
||||
'X-Parse-Request-Id': 'abc-123',
|
||||
},
|
||||
};
|
||||
expect(Config.get(Parse.applicationId).idempotencyOptions.ttl).toBe(30);
|
||||
await request(params);
|
||||
await request(params).then(fail, e => {
|
||||
expect(e.status).toEqual(400);
|
||||
expect(e.data.error).toEqual("Duplicate request");
|
||||
expect(e.data.error).toEqual('Duplicate request');
|
||||
});
|
||||
expect(counter).toBe(1);
|
||||
});
|
||||
@@ -84,8 +87,8 @@ describe_only_db('mongo')('Idempotency', () => {
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-Master-Key': Parse.masterKey,
|
||||
'X-Parse-Request-Id': 'abc-123'
|
||||
}
|
||||
'X-Parse-Request-Id': 'abc-123',
|
||||
},
|
||||
};
|
||||
await expectAsync(request(params)).toBeResolved();
|
||||
if (SIMULATE_TTL) {
|
||||
@@ -108,13 +111,13 @@ describe_only_db('mongo')('Idempotency', () => {
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-Master-Key': Parse.masterKey,
|
||||
'X-Parse-Request-Id': 'abc-123'
|
||||
}
|
||||
'X-Parse-Request-Id': 'abc-123',
|
||||
},
|
||||
};
|
||||
await expectAsync(request(params)).toBeResolved();
|
||||
await request(params).then(fail, e => {
|
||||
expect(e.status).toEqual(400);
|
||||
expect(e.data.error).toEqual("Duplicate request");
|
||||
expect(e.data.error).toEqual('Duplicate request');
|
||||
});
|
||||
expect(counter).toBe(1);
|
||||
});
|
||||
@@ -130,13 +133,13 @@ describe_only_db('mongo')('Idempotency', () => {
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-Master-Key': Parse.masterKey,
|
||||
'X-Parse-Request-Id': 'abc-123'
|
||||
}
|
||||
'X-Parse-Request-Id': 'abc-123',
|
||||
},
|
||||
};
|
||||
await expectAsync(request(params)).toBeResolved();
|
||||
await request(params).then(fail, e => {
|
||||
expect(e.status).toEqual(400);
|
||||
expect(e.data.error).toEqual("Duplicate request");
|
||||
expect(e.data.error).toEqual('Duplicate request');
|
||||
});
|
||||
expect(counter).toBe(1);
|
||||
});
|
||||
@@ -150,19 +153,19 @@ describe_only_db('mongo')('Idempotency', () => {
|
||||
method: 'POST',
|
||||
url: 'http://localhost:8378/1/users',
|
||||
body: {
|
||||
username: "user",
|
||||
password: "pass"
|
||||
username: 'user',
|
||||
password: 'pass',
|
||||
},
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-Master-Key': Parse.masterKey,
|
||||
'X-Parse-Request-Id': 'abc-123'
|
||||
}
|
||||
'X-Parse-Request-Id': 'abc-123',
|
||||
},
|
||||
};
|
||||
await expectAsync(request(params)).toBeResolved();
|
||||
await request(params).then(fail, e => {
|
||||
expect(e.status).toEqual(400);
|
||||
expect(e.data.error).toEqual("Duplicate request");
|
||||
expect(e.data.error).toEqual('Duplicate request');
|
||||
});
|
||||
expect(counter).toBe(1);
|
||||
});
|
||||
@@ -176,19 +179,19 @@ describe_only_db('mongo')('Idempotency', () => {
|
||||
method: 'POST',
|
||||
url: 'http://localhost:8378/1/installations',
|
||||
body: {
|
||||
installationId: "1",
|
||||
deviceType: "ios"
|
||||
installationId: '1',
|
||||
deviceType: 'ios',
|
||||
},
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-Master-Key': Parse.masterKey,
|
||||
'X-Parse-Request-Id': 'abc-123'
|
||||
}
|
||||
'X-Parse-Request-Id': 'abc-123',
|
||||
},
|
||||
};
|
||||
await expectAsync(request(params)).toBeResolved();
|
||||
await request(params).then(fail, e => {
|
||||
expect(e.status).toEqual(400);
|
||||
expect(e.data.error).toEqual("Duplicate request");
|
||||
expect(e.data.error).toEqual('Duplicate request');
|
||||
});
|
||||
expect(counter).toBe(1);
|
||||
});
|
||||
@@ -205,8 +208,8 @@ describe_only_db('mongo')('Idempotency', () => {
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-Master-Key': Parse.masterKey,
|
||||
'X-Parse-Request-Id': uuid.v4()
|
||||
}
|
||||
'X-Parse-Request-Id': uuid.v4(),
|
||||
},
|
||||
};
|
||||
return request(params);
|
||||
});
|
||||
@@ -215,7 +218,9 @@ describe_only_db('mongo')('Idempotency', () => {
|
||||
});
|
||||
|
||||
it('should re-throw any other error unchanged when writing request entry fails for any other reason', async () => {
|
||||
spyOn(rest, 'create').and.rejectWith(new Parse.Error(0, "some other error"));
|
||||
spyOn(rest, 'create').and.rejectWith(
|
||||
new Parse.Error(0, 'some other error')
|
||||
);
|
||||
Parse.Cloud.define('myFunction', () => {});
|
||||
const params = {
|
||||
method: 'POST',
|
||||
@@ -223,19 +228,23 @@ describe_only_db('mongo')('Idempotency', () => {
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-Master-Key': Parse.masterKey,
|
||||
'X-Parse-Request-Id': 'abc-123'
|
||||
}
|
||||
'X-Parse-Request-Id': 'abc-123',
|
||||
},
|
||||
};
|
||||
await request(params).then(fail, e => {
|
||||
expect(e.status).toEqual(400);
|
||||
expect(e.data.error).toEqual("some other error");
|
||||
expect(e.data.error).toEqual('some other error');
|
||||
});
|
||||
});
|
||||
|
||||
it('should use default configuration when none is set', async () => {
|
||||
await setup({});
|
||||
expect(Config.get(Parse.applicationId).idempotencyOptions.ttl).toBe(Definitions.IdempotencyOptions.ttl.default);
|
||||
expect(Config.get(Parse.applicationId).idempotencyOptions.paths).toBe(Definitions.IdempotencyOptions.paths.default);
|
||||
expect(Config.get(Parse.applicationId).idempotencyOptions.ttl).toBe(
|
||||
Definitions.IdempotencyOptions.ttl.default
|
||||
);
|
||||
expect(Config.get(Parse.applicationId).idempotencyOptions.paths).toBe(
|
||||
Definitions.IdempotencyOptions.paths.default
|
||||
);
|
||||
});
|
||||
|
||||
it('should throw on invalid configuration', async () => {
|
||||
|
||||
Reference in New Issue
Block a user