1
0
mirror of https://github.com/sasjs/adapter.git synced 2026-01-08 21:10:05 +00:00

Merge pull request #667 from sasjs/sas-viya-auth-code-responses

fix: raising error with details we get from server
This commit is contained in:
Allan Bowe
2022-03-09 11:34:40 +02:00
committed by GitHub
3 changed files with 25 additions and 6 deletions

View File

@@ -557,8 +557,18 @@ export class RequestClient implements HttpClient {
} }
export const throwIfError = (response: AxiosResponse) => { export const throwIfError = (response: AxiosResponse) => {
if (response.status === 401) { switch (response.status) {
throw new LoginRequiredError() case 400:
if (typeof response.data === 'object') {
throw new LoginRequiredError(response.data)
}
break
case 401:
if (typeof response.data === 'object') {
throw new LoginRequiredError(response.data)
} else {
throw new LoginRequiredError()
}
} }
if (response.data?.entityID?.includes('login')) { if (response.data?.entityID?.includes('login')) {

View File

@@ -30,6 +30,11 @@ const ERROR_MESSAGES = {
CCA: 'unable to verify the first certificate' CCA: 'unable to verify the first certificate'
} }
const incorrectAuthCodeErr = {
error: 'unauthorized',
error_description: 'Bad credentials'
}
describe('RequestClient', () => { describe('RequestClient', () => {
let server: http.Server let server: http.Server
@@ -65,7 +70,7 @@ describe('RequestClient', () => {
adapter.getAccessToken('clientId', 'clientSecret', 'incorrect') adapter.getAccessToken('clientId', 'clientSecret', 'incorrect')
).rejects.toEqual( ).rejects.toEqual(
prefixMessage( prefixMessage(
new LoginRequiredError(), new LoginRequiredError(incorrectAuthCodeErr),
'Error while getting access token. ' 'Error while getting access token. '
) )
) )
@@ -246,7 +251,7 @@ describe('RequestClient - Self Signed Server', () => {
adapter.getAccessToken('clientId', 'clientSecret', 'incorrect') adapter.getAccessToken('clientId', 'clientSecret', 'incorrect')
).rejects.toEqual( ).rejects.toEqual(
prefixMessage( prefixMessage(
new LoginRequiredError(), new LoginRequiredError(incorrectAuthCodeErr),
'Error while getting access token. ' 'Error while getting access token. '
) )
) )

View File

@@ -1,6 +1,10 @@
export class LoginRequiredError extends Error { export class LoginRequiredError extends Error {
constructor() { constructor(details?: any) {
super('Auth error: You must be logged in to access this resource') const message = details
? JSON.stringify(details, null, 2)
: 'You must be logged in to access this resource'
super(`Auth error: ${message}`)
this.name = 'LoginRequiredError' this.name = 'LoginRequiredError'
Object.setPrototypeOf(this, LoginRequiredError.prototype) Object.setPrototypeOf(this, LoginRequiredError.prototype)
} }