mirror of
https://github.com/alexgo-io/stacks-blockchain-api.git
synced 2026-01-12 22:43:34 +08:00
feat: disable rosetta via an ENV var (#1804)
This commit is contained in:
3
.env
3
.env
@@ -122,6 +122,9 @@ STACKS_NODE_TYPE=L1
|
||||
# Override the default file path for the proxy cache control file
|
||||
# STACKS_API_PROXY_CACHE_CONTROL_FILE=/path/to/.proxy-cache-control.json
|
||||
|
||||
# Enable Rosetta endpoints.
|
||||
# STACKS_API_ENABLE_ROSETTA=1
|
||||
|
||||
# Enable FT metadata processing for Rosetta operations display. Disabled by default.
|
||||
# STACKS_API_ENABLE_FT_METADATA=1
|
||||
|
||||
|
||||
@@ -42,7 +42,13 @@ import { PgWriteStore } from '../datastore/pg-write-store';
|
||||
import { WebSocketTransmitter } from './routes/ws/web-socket-transmitter';
|
||||
import { createPoxEventsRouter } from './routes/pox';
|
||||
import { logger, loggerMiddleware } from '../logger';
|
||||
import { SERVER_VERSION, isPgConnectionError, isProdEnv, waiter } from '@hirosystems/api-toolkit';
|
||||
import {
|
||||
SERVER_VERSION,
|
||||
isPgConnectionError,
|
||||
isProdEnv,
|
||||
parseBoolean,
|
||||
waiter,
|
||||
} from '@hirosystems/api-toolkit';
|
||||
import { createV2BlocksRouter } from './routes/v2/blocks';
|
||||
import { getReqQuery } from './query-helpers';
|
||||
import { createV2BurnBlocksRouter } from './routes/v2/burn-blocks';
|
||||
@@ -263,19 +269,20 @@ export async function startApiServer(opts: {
|
||||
);
|
||||
|
||||
// Rosetta API -- https://www.rosetta-api.org
|
||||
app.use(
|
||||
'/rosetta/v1',
|
||||
(() => {
|
||||
const router = express.Router();
|
||||
router.use(cors());
|
||||
router.use('/network', createRosettaNetworkRouter(datastore, chainId));
|
||||
router.use('/mempool', createRosettaMempoolRouter(datastore, chainId));
|
||||
router.use('/block', createRosettaBlockRouter(datastore, chainId));
|
||||
router.use('/account', createRosettaAccountRouter(datastore, chainId));
|
||||
router.use('/construction', createRosettaConstructionRouter(datastore, chainId));
|
||||
return router;
|
||||
})()
|
||||
);
|
||||
if (parseBoolean(process.env['STACKS_API_ENABLE_ROSETTA'] ?? '1'))
|
||||
app.use(
|
||||
'/rosetta/v1',
|
||||
(() => {
|
||||
const router = express.Router();
|
||||
router.use(cors());
|
||||
router.use('/network', createRosettaNetworkRouter(datastore, chainId));
|
||||
router.use('/mempool', createRosettaMempoolRouter(datastore, chainId));
|
||||
router.use('/block', createRosettaBlockRouter(datastore, chainId));
|
||||
router.use('/account', createRosettaAccountRouter(datastore, chainId));
|
||||
router.use('/construction', createRosettaConstructionRouter(datastore, chainId));
|
||||
return router;
|
||||
})()
|
||||
);
|
||||
|
||||
// Setup legacy API v1 and v2 routes
|
||||
app.use(
|
||||
|
||||
33
src/tests-rosetta/disable-api.ts
Normal file
33
src/tests-rosetta/disable-api.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import * as supertest from 'supertest';
|
||||
import { PgSqlClient } from "@hirosystems/api-toolkit";
|
||||
import { ChainID } from "@stacks/common";
|
||||
import { ApiServer, startApiServer } from "../api/init";
|
||||
import { PgWriteStore } from "../datastore/pg-write-store";
|
||||
import { migrate } from "../test-utils/test-helpers";
|
||||
|
||||
describe('Rosetta API toggle', () => {
|
||||
let db: PgWriteStore;
|
||||
let client: PgSqlClient;
|
||||
let api: ApiServer;
|
||||
|
||||
beforeEach(async () => {
|
||||
process.env.STACKS_CHAIN_ID = '0x80000000';
|
||||
await migrate('up');
|
||||
db = await PgWriteStore.connect({ usageName: 'tests' });
|
||||
client = db.sql;
|
||||
process.env.STACKS_API_ENABLE_ROSETTA = '0';
|
||||
api = await startApiServer({ datastore: db, chainId: ChainID.Testnet });
|
||||
});
|
||||
|
||||
test('rosetta is disabled', async () => {
|
||||
const query1 = await supertest(api.server).post(`/rosetta/v1/network/list`);
|
||||
expect(query1.status).toBe(404);
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await api.terminate();
|
||||
process.env.STACKS_API_ENABLE_ROSETTA = '1';
|
||||
await db?.close();
|
||||
await migrate('down');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user