1
0
mirror of https://github.com/sasjs/adapter.git synced 2025-12-11 09:24:35 +00:00

chore: sas9 username parsing bring back

This commit is contained in:
2022-09-22 16:58:39 +02:00
parent 61fdf5573b
commit 2cbba38af5
4 changed files with 30 additions and 18 deletions

View File

@@ -217,7 +217,7 @@ export class AuthManager {
return Promise.resolve({
isLoggedIn,
userName: userName,
userName: userName.toLowerCase(),
loginForm
})
}

View File

@@ -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`,

View File

@@ -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
}

View File

@@ -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', () => {