From 9116c54f4c9037de08dac847fad7cd1b3dbb3002 Mon Sep 17 00:00:00 2001 From: Vito Date: Thu, 19 Oct 2017 21:24:26 +0100 Subject: [PATCH] =?UTF-8?q?[ADF-1704]=20added=20encoding=20to=20filename?= =?UTF-8?q?=20to=20avoid=20break=20on=20special=20chara=E2=80=A6=20(#2509)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [ADF-1704] added encoding to filename to avoid break on special characters * [ADF-1704] removed unused encode decode for file name --- .../widgets/upload/upload.widget.html | 2 +- .../widgets/upload/upload.widget.spec.ts | 98 +++++++++++++++++++ .../widgets/upload/upload.widget.ts | 4 - 3 files changed, 99 insertions(+), 5 deletions(-) diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.html index 8667c343f3..7b57564ee4 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.html +++ b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.html @@ -14,7 +14,7 @@ (keyup.enter)="fileClicked(file)" role="button" tabindex="0"/> - {{decode(file.name)}} + {{file.name}} diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.spec.ts b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.spec.ts index da961239d8..c8caec1963 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.spec.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.spec.ts @@ -233,6 +233,104 @@ describe('UploadWidgetComponent', () => { }); })); + it('should show correctly the file name when is formed with special characters', async(() => { + uploadWidgetComponent.field.value = []; + fakeJpgAnswer.name = '±!@#$%^&*()_+{}:”|<>?§™£-=[];’\\,./.jpg'; + uploadWidgetComponent.field.value.push(fakeJpgAnswer); + fixture.detectChanges(); + + fixture.whenStable().then(() => { + fixture.detectChanges(); + let jpegElement = element.querySelector('#file-1156'); + expect(jpegElement).not.toBeNull(); + expect(jpegElement.textContent).toBe(`±!@#$%^&*()_+{}:”|<>?§™£-=[];’\\,./.jpg`); + }); + })); + + it('should show correctly the file name when is formed with Arabic characters', async(() => { + uploadWidgetComponent.field.value = []; + fakeJpgAnswer.name = 'غ ظ ض ذ خ ث ت ش ر ق ص ف ع س ن م ل ك ي ط ح ز و ه د ج ب ا.jpg'; + uploadWidgetComponent.field.value.push(fakeJpgAnswer); + fixture.detectChanges(); + + fixture.whenStable().then(() => { + fixture.detectChanges(); + let jpegElement = element.querySelector('#file-1156'); + expect(jpegElement).not.toBeNull(); + expect(jpegElement.textContent).toBe('غ ظ ض ذ خ ث ت ش ر ق ص ف ع س ن م ل ك ي ط ح ز و ه د ج ب ا.jpg'); + }); + })); + + it('should show correctly the file name when is formed with French characters', async(() => { + uploadWidgetComponent.field.value = []; + fakeJpgAnswer.name = 'Àâæçéèêëïîôœùûüÿ.jpg'; + uploadWidgetComponent.field.value.push(fakeJpgAnswer); + fixture.detectChanges(); + + fixture.whenStable().then(() => { + fixture.detectChanges(); + let jpegElement = element.querySelector('#file-1156'); + expect(jpegElement).not.toBeNull(); + expect(jpegElement.textContent).toBe('Àâæçéèêëïîôœùûüÿ.jpg'); + }); + })); + + it('should show correctly the file name when is formed with Greek characters', async(() => { + uploadWidgetComponent.field.value = []; + fakeJpgAnswer.name = 'άέήίϊϊΐόύϋΰώθωερτψυιοπασδφγηςκλζχξωβνμ.jpg'; + uploadWidgetComponent.field.value.push(fakeJpgAnswer); + fixture.detectChanges(); + + fixture.whenStable().then(() => { + fixture.detectChanges(); + let jpegElement = element.querySelector('#file-1156'); + expect(jpegElement).not.toBeNull(); + expect(jpegElement.textContent).toBe('άέήίϊϊΐόύϋΰώθωερτψυιοπασδφγηςκλζχξωβνμ.jpg'); + }); + })); + + it('should show correctly the file name when is formed with Polish accented characters', async(() => { + uploadWidgetComponent.field.value = []; + fakeJpgAnswer.name = 'Ą Ć Ę Ł Ń Ó Ś Ź Żą ć ę ł ń ó ś ź ż.jpg'; + uploadWidgetComponent.field.value.push(fakeJpgAnswer); + fixture.detectChanges(); + + fixture.whenStable().then(() => { + fixture.detectChanges(); + let jpegElement = element.querySelector('#file-1156'); + expect(jpegElement).not.toBeNull(); + expect(jpegElement.textContent).toBe('Ą Ć Ę Ł Ń Ó Ś Ź Żą ć ę ł ń ó ś ź ż.jpg'); + }); + })); + + it('should show correctly the file name when is formed with Spanish accented characters', async(() => { + uploadWidgetComponent.field.value = []; + fakeJpgAnswer.name = 'á, é, í, ó, ú, ñ, Ñ, ü, Ü, ¿, ¡. Á, É, Í, Ó, Ú.jpg'; + uploadWidgetComponent.field.value.push(fakeJpgAnswer); + fixture.detectChanges(); + + fixture.whenStable().then(() => { + fixture.detectChanges(); + let jpegElement = element.querySelector('#file-1156'); + expect(jpegElement).not.toBeNull(); + expect(jpegElement.textContent).toBe('á, é, í, ó, ú, ñ, Ñ, ü, Ü, ¿, ¡. Á, É, Í, Ó, Ú.jpg'); + }); + })); + + it('should show correctly the file name when is formed with Swedish characters', async(() => { + uploadWidgetComponent.field.value = []; + fakeJpgAnswer.name = 'Äåéö.jpg'; + uploadWidgetComponent.field.value.push(fakeJpgAnswer); + fixture.detectChanges(); + + fixture.whenStable().then(() => { + fixture.detectChanges(); + let jpegElement = element.querySelector('#file-1156'); + expect(jpegElement).not.toBeNull(); + expect(jpegElement.textContent).toBe('Äåéö.jpg'); + }); + })); + it('should remove file from field value', async(() => { uploadWidgetComponent.field.params.multiple = true; uploadWidgetComponent.field.value = []; diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts index ee696cdba6..a98ab37da4 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts @@ -96,10 +96,6 @@ export class UploadWidgetComponent extends WidgetComponent implements OnInit { } } - decode(fileName: string): string { - return decodeURI(fileName); - } - private removeElementFromList(list, element) { let index = list.indexOf(element); if (index !== -1) {