* removes from emailverificationtoken spec * updates winston * Updates ValidationAndPasswordsReset * Use local request in schemas * Removes request in rest.spec * Removes request from PushRouter0 * removes request from public API * removes request from index.spec * Removes request form parse.push spec * removes request from ParseInstallation spec * Removes from ParseHooks * removes request from ParseGlobalConfig.spec * Removes request from ParseAPI.spec.js * removes request from LogsRouter * removes in features * Filters undefined headers instead of crashing * Removes request from ParseUser spec * Removes usage of request in ParseFile.spec.js * Removes request from AuthAdapters.js * removes request-promise from ParseGeoPoint.spec * Removes request-promise from ParseQuery spec * remove request-promise from UserPII * removes request-promise from EnableExpressErrorHandler * Updates RevocableSessionUpgrade spec * Update RestQuery * Removes read preferenceOptionM * ensure we forward auth from URL * use request in CloudCode.spec.js * Removes request-promise from JobSchedule.spec * Removes rp from VerifyUserPassword.spec.js * Removes rp from PasswordPolicy spec * Removes rp from ParsePolygon spec * Removes rp from fullTextSearch spec * Removes rp from PArseQuery.Aggregate * Ensure we properly forward errors * Removes request and request-promise
287 lines
7.1 KiB
JavaScript
287 lines
7.1 KiB
JavaScript
const request = require('../lib/request');
|
|
|
|
const defaultHeaders = {
|
|
'X-Parse-Application-Id': 'test',
|
|
'X-Parse-Rest-API-Key': 'rest',
|
|
'Content-Type': 'application/json',
|
|
};
|
|
const masterKeyHeaders = {
|
|
'X-Parse-Application-Id': 'test',
|
|
'X-Parse-Rest-API-Key': 'rest',
|
|
'X-Parse-Master-Key': 'test',
|
|
'Content-Type': 'application/json',
|
|
};
|
|
const defaultOptions = {
|
|
headers: defaultHeaders,
|
|
json: true,
|
|
};
|
|
const masterKeyOptions = {
|
|
headers: masterKeyHeaders,
|
|
json: true,
|
|
};
|
|
|
|
describe('JobSchedule', () => {
|
|
it('should create _JobSchedule with masterKey', done => {
|
|
const jobSchedule = new Parse.Object('_JobSchedule');
|
|
jobSchedule.set({
|
|
jobName: 'MY Cool Job',
|
|
});
|
|
jobSchedule
|
|
.save(null, { useMasterKey: true })
|
|
.then(() => {
|
|
done();
|
|
})
|
|
.catch(done.fail);
|
|
});
|
|
|
|
it('should fail creating _JobSchedule without masterKey', done => {
|
|
const jobSchedule = new Parse.Object('_JobSchedule');
|
|
jobSchedule.set({
|
|
jobName: 'SomeJob',
|
|
});
|
|
jobSchedule
|
|
.save(null)
|
|
.then(done.fail)
|
|
.catch(() => done());
|
|
});
|
|
|
|
it('should reject access when not using masterKey (/jobs)', done => {
|
|
request(
|
|
Object.assign(
|
|
{ url: Parse.serverURL + '/cloud_code/jobs' },
|
|
defaultOptions
|
|
)
|
|
).then(done.fail, () => done());
|
|
});
|
|
|
|
it('should reject access when not using masterKey (/jobs/data)', done => {
|
|
request(
|
|
Object.assign(
|
|
{ url: Parse.serverURL + '/cloud_code/jobs/data' },
|
|
defaultOptions
|
|
)
|
|
).then(done.fail, () => done());
|
|
});
|
|
|
|
it('should reject access when not using masterKey (PUT /jobs/id)', done => {
|
|
request(
|
|
Object.assign(
|
|
{ method: 'PUT', url: Parse.serverURL + '/cloud_code/jobs/jobId' },
|
|
defaultOptions
|
|
)
|
|
).then(done.fail, () => done());
|
|
});
|
|
|
|
it('should reject access when not using masterKey (DELETE /jobs/id)', done => {
|
|
request(
|
|
Object.assign(
|
|
{ method: 'DELETE', url: Parse.serverURL + '/cloud_code/jobs/jobId' },
|
|
defaultOptions
|
|
)
|
|
).then(done.fail, () => done());
|
|
});
|
|
|
|
it('should allow access when using masterKey (GET /jobs)', done => {
|
|
request(
|
|
Object.assign(
|
|
{ url: Parse.serverURL + '/cloud_code/jobs' },
|
|
masterKeyOptions
|
|
)
|
|
).then(done, done.fail);
|
|
});
|
|
|
|
it('should create a job schedule', done => {
|
|
Parse.Cloud.job('job', () => {});
|
|
const options = Object.assign({}, masterKeyOptions, {
|
|
method: 'POST',
|
|
url: Parse.serverURL + '/cloud_code/jobs',
|
|
body: {
|
|
job_schedule: {
|
|
jobName: 'job',
|
|
},
|
|
},
|
|
});
|
|
request(options)
|
|
.then(res => {
|
|
expect(res.data.objectId).not.toBeUndefined();
|
|
})
|
|
.then(() => {
|
|
return request(
|
|
Object.assign(
|
|
{ url: Parse.serverURL + '/cloud_code/jobs' },
|
|
masterKeyOptions
|
|
)
|
|
);
|
|
})
|
|
.then(res => {
|
|
expect(res.data.length).toBe(1);
|
|
})
|
|
.then(done)
|
|
.catch(done.fail);
|
|
});
|
|
|
|
it('should fail creating a job with an invalid name', done => {
|
|
const options = Object.assign({}, masterKeyOptions, {
|
|
url: Parse.serverURL + '/cloud_code/jobs',
|
|
method: 'POST',
|
|
body: {
|
|
job_schedule: {
|
|
jobName: 'job',
|
|
},
|
|
},
|
|
});
|
|
request(options)
|
|
.then(done.fail)
|
|
.catch(() => done());
|
|
});
|
|
|
|
it('should update a job', done => {
|
|
Parse.Cloud.job('job1', () => {});
|
|
Parse.Cloud.job('job2', () => {});
|
|
const options = Object.assign({}, masterKeyOptions, {
|
|
method: 'POST',
|
|
url: Parse.serverURL + '/cloud_code/jobs',
|
|
body: {
|
|
job_schedule: {
|
|
jobName: 'job1',
|
|
},
|
|
},
|
|
});
|
|
request(options)
|
|
.then(res => {
|
|
expect(res.data.objectId).not.toBeUndefined();
|
|
return request(
|
|
Object.assign(options, {
|
|
url: Parse.serverURL + '/cloud_code/jobs/' + res.data.objectId,
|
|
method: 'PUT',
|
|
body: {
|
|
job_schedule: {
|
|
jobName: 'job2',
|
|
},
|
|
},
|
|
})
|
|
);
|
|
})
|
|
.then(() => {
|
|
return request(
|
|
Object.assign({}, masterKeyOptions, {
|
|
url: Parse.serverURL + '/cloud_code/jobs',
|
|
})
|
|
);
|
|
})
|
|
.then(res => {
|
|
expect(res.data.length).toBe(1);
|
|
expect(res.data[0].jobName).toBe('job2');
|
|
})
|
|
.then(done)
|
|
.catch(done.fail);
|
|
});
|
|
|
|
it('should fail updating a job with an invalid name', done => {
|
|
Parse.Cloud.job('job1', () => {});
|
|
const options = Object.assign({}, masterKeyOptions, {
|
|
method: 'POST',
|
|
url: Parse.serverURL + '/cloud_code/jobs',
|
|
body: {
|
|
job_schedule: {
|
|
jobName: 'job1',
|
|
},
|
|
},
|
|
});
|
|
request(options)
|
|
.then(res => {
|
|
expect(res.data.objectId).not.toBeUndefined();
|
|
return request(
|
|
Object.assign(options, {
|
|
method: 'PUT',
|
|
url: Parse.serverURL + '/cloud_code/jobs/' + res.data.objectId,
|
|
body: {
|
|
job_schedule: {
|
|
jobName: 'job2',
|
|
},
|
|
},
|
|
})
|
|
);
|
|
})
|
|
.then(done.fail)
|
|
.catch(() => done());
|
|
});
|
|
|
|
it('should destroy a job', done => {
|
|
Parse.Cloud.job('job', () => {});
|
|
const options = Object.assign({}, masterKeyOptions, {
|
|
method: 'POST',
|
|
url: Parse.serverURL + '/cloud_code/jobs',
|
|
body: {
|
|
job_schedule: {
|
|
jobName: 'job',
|
|
},
|
|
},
|
|
});
|
|
request(options)
|
|
.then(res => {
|
|
expect(res.data.objectId).not.toBeUndefined();
|
|
return request(
|
|
Object.assign(
|
|
{
|
|
method: 'DELETE',
|
|
url: Parse.serverURL + '/cloud_code/jobs/' + res.data.objectId,
|
|
},
|
|
masterKeyOptions
|
|
)
|
|
);
|
|
})
|
|
.then(() => {
|
|
return request(
|
|
Object.assign(
|
|
{
|
|
url: Parse.serverURL + '/cloud_code/jobs',
|
|
},
|
|
masterKeyOptions
|
|
)
|
|
);
|
|
})
|
|
.then(res => {
|
|
expect(res.data.length).toBe(0);
|
|
})
|
|
.then(done)
|
|
.catch(done.fail);
|
|
});
|
|
|
|
it('should properly return job data', done => {
|
|
Parse.Cloud.job('job1', () => {});
|
|
Parse.Cloud.job('job2', () => {});
|
|
const options = Object.assign({}, masterKeyOptions, {
|
|
method: 'POST',
|
|
url: Parse.serverURL + '/cloud_code/jobs',
|
|
body: {
|
|
job_schedule: {
|
|
jobName: 'job1',
|
|
},
|
|
},
|
|
});
|
|
request(options)
|
|
.then(response => {
|
|
const res = response.data;
|
|
expect(res.objectId).not.toBeUndefined();
|
|
})
|
|
.then(() => {
|
|
return request(
|
|
Object.assign(
|
|
{ url: Parse.serverURL + '/cloud_code/jobs/data' },
|
|
masterKeyOptions
|
|
)
|
|
);
|
|
})
|
|
.then(response => {
|
|
const res = response.data;
|
|
expect(res.in_use).toEqual(['job1']);
|
|
expect(res.jobs).toContain('job1');
|
|
expect(res.jobs).toContain('job2');
|
|
expect(res.jobs.length).toBe(2);
|
|
})
|
|
.then(done)
|
|
.catch(e => done.fail(e.data));
|
|
});
|
|
});
|