mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[PRODENG-211] integrate JS-API with monorepo (part 1) (#9081)
* integrate JS-API with monorepo * [ci:force] fix token issue [ci:force] migrate docs folder [ci:force] clean personal tokens * [ci:force] gha workflow support * [ci:force] npm publish target * fix js-api test linting * [ci:force] fix test linting, mocks, https scheme * [ci:force] fix https scheme * [ci:force] typescript mappings * [ci:force] update scripts * lint fixes * linting fixes * fix linting * [ci:force] linting fixes * linting fixes * [ci:force] remove js-api upstream and corresponding scripts * [ci:force] jsdoc fixes * fix jsdoc linting * [ci:force] jsdoc fixes * [ci:force] jsdoc fixes * jsdoc fixes * jsdoc fixes * jsdoc fixes * [ci:force] fix jsdoc * [ci:force] reduce code duplication * replace 'chai' expect with node.js assert * replace 'chai' expect with node.js assert * [ci:force] remove chai and chai-spies for js-api testing * [ci:force] cleanup and fix imports * [ci:force] fix linting * [ci:force] fix unit test * [ci:force] fix sonar linting findings * [ci:force] switch activiti api models to interfaces (-2.5% reduction of bundle) * [ci:force] switch activiti api models to interfaces * [ci:force] switch AGS api models to interfaces * [ci:force] switch AGS api models to interfaces * [ci:force] switch search api models to interfaces * [ci:force] switch content api models to interfaces where applicable
This commit is contained in:
327
lib/js-api/test/upload.spec.ts
Normal file
327
lib/js-api/test/upload.spec.ts
Normal file
@@ -0,0 +1,327 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import assert from 'assert';
|
||||
import { EcmAuthMock, UploadMock } from './mockObjects';
|
||||
import fs from 'fs';
|
||||
import { UploadApi, AlfrescoApi, NodeEntry } from '../src';
|
||||
|
||||
// eslint-disable-next-line ban/ban
|
||||
xdescribe('Upload', () => {
|
||||
let authResponseMock: EcmAuthMock;
|
||||
let uploadMock: UploadMock;
|
||||
let alfrescoJsApi: AlfrescoApi;
|
||||
let uploadApi: UploadApi;
|
||||
|
||||
beforeEach(async () => {
|
||||
const hostEcm = 'https://127.0.0.1:8080';
|
||||
|
||||
authResponseMock = new EcmAuthMock(hostEcm);
|
||||
uploadMock = new UploadMock(hostEcm);
|
||||
|
||||
authResponseMock.get201Response();
|
||||
alfrescoJsApi = new AlfrescoApi({
|
||||
hostEcm
|
||||
});
|
||||
|
||||
uploadApi = new UploadApi(alfrescoJsApi);
|
||||
|
||||
await alfrescoJsApi.login('admin', 'admin');
|
||||
});
|
||||
|
||||
describe('Upload File', () => {
|
||||
it('upload file should return 200 if is all ok', (done) => {
|
||||
uploadMock.get201CreationFile();
|
||||
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
|
||||
uploadApi.uploadFile(file).then((data: NodeEntry) => {
|
||||
assert.equal(data.entry.isFile, true);
|
||||
assert.equal(data.entry.name, 'testFile.txt');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('upload file should get 409 if new name clashes with an existing file in the current parent folder', (done) => {
|
||||
uploadMock.get409CreationFileNewNameClashes();
|
||||
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
|
||||
uploadApi.uploadFile(file).then(
|
||||
() => {},
|
||||
(error: any) => {
|
||||
assert.equal(error.status, 409);
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('upload file should get 200 and rename if the new name clashes with an existing file in the current parent folder and autorename is true', (done) => {
|
||||
uploadMock.get201CreationFileAutoRename();
|
||||
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
|
||||
uploadApi.uploadFile(file, null, null, null, { autoRename: true }).then((data: NodeEntry) => {
|
||||
assert.equal(data.entry.isFile, true);
|
||||
assert.equal(data.entry.name, 'testFile-2.txt');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Abort should stop the file file upload', (done) => {
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
|
||||
const promise: any = uploadApi.uploadFile(file, null, null, null, { autoRename: true });
|
||||
promise.once('abort', () => {
|
||||
done();
|
||||
});
|
||||
|
||||
promise.abort();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Events', () => {
|
||||
it('Upload should fire done event at the end of an upload', (done) => {
|
||||
uploadMock.get201CreationFile();
|
||||
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
|
||||
const uploadPromise: any = uploadApi.uploadFile(file);
|
||||
|
||||
uploadPromise.catch(() => {});
|
||||
uploadPromise.on('success', () => {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Upload should fire error event if something go wrong', (done) => {
|
||||
uploadMock.get409CreationFileNewNameClashes();
|
||||
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
|
||||
const uploadPromise: any = uploadApi.uploadFile(file);
|
||||
uploadPromise.catch(() => {});
|
||||
uploadPromise.on('error', () => {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Upload should fire unauthorized event if get 401', (done) => {
|
||||
uploadMock.get401Response();
|
||||
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
|
||||
const uploadPromise: any = uploadApi.uploadFile(file);
|
||||
|
||||
uploadPromise.catch(() => {});
|
||||
uploadPromise.on('unauthorized', () => {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Upload should fire progress event during the upload', (done) => {
|
||||
uploadMock.get201CreationFile();
|
||||
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
const uploadPromise: any = uploadApi.uploadFile(file);
|
||||
|
||||
uploadPromise.once('progress', () => done());
|
||||
});
|
||||
|
||||
it('Multiple Upload should fire progress events on the right promise during the upload', (done) => {
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
const fileTwo = fs.createReadStream('./test/mockObjects/assets/testFile2.txt');
|
||||
|
||||
let progressOneOk = false;
|
||||
let progressTwoOk = false;
|
||||
|
||||
const promiseProgressOne = new Promise((resolve) => {
|
||||
uploadMock.get201CreationFile();
|
||||
|
||||
const promise: any = uploadApi.uploadFile(file);
|
||||
promise.once('success', () => {
|
||||
progressOneOk = true;
|
||||
resolve('Resolving');
|
||||
});
|
||||
});
|
||||
|
||||
const promiseProgressTwo = new Promise((resolve) => {
|
||||
uploadMock.get201CreationFile();
|
||||
|
||||
const promise: any = uploadApi.uploadFile(fileTwo);
|
||||
promise.once('success', () => {
|
||||
progressTwoOk = true;
|
||||
resolve('Resolving');
|
||||
});
|
||||
});
|
||||
|
||||
Promise.all([promiseProgressOne, promiseProgressTwo]).then(() => {
|
||||
assert.equal(progressOneOk, true);
|
||||
assert.equal(progressTwoOk, true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Multiple Upload should fire error events on the right promise during the upload', (done) => {
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
const fileTwo = fs.createReadStream('./test/mockObjects/assets/testFile2.txt');
|
||||
|
||||
let errorOneOk = false;
|
||||
let errorTwoOk = false;
|
||||
|
||||
const promiseErrorOne = new Promise((resolve) => {
|
||||
uploadMock.get201CreationFile();
|
||||
|
||||
const uploadPromise: any = uploadApi.uploadFile(file);
|
||||
uploadPromise.catch(() => {});
|
||||
uploadPromise.once('success', () => {
|
||||
errorOneOk = true;
|
||||
resolve('Resolving');
|
||||
});
|
||||
});
|
||||
|
||||
const promiseErrorTwo = new Promise((resolve) => {
|
||||
uploadMock.get201CreationFile();
|
||||
|
||||
const uploadPromise: any = uploadApi.uploadFile(fileTwo);
|
||||
uploadPromise.catch(() => {});
|
||||
uploadPromise.once('success', () => {
|
||||
errorTwoOk = true;
|
||||
resolve('Resolving');
|
||||
});
|
||||
});
|
||||
|
||||
Promise.all([promiseErrorOne, promiseErrorTwo]).then(() => {
|
||||
assert.equal(errorOneOk, true);
|
||||
assert.equal(errorTwoOk, true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Multiple Upload should fire success events on the right promise during the upload', (done) => {
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
const fileTwo = fs.createReadStream('./test/mockObjects/assets/testFile2.txt');
|
||||
|
||||
let successOneOk = false;
|
||||
let successTwoOk = false;
|
||||
|
||||
const promiseSuccessOne = new Promise((resolve) => {
|
||||
uploadMock.get201CreationFile();
|
||||
|
||||
const uploadPromiseOne: any = uploadApi.uploadFile(file);
|
||||
uploadPromiseOne.catch(() => {});
|
||||
uploadPromiseOne.once('success', () => {
|
||||
successOneOk = true;
|
||||
resolve('Resolving');
|
||||
});
|
||||
});
|
||||
|
||||
const promiseSuccessTwo = new Promise((resolve) => {
|
||||
uploadMock.get201CreationFile();
|
||||
|
||||
const uploadPromiseTwo: any = uploadApi.uploadFile(fileTwo);
|
||||
uploadPromiseTwo.catch(() => {});
|
||||
uploadPromiseTwo.once('success', () => {
|
||||
successTwoOk = true;
|
||||
resolve('Resolving');
|
||||
});
|
||||
});
|
||||
|
||||
Promise.all([promiseSuccessOne, promiseSuccessTwo]).then(() => {
|
||||
assert.equal(successOneOk, true);
|
||||
assert.equal(successTwoOk, true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Multiple Upload should resolve the correct promise', (done) => {
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
const fileTwo = fs.createReadStream('./test/mockObjects/assets/testFile2.txt');
|
||||
|
||||
let resolveOneOk = false;
|
||||
let resolveTwoOk = false;
|
||||
|
||||
uploadMock.get201CreationFile();
|
||||
|
||||
const p1 = uploadApi.uploadFile(file).then(() => {
|
||||
resolveOneOk = true;
|
||||
});
|
||||
|
||||
uploadMock.get201CreationFile();
|
||||
|
||||
const p2 = uploadApi.uploadFile(fileTwo).then(() => {
|
||||
resolveTwoOk = true;
|
||||
});
|
||||
|
||||
Promise.all([p1, p2]).then(() => {
|
||||
assert.equal(resolveOneOk, true);
|
||||
assert.equal(resolveTwoOk, true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Multiple Upload should reject the correct promise', (done) => {
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
const fileTwo = fs.createReadStream('./test/mockObjects/assets/testFile2.txt');
|
||||
|
||||
let rejectOneOk = false;
|
||||
let rejectTwoOk = false;
|
||||
|
||||
uploadMock.get409CreationFileNewNameClashes();
|
||||
|
||||
const p1 = uploadApi.uploadFile(file).then(null, () => {
|
||||
rejectOneOk = true;
|
||||
});
|
||||
|
||||
uploadMock.get409CreationFileNewNameClashes();
|
||||
|
||||
const p2 = uploadApi.uploadFile(fileTwo).then(null, () => {
|
||||
rejectTwoOk = true;
|
||||
});
|
||||
|
||||
Promise.all([p1, p2]).then(() => {
|
||||
assert.equal(rejectOneOk, true);
|
||||
assert.equal(rejectTwoOk, true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Is possible use chain events', (done) => {
|
||||
const file = fs.createReadStream('./test/mockObjects/assets/testFile.txt');
|
||||
|
||||
uploadMock.get401Response();
|
||||
|
||||
let promiseProgressOne = {};
|
||||
let promiseProgressTwo = {};
|
||||
|
||||
const uploadPromise: any = uploadApi.uploadFile(file);
|
||||
uploadPromise.catch(() => {});
|
||||
|
||||
uploadPromise
|
||||
.once('error', () => {
|
||||
promiseProgressOne = Promise.resolve('Resolving');
|
||||
})
|
||||
.once('unauthorized', () => {
|
||||
promiseProgressTwo = Promise.resolve('Resolving');
|
||||
});
|
||||
|
||||
Promise.all([promiseProgressOne, promiseProgressTwo]).then(() => {
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user