mirror of
https://github.com/strapi/strapi.git
synced 2025-09-22 23:09:47 +00:00
test(upload): api test for private media signing
This commit is contained in:
parent
5cb9c4a6e9
commit
33f8f8e1c3
@ -6,33 +6,62 @@ const path = require('path');
|
|||||||
// Helpers.
|
// Helpers.
|
||||||
const { createTestBuilder } = require('../../../../../test/helpers/builder');
|
const { createTestBuilder } = require('../../../../../test/helpers/builder');
|
||||||
const { createStrapiInstance } = require('../../../../../test/helpers/strapi');
|
const { createStrapiInstance } = require('../../../../../test/helpers/strapi');
|
||||||
const {
|
const { createAuthRequest } = require('../../../../../test/helpers/request');
|
||||||
createAuthRequest,
|
|
||||||
createContentAPIRequest,
|
|
||||||
} = require('../../../../../test/helpers/request');
|
|
||||||
|
|
||||||
const builder = createTestBuilder();
|
const builder = createTestBuilder();
|
||||||
let strapi;
|
let strapi;
|
||||||
let request;
|
|
||||||
let contentAPIRequest;
|
|
||||||
|
|
||||||
const model = {
|
let baseRequest;
|
||||||
uid: 'api::profile.profile',
|
let rq;
|
||||||
displayName: 'Profile',
|
|
||||||
singularName: 'profile',
|
const modelUID = 'api::model.model';
|
||||||
pluralName: 'profiles',
|
const componentUID = 'default.component';
|
||||||
|
|
||||||
|
const models = {
|
||||||
|
[modelUID]: {
|
||||||
|
displayName: 'Model',
|
||||||
|
singularName: 'model',
|
||||||
|
pluralName: 'models',
|
||||||
kind: 'collectionType',
|
kind: 'collectionType',
|
||||||
attributes: {
|
attributes: {
|
||||||
name: {
|
name: {
|
||||||
type: 'text',
|
type: 'text',
|
||||||
},
|
},
|
||||||
profilePicture: {
|
media: {
|
||||||
type: 'media',
|
type: 'media',
|
||||||
},
|
},
|
||||||
slideShow: {
|
media_repeatable: {
|
||||||
type: 'media',
|
type: 'media',
|
||||||
multiple: true,
|
multiple: true,
|
||||||
},
|
},
|
||||||
|
// TODO add these cases in the test
|
||||||
|
// compo_media: {
|
||||||
|
// type: 'component',
|
||||||
|
// component: componentUID,
|
||||||
|
// },
|
||||||
|
// compo_media_repeatable: {
|
||||||
|
// type: 'component',
|
||||||
|
// repeatable: true,
|
||||||
|
// component: componentUID,
|
||||||
|
// },
|
||||||
|
// dynamicZone: {
|
||||||
|
// type: 'dynamiczone',
|
||||||
|
// components: [componentUID],
|
||||||
|
// },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[componentUID]: {
|
||||||
|
displayName: 'component',
|
||||||
|
attributes: {
|
||||||
|
media_repeatable: {
|
||||||
|
type: 'media',
|
||||||
|
multiple: true,
|
||||||
|
},
|
||||||
|
media: {
|
||||||
|
type: 'media',
|
||||||
|
multiple: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -53,28 +82,46 @@ const mockProvider = (signUrl = true) => ({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const uploadImg = (fileName) => {
|
||||||
|
return baseRequest({
|
||||||
|
method: 'POST',
|
||||||
|
url: '/upload',
|
||||||
|
formData: {
|
||||||
|
files: fs.createReadStream(path.join(__dirname, `../utils/${fileName}`)),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
describe('Upload Plugin url signing', () => {
|
describe('Upload Plugin url signing', () => {
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
const localProviderPath = require.resolve('@strapi/provider-upload-local');
|
const localProviderPath = require.resolve('@strapi/provider-upload-local');
|
||||||
jest.mock(localProviderPath, () => mockProvider(true));
|
jest.mock(localProviderPath, () => mockProvider(true));
|
||||||
|
|
||||||
// Create builder
|
// Create builder
|
||||||
await builder.addContentType(model).build();
|
await builder.addComponent(models[componentUID]).addContentType(models[modelUID]).build();
|
||||||
|
|
||||||
// Create api instance
|
// Create api instance
|
||||||
strapi = await createStrapiInstance();
|
strapi = await createStrapiInstance();
|
||||||
|
|
||||||
request = await createAuthRequest({ strapi });
|
baseRequest = await createAuthRequest({ strapi });
|
||||||
contentAPIRequest = createContentAPIRequest({ strapi });
|
|
||||||
|
|
||||||
await contentAPIRequest({
|
rq = await createAuthRequest({ strapi });
|
||||||
method: 'POST',
|
rq.setURLPrefix(`/content-manager/collection-types/${modelUID}`);
|
||||||
url: '/profiles?populate=*',
|
|
||||||
formData: {
|
const imgRes = [await uploadImg('rec.jpg'), await uploadImg('strapi.jpg')];
|
||||||
data: '{}',
|
|
||||||
'files.profilePicture': fs.createReadStream(path.join(__dirname, '../utils/rec.jpg')),
|
const creationResult = await rq.post('/', {
|
||||||
|
body: {
|
||||||
|
name: 'name',
|
||||||
|
media: imgRes[0].body[0].id,
|
||||||
|
media_repeatable: imgRes.map((img) => img.body[0].id),
|
||||||
|
},
|
||||||
|
qs: {
|
||||||
|
populate: ['name'],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
expect(creationResult.statusCode).toBe(200);
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(async () => {
|
afterAll(async () => {
|
||||||
@ -83,12 +130,16 @@ describe('Upload Plugin url signing', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('returns a signed url for private upload providers', async () => {
|
test('returns a signed url for private upload providers', async () => {
|
||||||
const res = await request({
|
const res = await baseRequest({
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
url: '/content-manager/collection-types/api::profile.profile/1',
|
url: `/content-manager/collection-types/${modelUID}/1`,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(res.statusCode).toBe(200);
|
expect(res.statusCode).toBe(200);
|
||||||
expect(res.body.profilePicture.url).toEqual('signedUrl');
|
expect(res.body.media.url).toEqual('signedUrl');
|
||||||
|
|
||||||
|
for (const media of res.body.media_repeatable) {
|
||||||
|
expect(media.url).toEqual('signedUrl');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user