test: cover lossless custom metrics IDs

This commit is contained in:
Oskar Eichler 2026-08-28 13:28:36 +03:00
parent 0f77081123
commit b56c021013

View file

@ -427,4 +427,34 @@ describe('PrometheusManagerMetrics', () => {
expect(bytesTransferredByUserId['access-key-2']).toEqual(10000);
done();
});
it('preserves custom access key IDs in server metrics', async () => {
const accessKeyIds = ['custom-id', '001', '9007199254740993'];
const prometheusClient = {
query: async (query: string): Promise<QueryResultData> => {
if (query.includes('shadowsocks_data_bytes{')) {
return {
resultType: 'vector',
result: accessKeyIds.map((accessKey, index) => ({
metric: {access_key: accessKey},
value: [1, String(index + 1)],
})),
};
}
return {resultType: 'vector', result: []};
},
queryRange: async (query: string): Promise<QueryResultData> => {
if (query.includes('shadowsocks_data_bytes_per_location')) {
return {resultType: 'matrix', result: [{metric: {}, values: []}]};
}
return {resultType: 'matrix', result: []};
},
} as PrometheusClient;
const managerMetrics = new PrometheusManagerMetrics(prometheusClient);
const serverMetrics = await managerMetrics.getServerMetrics({seconds: 0});
expect(serverMetrics.accessKeys.map((entry) => entry.accessKeyId)).toEqual(accessKeyIds);
});
});