
Security News
/Research
Wallet-Draining npm Package Impersonates Nodemailer to Hijack Crypto Transactions
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
@slack-wrench/fixtures
Advanced tools
This package contains type-safe fixtures and application wrappers for testing slack applications.
yarn add --dev @slack-wrench/fixtures
# or
npm install --save-dev @slack-wrench/fixtures
Currently, we only support a subset of Slack's Event's API. We're implementing them as we need them and hope to have others do the same.
import { events } from '@slack-wrench/fixtures';
events.message(
text: string,
options: Partial<MessageEvent> = {},
)
// : MessageEvent => { text, user, ts, ... }
Creates a message event.
Arguments:
text
: Text sent in the messageoptions
: Any MessageEvent fields to override from default.Returns: Object containing a message event
import { slashCommand } from '@slack-wrench/fixtures';
slashCommand(
command: string,
options?: Partial<SlashCommand>,
)
// : SlashCommand => { command, user_id, team_id, ... }
Creates a slash command event.
Example:
// sending a text field
slashCommand('/command', { text: 'I just used a command!' });
Arguments:
command
: command nameoptions
: Any SlashCommand fields to override from default.Returns: Object containing a Slash Command event
import { actions } from '@slack-wrench/fixtures';
actions.blockButtonAction(
action?: Partial<ButtonAction>,
options?: Partial<BlockButtonAction>,
)
// : BlockButtonAction => { type: 'block_actions', actions: [ { type: 'button', ...} ], user, ... }
Creates an event from a block button action.
Arguments:
action
: Overrides to ButtonAction values (normally a subset of { action_id, block_id, value }
options
: Any fields to override on the default BlockAction eventReturns: Object containing a block action event
view.viewSubmitAction(
view?: Partial<ViewOutput>,
options?: Partial<BlockButtonAction>,
)
// : ViewSubmitAction => { type: 'view_submission', view: { id: 'editView', state: {}, ...} ], user, ... }
Creates an event from a view submit action.
Arguments:
view
: Overrides to ViewOutput values, on ViewSubmitAction.view
options
: Any fields to override on the default ViewSubmitAction eventReturns: Object containing a view submit action event
import { fields } from '@slack-wrench/fixtures';
The fields returned for all of the fixtures are set and accessible through fields
. This can be really helpful when writing tests. It also enables you to change the fields if you need them to be specific.
All of the fields used by fixtures can be overridden globally. This might be helpful if you need something like the team
domain
and id
to be specific for your app.
// Here are a few examples of things you can change. This will affect all fixtures.
// Update the team id
fields.team.id = 'TANOTHERTEAM';
fields.team.domain = 'another-team';
// or as an object
fields.team = {
id: 'TANOTHERTEAM',
domain: 'another-team',
};
// Update the callback_id
fields.callback_id = 'FancyCallbackId';
If you want to reset the fields to their original values, you can call reset
. This is potentially helpful in testing hooks.
beforeEach(() => {
fields.reset();
});
import { ServerlessTester } from '@slack-wrench/fixtures';
A helper class for testing root level applications exposing slack endpoints.
import { ServerlessTester } from '@slack-wrench/fixtures';
import { App, ExpressReceiver } from '@slack/bolt';
const receiver = new ExpressReceiver({ signingSecret, endpoints });
const app = new App({ receiver, token });
handler = new ServerlessTester(receiver.app, signingSecret);
Arguments:
application
: App to test, supports any framework that serverless-http
does eg: Express and KoasigningSecret
: Secret to sign all requests with, this should be the same string your application uses to verify requests.Use handler.sendSlackEvent
to send Slack fixture events to your application.
const result = await handler.sendSlackEvent(slashCommand(command));
expect(result.statusCode).toEqual(200);
Arguments:
event
: Fixture/Slack event to simulate.path
: a path to POST
the event to, defaults to /slack/events
, Bolt's default.Use handler.sendHttp
to send any http event to your application.
const result = await handler.sendHttp({
body: 'How are you?',
httpMethod: 'GET',
path: '/',
});
expect(result.statusCode).toEqual(200);
Arguments:
event
: Request event to simulate.path
: a path to POST
the event to, defaults to /slack/events
, Bolt's default.FAQs
Slack api fixtures for testing
The npm package @slack-wrench/fixtures receives a total of 120 weekly downloads. As such, @slack-wrench/fixtures popularity was classified as not popular.
We found that @slack-wrench/fixtures demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.