Typescript - Аргумент типа 'ICreateJwksContextReturn' не может быть назначен параметру типа 'APIGatewayProxyEvent' - PullRequest
0 голосов
/ 15 октября 2019

КОНТЕКСТ

Я относительно новичок в Typescript и получил ошибку, которую совсем не понимаю. Мне интересно, может ли кто-нибудь объяснить, почему что-то подобное может произойти, когда, как мне кажется, этого не должно быть.

Если я сделаю createJwksContext return any, эта ошибка исчезнет. В настоящее время я делаю это, и мне не нужно, чтобы это было специально напечатано. Но было бы неплохо понять, что WTF продолжается!

ПРОБЛЕМА

Полная ошибка:

Argument of type 'ICreateJwksContextReturn' is not assignable to parameter of type 'APIGatewayProxyEvent'.

Type 'ICreateJwksContextReturn' is missing the following properties from type 'APIGatewayProxyEvent': body, headers, multiValueHeaders, httpMethod, and 8 more.

const authCheck = await authInstance.checkScopesAndResolve(mockedEvent, ['test scope']);

RELEVANT CODE

ТИПЫ

export interface IAuth {
  checkScopesAndResolve: (arg0: APIGatewayProxyEvent, arg1: [string]) => Promise<boolean>;
}

export interface IModifiedObject {
  [name: string]: string
}

export interface IJwksClientMock {
  start: () => void;
  stop: () => Promise<void>;
  kid: () => string;
  token: (token: {}) => string;
}

export interface ICreateJwksContextReturn {
  accessToken: string;
  jwksMock: IJwksClientMock;
}

ФУНКЦИИ

function customMockedEvent(modificationObject: IModifiedObject): APIGatewayProxyEvent {
  return {
      ...
    }
}

function createJwksContext(userObject: { sub: string, scope: string} = { sub: 'test user', scope: 'test scope'}): ICreateJwksContextReturn {
    ....
   return { accessToken, jwksMock };
}

TEST - где ошибка на самом деле происходит.

it('Returned - No scopes supplied!', async (done) => {
        const {accessToken, jwksMock} = await createJwksContext({
          sub: 'test user',
          scope: '',
        })
        done();

        console.log('accessToken', accessToken);
        const accessToken1 = 'blad'

        const mockedEvent: APIGatewayProxyEvent  = customMockedEvent({
          authorization: `Bearer ${accessToken1}`
        }) as APIGatewayProxyEvent;
        console.log('mockedEvent', mockedEvent);


        const authInstance = new Auth();

        expect( async () => {
          await authInstance.checkScopesAndResolve(mockedEvent, ['test scope']);
          done();
        }).toThrow('No scopes supplied!');
        jwksMock.stop();
      })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...