Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Mocking Remote Authorizers broken since v13.x #1826

Open
tbehunin opened this issue Oct 14, 2024 · 1 comment
Open

Mocking Remote Authorizers broken since v13.x #1826

tbehunin opened this issue Oct 14, 2024 · 1 comment

Comments

@tbehunin
Copy link

Bug Report

Current Behavior

From (at least) version 9.x up through 12.x, we were able to mock authorizers, based on what the readme currently says:

Remote authorizers

You are able to mock the response from remote authorizers by setting the environmental variable AUTHORIZER before running sls offline start

Example:

Unix: export AUTHORIZER='{"principalId": "123"}'

Windows: SET AUTHORIZER='{"principalId": "123"}'

Ever since 13.x was released, this fails to work.

Sample Code

  • file: serverless.yml
service: sls-playground

provider:
  name: aws
  runtime: nodejs16.x

custom:
  serverless-offline:
    httpPort: 4000
    websocketPort: 4001
    lambdaPort: 4002

functions:
  hello:
    handler: handler.hello
    events:
      - httpApi:
          path: /
          method: get

plugins:
  - serverless-offline
  • file: handler.js
exports.hello = async (event) => {
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: "Go Serverless v4! Your function executed successfully!",
      event
    }),
  };
};

Run the following from a terminal window:

export AUTHORIZER='{"principalId":"123"}' && sls offline start

Expected behavior/code

The event.requestContext object should have an authorizer prop with what was set on the terminal:

    "requestContext": {
      "accountId": "offlineContext_accountId",
      "apiId": "offlineContext_apiId",
      "authorizer": {
        "principalId": "123"
      },

Environment

  • serverless version: 4.4.5
  • serverless-offline version: 12.0.4 WORKS, but anything after (13.x+, 14.x+) is broken
  • node.js version: 22.9.0
  • OS: macOS 15.0.1

Possible Solution

PR that introduced this feature: #475

Additional context/Screenshots

@cullylarson
Copy link

cullylarson commented Oct 31, 2024

It may have been broken by #1786. That PR removes the authorizer prop if no authorizer is configured for the endpoint. Downgrading to serverless-offline: "13.5.0" resolved it for me, at least for now.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants