1
0
mirror of https://github.com/sasjs/adapter.git synced 2025-12-30 00:50:05 +00:00

Compare commits

...

7 Commits

Author SHA1 Message Date
Muhammad Saad
4826388cdd Merge pull request #310 from sasjs/issue-309
Issue 309
2021-03-29 18:07:51 +05:00
e88736056a test: fix 2021-03-29 13:43:51 +02:00
9da2a29a72 chore: for VIYA calling API endpoint 2021-03-28 21:55:47 +02:00
dce8a08a86 lint: fix 2021-03-28 19:27:57 +02:00
1fabb9e610 test: fix 2021-03-28 19:04:10 +02:00
23db0ac80d style: lint 2021-03-28 18:40:22 +02:00
28370341d8 fix: login checkSession improved mechanism 2021-03-28 18:40:04 +02:00
3 changed files with 83 additions and 17123 deletions

17128
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -82,17 +82,33 @@ export class AuthManager {
* @returns - a promise which resolves with an object containing two values - a boolean `isLoggedIn`, and a string `userName`.
*/
public async checkSession() {
const { result: loginResponse } = await this.requestClient.get<string>(
this.loginUrl.replace('.do', ''),
undefined,
'text/plain'
)
const responseText = loginResponse
const isLoggedIn = /<button.+onClick.+logout/gm.test(responseText)
let loginForm: any = null
//For VIYA we will send request on API endpoint. Which is faster then pinging SASJobExecution.
//For SAS9 we will send request on SASStoredProcess
const url =
this.serverType === 'SASVIYA'
? `${this.serverUrl}/identities`
: `${this.serverUrl}/SASStoredProcess`
const { result: loginResponse } = await this.requestClient
.get<string>(url, undefined, 'text/plain')
.catch((err: any) => {
return { result: 'authErr' }
})
const isLoggedIn = loginResponse !== 'authErr'
let loginForm = null
if (!isLoggedIn) {
loginForm = await this.getLoginForm(responseText)
//We will logout to make sure cookies are removed and login form is presented
this.logOut()
const { result: formResponse } = await this.requestClient.get<string>(
this.loginUrl.replace('.do', ''),
undefined,
'text/plain'
)
loginForm = await this.getLoginForm(formResponse)
}
return Promise.resolve({

View File

@@ -176,41 +176,19 @@ describe('AuthManager', () => {
const response = await authManager.checkSession()
expect(response.isLoggedIn).toBeTruthy()
expect(mockedAxios.get).toHaveBeenNthCalledWith(1, `/SASLogon/login`, {
withCredentials: true,
responseType: 'text',
transformResponse: undefined,
headers: {
Accept: '*/*',
'Content-Type': 'text/plain'
expect(mockedAxios.get).toHaveBeenNthCalledWith(
1,
`http://test-server.com/identities`,
{
withCredentials: true,
responseType: 'text',
transformResponse: undefined,
headers: {
Accept: '*/*',
'Content-Type': 'text/plain'
}
}
})
done()
})
it('should check and return session information if logged in', async (done) => {
const authManager = new AuthManager(
serverUrl,
serverType,
requestClient,
authCallback
)
mockedAxios.get.mockImplementation(() =>
Promise.resolve({ data: '<button onClick="logout">' })
)
const response = await authManager.checkSession()
expect(response.isLoggedIn).toBeTruthy()
expect(mockedAxios.get).toHaveBeenNthCalledWith(1, `/SASLogon/login`, {
withCredentials: true,
responseType: 'text',
transformResponse: undefined,
headers: {
Accept: '*/*',
'Content-Type': 'text/plain'
}
})
done()
})