From 2cbba38af514d0b56425bc0150ec1ad9181f805a Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Thu, 22 Sep 2022 16:58:39 +0200 Subject: [PATCH] chore: sas9 username parsing bring back --- src/auth/AuthManager.ts | 2 +- src/auth/spec/AuthManager.spec.ts | 3 ++- src/utils/sas9/extractUserNameSas9.ts | 23 ++++++++++++++++------ src/utils/spec/extractUserNameSas9.spec.ts | 20 +++++++++---------- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/auth/AuthManager.ts b/src/auth/AuthManager.ts index c2e2347..f17f204 100644 --- a/src/auth/AuthManager.ts +++ b/src/auth/AuthManager.ts @@ -217,7 +217,7 @@ export class AuthManager { return Promise.resolve({ isLoggedIn, - userName: userName, + userName: userName.toLowerCase(), loginForm }) } diff --git a/src/auth/spec/AuthManager.spec.ts b/src/auth/spec/AuthManager.spec.ts index bf064c2..b17a352 100644 --- a/src/auth/spec/AuthManager.spec.ts +++ b/src/auth/spec/AuthManager.spec.ts @@ -596,6 +596,7 @@ describe('AuthManager', () => { it('return session information when logged in - SAS9 - having full name in html', async () => { const fullname = 'FirstName LastName' + const username = 'firlas' const serverType = ServerType.Sas9 const authManager = new AuthManager( serverUrl, @@ -611,7 +612,7 @@ describe('AuthManager', () => { const response = await authManager.checkSession() expect(response.isLoggedIn).toBeTruthy() - expect(response.userName).toEqual(fullname) + expect(response.userName).toEqual(username) expect(mockedAxios.get).toHaveBeenNthCalledWith( 1, `http://test-server.com/SASStoredProcess`, diff --git a/src/utils/sas9/extractUserNameSas9.ts b/src/utils/sas9/extractUserNameSas9.ts index 8f45d39..e9399e5 100644 --- a/src/utils/sas9/extractUserNameSas9.ts +++ b/src/utils/sas9/extractUserNameSas9.ts @@ -13,20 +13,31 @@ export const extractUserNameSas9 = (response: string) => { const regex = /"title":\s?".*?"/ const matched = response?.match(regex) - let username = matched?.[0].split(':')[1].trim() - let breakIndex = username?.indexOf(' ') + let fullName = matched?.[0].split(':')[1].trim() + let breakIndex = fullName?.indexOf(' ') + + if (!fullName) return 'unknown' dictionary.map((logoutWord) => { - const index = username?.indexOf(logoutWord) || -1 + const index = fullName?.indexOf(logoutWord) || -1 if (index > -1) { breakIndex = index + logoutWord.length } }) - username = username?.slice(breakIndex, -1) + //Cut only name + let username = fullName.slice(breakIndex, -1).trim() - if (!username) return 'unknown' + //Create username by SAS method - first 3 chars of every word lowercase + const usernameSplit = username.split(' ') + username = usernameSplit + .map((name: string) => + usernameSplit.length > 1 + ? name.slice(0, 3).toLowerCase() + : name.toLowerCase() + ) + .join('') - return username.trim() + return username } diff --git a/src/utils/spec/extractUserNameSas9.spec.ts b/src/utils/spec/extractUserNameSas9.spec.ts index 7eeed79..5179225 100644 --- a/src/utils/spec/extractUserNameSas9.spec.ts +++ b/src/utils/spec/extractUserNameSas9.spec.ts @@ -7,21 +7,21 @@ describe('Extract username SAS9 English - two word logout handled language', () const response = ` "title": "${logoutWord} SAS User One",` const username = extractUserNameSas9(response) - expect(username).toEqual('SAS User One') + expect(username).toEqual('sasuseone') }) it('should return username without space after colon', () => { const response = ` "title":"${logoutWord} SAS User One",` const username = extractUserNameSas9(response) - expect(username).toEqual('SAS User One') + expect(username).toEqual('sasuseone') }) it('should return username with one word user name', () => { const response = ` "title": "${logoutWord} SasUserOne",` const username = extractUserNameSas9(response) - expect(username).toEqual('SasUserOne') + expect(username).toEqual('sasuserone') }) it('should return username unknown', () => { @@ -39,21 +39,21 @@ describe('Extract username SAS9 two word logout unhandled language', () => { const response = ` "title": "${logoutWord} SAS User One",` const username = extractUserNameSas9(response) - expect(username).toEqual('out SAS User One') + expect(username).toEqual('outsasuseone') }) it('should return username without space after colon', () => { const response = ` "title":"${logoutWord} SAS User One",` const username = extractUserNameSas9(response) - expect(username).toEqual('out SAS User One') + expect(username).toEqual('outsasuseone') }) it('should return username with one word user name', () => { const response = ` "title": "${logoutWord} SasUserOne",` const username = extractUserNameSas9(response) - expect(username).toEqual('out SasUserOne') + expect(username).toEqual('outsas') }) it('should return username unknown', () => { @@ -64,28 +64,28 @@ describe('Extract username SAS9 two word logout unhandled language', () => { }) }) -describe('Extract username SAS9 Spasnish - one word logout languages', () => { +describe('Extract username SAS9 Spanish - one word logout languages', () => { const logoutWord = 'Desconexión' it('should return username with space after colon', () => { const response = ` "title": "${logoutWord} SAS User One",` const username = extractUserNameSas9(response) - expect(username).toEqual('SAS User One') + expect(username).toEqual('sasuseone') }) it('should return username without space after colon', () => { const response = ` "title":"${logoutWord} SAS User One",` const username = extractUserNameSas9(response) - expect(username).toEqual('SAS User One') + expect(username).toEqual('sasuseone') }) it('should return username with one word user name', () => { const response = ` "title": "${logoutWord} SasUserOne",` const username = extractUserNameSas9(response) - expect(username).toEqual('SasUserOne') + expect(username).toEqual('sasuserone') }) it('should return username unknown', () => {