@book000/node-utils 1.24.123 → 1.24.125
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/dist/__tests__/configuration.test.d.ts +0 -2
- package/dist/__tests__/configuration.test.d.ts.map +0 -1
- package/dist/__tests__/configuration.test.js +0 -159
- package/dist/__tests__/configuration.test.js.map +0 -1
- package/dist/__tests__/discord.test.d.ts +0 -2
- package/dist/__tests__/discord.test.d.ts.map +0 -1
- package/dist/__tests__/discord.test.js +0 -362
- package/dist/__tests__/discord.test.js.map +0 -1
- package/dist/__tests__/logger.test.d.ts +0 -2
- package/dist/__tests__/logger.test.d.ts.map +0 -1
- package/dist/__tests__/logger.test.js +0 -268
- package/dist/__tests__/logger.test.js.map +0 -1
- package/dist/configuration.d.ts +0 -12
- package/dist/configuration.d.ts.map +0 -1
- package/dist/configuration.js +0 -54
- package/dist/configuration.js.map +0 -1
- package/dist/discord.d.ts +0 -125
- package/dist/discord.d.ts.map +0 -1
- package/dist/discord.js +0 -164
- package/dist/discord.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -20
- package/dist/index.js.map +0 -1
- package/dist/logger.d.ts +0 -11
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -160
- package/dist/logger.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@book000/node-utils",
|
|
3
|
-
"version": "1.24.
|
|
3
|
+
"version": "1.24.125",
|
|
4
4
|
"description": "Self-Utility library",
|
|
5
5
|
"homepage": "https://github.com/book000/node-utils",
|
|
6
6
|
"bugs": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"winston-daily-rotate-file": "5.0.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@book000/eslint-config": "1.14.
|
|
30
|
+
"@book000/eslint-config": "1.14.8",
|
|
31
31
|
"@types/jest": "30.0.0",
|
|
32
32
|
"@types/node": "25.5.2",
|
|
33
33
|
"ctix": "2.7.5",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"run-z": "2.1.0",
|
|
45
45
|
"ts-jest": "29.4.9",
|
|
46
46
|
"tsx": "4.21.0",
|
|
47
|
-
"typescript": "
|
|
47
|
+
"typescript": "6.0.2",
|
|
48
48
|
"winston": "3.19.0",
|
|
49
49
|
"winston-daily-rotate-file": "5.0.0",
|
|
50
50
|
"yarn-run-all": "3.1.1"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/configuration.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
7
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
-
const configuration_1 = require("../configuration");
|
|
9
|
-
const node_os_1 = __importDefault(require("node:os"));
|
|
10
|
-
class TestConfigFramework extends configuration_1.ConfigFramework {
|
|
11
|
-
validates() {
|
|
12
|
-
return {
|
|
13
|
-
'name is string': (config) => typeof config.name === 'string',
|
|
14
|
-
'value is number': (config) => typeof config.value === 'number',
|
|
15
|
-
'flag is boolean': (config) => typeof config.flag === 'boolean',
|
|
16
|
-
'nested.key is string': (config) => {
|
|
17
|
-
if (!config.nested)
|
|
18
|
-
return true;
|
|
19
|
-
return typeof config.nested.key === 'string';
|
|
20
|
-
},
|
|
21
|
-
'value is greater than zero': (config) => config.value > 0,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
describe('ConfigFramework', () => {
|
|
26
|
-
const tempDir = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'config-test-'));
|
|
27
|
-
const validConfigPath = node_path_1.default.join(tempDir, 'valid-config.json');
|
|
28
|
-
const invalidConfigPath = node_path_1.default.join(tempDir, 'invalid-config.json');
|
|
29
|
-
const invalidJsonConfigPath = node_path_1.default.join(tempDir, 'invalid-json-config.json');
|
|
30
|
-
beforeAll(() => {
|
|
31
|
-
node_fs_1.default.writeFileSync(validConfigPath, JSON.stringify({
|
|
32
|
-
name: 'test',
|
|
33
|
-
value: 10,
|
|
34
|
-
flag: true,
|
|
35
|
-
nested: {
|
|
36
|
-
key: 'nested-value',
|
|
37
|
-
},
|
|
38
|
-
}));
|
|
39
|
-
node_fs_1.default.writeFileSync(invalidConfigPath, JSON.stringify({
|
|
40
|
-
name: 'test',
|
|
41
|
-
value: -5,
|
|
42
|
-
flag: 'invalid',
|
|
43
|
-
}));
|
|
44
|
-
node_fs_1.default.writeFileSync(invalidJsonConfigPath, '{ invalid json');
|
|
45
|
-
});
|
|
46
|
-
afterAll(() => {
|
|
47
|
-
node_fs_1.default.rmSync(tempDir, { recursive: true, force: true });
|
|
48
|
-
});
|
|
49
|
-
describe('constructor', () => {
|
|
50
|
-
it('should use the path provided as an argument when it exists', () => {
|
|
51
|
-
const config = new TestConfigFramework(validConfigPath);
|
|
52
|
-
expect(config).toBeDefined();
|
|
53
|
-
});
|
|
54
|
-
it('should use CONFIG_PATH environment variable when it exists', () => {
|
|
55
|
-
const originalConfigPath = process.env.CONFIG_PATH;
|
|
56
|
-
process.env.CONFIG_PATH = validConfigPath;
|
|
57
|
-
try {
|
|
58
|
-
const config = new TestConfigFramework();
|
|
59
|
-
expect(config).toBeDefined();
|
|
60
|
-
}
|
|
61
|
-
finally {
|
|
62
|
-
process.env.CONFIG_PATH = originalConfigPath;
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
it('should use CONFIG_FILE environment variable when it exists and CONFIG_PATH is not defined', () => {
|
|
66
|
-
const originalConfigPath = process.env.CONFIG_PATH;
|
|
67
|
-
const originalConfigFile = process.env.CONFIG_FILE;
|
|
68
|
-
delete process.env.CONFIG_PATH;
|
|
69
|
-
process.env.CONFIG_FILE = validConfigPath;
|
|
70
|
-
try {
|
|
71
|
-
const config = new TestConfigFramework();
|
|
72
|
-
expect(config).toBeDefined();
|
|
73
|
-
}
|
|
74
|
-
finally {
|
|
75
|
-
process.env.CONFIG_PATH = originalConfigPath;
|
|
76
|
-
process.env.CONFIG_FILE = originalConfigFile;
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
it('should throw an error when no valid path is provided', () => {
|
|
80
|
-
const originalConfigPath = process.env.CONFIG_PATH;
|
|
81
|
-
const originalConfigFile = process.env.CONFIG_FILE;
|
|
82
|
-
delete process.env.CONFIG_PATH;
|
|
83
|
-
delete process.env.CONFIG_FILE;
|
|
84
|
-
try {
|
|
85
|
-
expect(() => new TestConfigFramework('non-existent-file.json')).toThrow('Config path not found');
|
|
86
|
-
}
|
|
87
|
-
finally {
|
|
88
|
-
process.env.CONFIG_PATH = originalConfigPath;
|
|
89
|
-
process.env.CONFIG_FILE = originalConfigFile;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
describe('load', () => {
|
|
94
|
-
it('should load a valid config file', () => {
|
|
95
|
-
const config = new TestConfigFramework(validConfigPath);
|
|
96
|
-
expect(() => {
|
|
97
|
-
config.load();
|
|
98
|
-
}).not.toThrow();
|
|
99
|
-
});
|
|
100
|
-
it('should load but resulting in incomplete parsing when JSON is invalid', () => {
|
|
101
|
-
const config = new TestConfigFramework(invalidJsonConfigPath);
|
|
102
|
-
expect(() => {
|
|
103
|
-
config.load();
|
|
104
|
-
}).not.toThrow();
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
describe('validate', () => {
|
|
108
|
-
it('should validate a valid config successfully', () => {
|
|
109
|
-
const config = new TestConfigFramework(validConfigPath);
|
|
110
|
-
config.load();
|
|
111
|
-
const result = config.validate();
|
|
112
|
-
expect(result).toBeTruthy();
|
|
113
|
-
expect(config.getValidateFailures()).toHaveLength(0);
|
|
114
|
-
});
|
|
115
|
-
it('should fail validation for an invalid config', () => {
|
|
116
|
-
const config = new TestConfigFramework(invalidConfigPath);
|
|
117
|
-
config.load();
|
|
118
|
-
const result = config.validate();
|
|
119
|
-
expect(result).toBeFalsy();
|
|
120
|
-
const failures = config.getValidateFailures();
|
|
121
|
-
expect(failures).toContain('flag is boolean');
|
|
122
|
-
expect(failures).toContain('value is greater than zero');
|
|
123
|
-
});
|
|
124
|
-
it('should throw an error when config is not loaded', () => {
|
|
125
|
-
const config = new TestConfigFramework(validConfigPath);
|
|
126
|
-
expect(() => config.validate()).toThrow('Config not loaded');
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
describe('get', () => {
|
|
130
|
-
it('should get a config value by key', () => {
|
|
131
|
-
const config = new TestConfigFramework(validConfigPath);
|
|
132
|
-
config.load();
|
|
133
|
-
expect(config.get('name')).toBe('test');
|
|
134
|
-
expect(config.get('value')).toBe(10);
|
|
135
|
-
expect(config.get('flag')).toBe(true);
|
|
136
|
-
expect(config.get('nested')).toEqual({ key: 'nested-value' });
|
|
137
|
-
});
|
|
138
|
-
it('should throw an error when config is not loaded', () => {
|
|
139
|
-
const config = new TestConfigFramework(validConfigPath);
|
|
140
|
-
expect(() => config.get('name')).toThrow('Config not loaded');
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
describe('getValidateFailures', () => {
|
|
144
|
-
it('should return an empty array if no validation has been run', () => {
|
|
145
|
-
const config = new TestConfigFramework(validConfigPath);
|
|
146
|
-
config.load();
|
|
147
|
-
expect(config.getValidateFailures()).toHaveLength(0);
|
|
148
|
-
});
|
|
149
|
-
it('should return failed validation rules', () => {
|
|
150
|
-
const config = new TestConfigFramework(invalidConfigPath);
|
|
151
|
-
config.load();
|
|
152
|
-
config.validate();
|
|
153
|
-
const failures = config.getValidateFailures();
|
|
154
|
-
expect(failures).toContain('flag is boolean');
|
|
155
|
-
expect(failures).toContain('value is greater than zero');
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
//# sourceMappingURL=configuration.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.test.js","sourceRoot":"","sources":["../../src/__tests__/configuration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discord.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/discord.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,362 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const axios_1 = __importDefault(require("axios"));
|
|
7
|
-
const discord_1 = require("../discord");
|
|
8
|
-
const form_data_1 = __importDefault(require("form-data"));
|
|
9
|
-
jest.mock('axios');
|
|
10
|
-
const mockedAxios = axios_1.default;
|
|
11
|
-
const originalFormDataAppend = form_data_1.default.prototype.append;
|
|
12
|
-
form_data_1.default.prototype.append = jest.fn(function (_field, _value, _options) {
|
|
13
|
-
return {};
|
|
14
|
-
});
|
|
15
|
-
const originalFormDataGetHeaders = form_data_1.default.prototype.getHeaders;
|
|
16
|
-
form_data_1.default.prototype.getHeaders = jest.fn(function () {
|
|
17
|
-
return {
|
|
18
|
-
'content-type': 'multipart/form-data; boundary=---------------------------1234',
|
|
19
|
-
};
|
|
20
|
-
});
|
|
21
|
-
const LinkStyle = 5;
|
|
22
|
-
describe('Discord', () => {
|
|
23
|
-
beforeEach(() => {
|
|
24
|
-
jest.clearAllMocks();
|
|
25
|
-
mockedAxios.post.mockResolvedValue({
|
|
26
|
-
status: 200,
|
|
27
|
-
data: { id: 'mock-message-id' },
|
|
28
|
-
});
|
|
29
|
-
mockedAxios.patch.mockResolvedValue({ status: 200, data: {} });
|
|
30
|
-
jest.clearAllMocks();
|
|
31
|
-
});
|
|
32
|
-
afterAll(() => {
|
|
33
|
-
form_data_1.default.prototype.append = originalFormDataAppend;
|
|
34
|
-
form_data_1.default.prototype.getHeaders = originalFormDataGetHeaders;
|
|
35
|
-
});
|
|
36
|
-
describe('constructor', () => {
|
|
37
|
-
it('should initialize with bot options', () => {
|
|
38
|
-
const options = { token: 'test-token', channelId: 'test-channel' };
|
|
39
|
-
const discord = new discord_1.Discord(options);
|
|
40
|
-
expect(discord).toBeDefined();
|
|
41
|
-
});
|
|
42
|
-
it('should initialize with webhook options', () => {
|
|
43
|
-
const options = { webhookUrl: 'https://discord.com/api/webhooks/123/abc' };
|
|
44
|
-
const discord = new discord_1.Discord(options);
|
|
45
|
-
expect(discord).toBeDefined();
|
|
46
|
-
});
|
|
47
|
-
it('should throw an error with invalid options', () => {
|
|
48
|
-
const options = { invalidOption: 'test' };
|
|
49
|
-
expect(() => new discord_1.Discord(options)).toThrow('Invalid options');
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
describe('validations', () => {
|
|
53
|
-
const validations = discord_1.Discord.validations;
|
|
54
|
-
it('should validate token or webhookUrl and channelId', () => {
|
|
55
|
-
expect(validations['token or webhookUrl and channelId']({ token: 'test' })).toBe(true);
|
|
56
|
-
expect(validations['token or webhookUrl and channelId']({
|
|
57
|
-
webhookUrl: 'test',
|
|
58
|
-
channelId: 'test',
|
|
59
|
-
})).toBe(true);
|
|
60
|
-
expect(validations['token or webhookUrl and channelId']({})).toBe(false);
|
|
61
|
-
});
|
|
62
|
-
it('should validate token is valid', () => {
|
|
63
|
-
expect(validations['token is valid']({ token: 'test' })).toBe(true);
|
|
64
|
-
expect(validations['token is valid']({ token: 123 })).toBe(false);
|
|
65
|
-
expect(validations['token is valid']({})).toBe(false);
|
|
66
|
-
});
|
|
67
|
-
it('should validate webhookUrl is valid', () => {
|
|
68
|
-
expect(validations['webhookUrl is valid']({ webhookUrl: 'test' })).toBe(true);
|
|
69
|
-
expect(validations['webhookUrl is valid']({ webhookUrl: 123 })).toBe(false);
|
|
70
|
-
expect(validations['webhookUrl is valid']({})).toBe(false);
|
|
71
|
-
});
|
|
72
|
-
it('should validate channelId is valid', () => {
|
|
73
|
-
expect(validations['channelId is valid']({ channelId: 'test' })).toBe(true);
|
|
74
|
-
expect(validations['channelId is valid']({ channelId: 123 })).toBe(false);
|
|
75
|
-
expect(validations['channelId is valid']({})).toBe(false);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
describe('sendMessage', () => {
|
|
79
|
-
it('should send a string message via bot', async () => {
|
|
80
|
-
const discord = new discord_1.Discord({
|
|
81
|
-
token: 'test-token',
|
|
82
|
-
channelId: 'test-channel',
|
|
83
|
-
});
|
|
84
|
-
const messageId = await discord.sendMessage('Test message');
|
|
85
|
-
expect(mockedAxios.post).toHaveBeenCalled();
|
|
86
|
-
expect(messageId).toBe('mock-message-id');
|
|
87
|
-
const call = mockedAxios.post.mock.calls[0];
|
|
88
|
-
expect(call[0]).toContain('/channels/test-channel/messages');
|
|
89
|
-
expect(call[2]?.headers).toHaveProperty('Authorization', 'Bot test-token');
|
|
90
|
-
});
|
|
91
|
-
it('should send an embed message via bot', async () => {
|
|
92
|
-
const discord = new discord_1.Discord({
|
|
93
|
-
token: 'test-token',
|
|
94
|
-
channelId: 'test-channel',
|
|
95
|
-
});
|
|
96
|
-
const embeds = [
|
|
97
|
-
{
|
|
98
|
-
title: 'Test Title',
|
|
99
|
-
description: 'Test Description',
|
|
100
|
-
color: 16711680,
|
|
101
|
-
},
|
|
102
|
-
];
|
|
103
|
-
const messageId = await discord.sendMessage({ embeds });
|
|
104
|
-
expect(mockedAxios.post).toHaveBeenCalled();
|
|
105
|
-
expect(messageId).toBe('mock-message-id');
|
|
106
|
-
});
|
|
107
|
-
it('should send a component message via bot', async () => {
|
|
108
|
-
const discord = new discord_1.Discord({
|
|
109
|
-
token: 'test-token',
|
|
110
|
-
channelId: 'test-channel',
|
|
111
|
-
});
|
|
112
|
-
const components = [
|
|
113
|
-
{
|
|
114
|
-
type: 1,
|
|
115
|
-
components: [
|
|
116
|
-
{
|
|
117
|
-
type: 2,
|
|
118
|
-
style: LinkStyle,
|
|
119
|
-
label: 'Test Button',
|
|
120
|
-
url: 'https://example.com',
|
|
121
|
-
},
|
|
122
|
-
],
|
|
123
|
-
},
|
|
124
|
-
];
|
|
125
|
-
const messageId = await discord.sendMessage({ components });
|
|
126
|
-
expect(mockedAxios.post).toHaveBeenCalled();
|
|
127
|
-
expect(messageId).toBe('mock-message-id');
|
|
128
|
-
});
|
|
129
|
-
it('should send a file message via bot', async () => {
|
|
130
|
-
const discord = new discord_1.Discord({
|
|
131
|
-
token: 'test-token',
|
|
132
|
-
channelId: 'test-channel',
|
|
133
|
-
});
|
|
134
|
-
const file = {
|
|
135
|
-
name: 'test.txt',
|
|
136
|
-
file: new ArrayBuffer(10),
|
|
137
|
-
contentType: 'text/plain',
|
|
138
|
-
};
|
|
139
|
-
await discord.sendMessage({ file });
|
|
140
|
-
expect(form_data_1.default.prototype.append).toHaveBeenCalledWith('file', expect.anything(), expect.objectContaining({
|
|
141
|
-
filename: 'test.txt',
|
|
142
|
-
}));
|
|
143
|
-
expect(mockedAxios.post).toHaveBeenCalled();
|
|
144
|
-
});
|
|
145
|
-
it('should send a file message with spoiler via bot', async () => {
|
|
146
|
-
const discord = new discord_1.Discord({
|
|
147
|
-
token: 'test-token',
|
|
148
|
-
channelId: 'test-channel',
|
|
149
|
-
});
|
|
150
|
-
const file = {
|
|
151
|
-
name: 'test.txt',
|
|
152
|
-
file: new ArrayBuffer(10),
|
|
153
|
-
contentType: 'text/plain',
|
|
154
|
-
isSpoiler: true,
|
|
155
|
-
};
|
|
156
|
-
await discord.sendMessage({ file });
|
|
157
|
-
expect(form_data_1.default.prototype.append).toHaveBeenCalledWith('file', expect.anything(), expect.objectContaining({
|
|
158
|
-
filename: 'SPOILER_test.txt',
|
|
159
|
-
}));
|
|
160
|
-
expect(mockedAxios.post).toHaveBeenCalled();
|
|
161
|
-
});
|
|
162
|
-
it('should send a message with flags via bot', async () => {
|
|
163
|
-
const discord = new discord_1.Discord({
|
|
164
|
-
token: 'test-token',
|
|
165
|
-
channelId: 'test-channel',
|
|
166
|
-
});
|
|
167
|
-
const messageId = await discord.sendMessage({ flags: 4100 });
|
|
168
|
-
expect(mockedAxios.post).toHaveBeenCalled();
|
|
169
|
-
expect(messageId).toBe('mock-message-id');
|
|
170
|
-
});
|
|
171
|
-
it('should send a message via webhook', async () => {
|
|
172
|
-
const discord = new discord_1.Discord({
|
|
173
|
-
webhookUrl: 'https://discord.com/api/webhooks/123/abc',
|
|
174
|
-
});
|
|
175
|
-
const messageId = await discord.sendMessage('Test webhook message');
|
|
176
|
-
expect(mockedAxios.post).toHaveBeenCalled();
|
|
177
|
-
expect(messageId).toBe('mock-message-id');
|
|
178
|
-
const call = mockedAxios.post.mock.calls[0];
|
|
179
|
-
expect(call[0]).toContain('https://discord.com/api/webhooks/123/abc?wait=true');
|
|
180
|
-
});
|
|
181
|
-
it('should handle 204 status code for webhook messages', async () => {
|
|
182
|
-
mockedAxios.post.mockResolvedValueOnce({
|
|
183
|
-
status: 204,
|
|
184
|
-
data: {},
|
|
185
|
-
});
|
|
186
|
-
const discord = new discord_1.Discord({
|
|
187
|
-
webhookUrl: 'https://discord.com/api/webhooks/123/abc',
|
|
188
|
-
});
|
|
189
|
-
const messageId = await discord.sendMessage('Test webhook message');
|
|
190
|
-
expect(messageId).toBeUndefined();
|
|
191
|
-
});
|
|
192
|
-
it('should handle API error for bot messages', async () => {
|
|
193
|
-
mockedAxios.post.mockResolvedValueOnce({
|
|
194
|
-
status: 400,
|
|
195
|
-
data: { message: 'Bad Request' },
|
|
196
|
-
});
|
|
197
|
-
const discord = new discord_1.Discord({
|
|
198
|
-
token: 'test-token',
|
|
199
|
-
channelId: 'test-channel',
|
|
200
|
-
});
|
|
201
|
-
await expect(discord.sendMessage('Test message')).rejects.toThrow('Discord API returned 400');
|
|
202
|
-
});
|
|
203
|
-
it('should handle API error for webhook messages', async () => {
|
|
204
|
-
mockedAxios.post.mockResolvedValueOnce({
|
|
205
|
-
status: 404,
|
|
206
|
-
data: { message: 'Not Found' },
|
|
207
|
-
});
|
|
208
|
-
const discord = new discord_1.Discord({
|
|
209
|
-
webhookUrl: 'https://discord.com/api/webhooks/123/abc',
|
|
210
|
-
});
|
|
211
|
-
await expect(discord.sendMessage('Test message')).rejects.toThrow('Discord API returned 404');
|
|
212
|
-
});
|
|
213
|
-
it('should mock sendBot to throw error with webhook options', async () => {
|
|
214
|
-
mockedAxios.post.mockImplementationOnce(() => {
|
|
215
|
-
throw new Error('Invalid bot options');
|
|
216
|
-
});
|
|
217
|
-
const discord = new discord_1.Discord({
|
|
218
|
-
webhookUrl: 'https://discord.com/api/webhooks/123/abc',
|
|
219
|
-
});
|
|
220
|
-
await expect(discord.sendMessage('Test message')).rejects.toThrow();
|
|
221
|
-
});
|
|
222
|
-
it('should mock sendWebhook to throw error with bot options', async () => {
|
|
223
|
-
mockedAxios.post.mockImplementationOnce(() => {
|
|
224
|
-
throw new Error('Invalid webhook options');
|
|
225
|
-
});
|
|
226
|
-
const discord = new discord_1.Discord({
|
|
227
|
-
token: 'test-token',
|
|
228
|
-
channelId: 'test-channel',
|
|
229
|
-
});
|
|
230
|
-
await expect(discord.sendMessage('Test message')).rejects.toThrow();
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
describe('editMessage', () => {
|
|
234
|
-
it('should edit a message via bot', async () => {
|
|
235
|
-
const discord = new discord_1.Discord({
|
|
236
|
-
token: 'test-token',
|
|
237
|
-
channelId: 'test-channel',
|
|
238
|
-
});
|
|
239
|
-
await discord.editMessage('message-id', 'Updated message');
|
|
240
|
-
expect(mockedAxios.patch).toHaveBeenCalled();
|
|
241
|
-
const call = mockedAxios.patch.mock.calls[0];
|
|
242
|
-
expect(call[0]).toContain('/channels/test-channel/messages/message-id');
|
|
243
|
-
expect(call[2]?.headers).toHaveProperty('Authorization', 'Bot test-token');
|
|
244
|
-
});
|
|
245
|
-
it('should edit an embed message via bot', async () => {
|
|
246
|
-
const discord = new discord_1.Discord({
|
|
247
|
-
token: 'test-token',
|
|
248
|
-
channelId: 'test-channel',
|
|
249
|
-
});
|
|
250
|
-
const embeds = [
|
|
251
|
-
{
|
|
252
|
-
title: 'Updated Title',
|
|
253
|
-
description: 'Updated Description',
|
|
254
|
-
color: 65280,
|
|
255
|
-
},
|
|
256
|
-
];
|
|
257
|
-
await discord.editMessage('message-id', { embeds });
|
|
258
|
-
expect(mockedAxios.patch).toHaveBeenCalled();
|
|
259
|
-
});
|
|
260
|
-
it('should edit a file message via bot', async () => {
|
|
261
|
-
const discord = new discord_1.Discord({
|
|
262
|
-
token: 'test-token',
|
|
263
|
-
channelId: 'test-channel',
|
|
264
|
-
});
|
|
265
|
-
const file = {
|
|
266
|
-
name: 'updated.txt',
|
|
267
|
-
file: new ArrayBuffer(10),
|
|
268
|
-
contentType: 'text/plain',
|
|
269
|
-
};
|
|
270
|
-
await discord.editMessage('message-id', { file });
|
|
271
|
-
expect(form_data_1.default.prototype.append).toHaveBeenCalledWith('file', expect.anything(), expect.objectContaining({
|
|
272
|
-
filename: 'updated.txt',
|
|
273
|
-
contentType: 'text/plain',
|
|
274
|
-
}));
|
|
275
|
-
expect(mockedAxios.patch).toHaveBeenCalled();
|
|
276
|
-
});
|
|
277
|
-
it('should edit a message via webhook', async () => {
|
|
278
|
-
const discord = new discord_1.Discord({
|
|
279
|
-
webhookUrl: 'https://discord.com/api/webhooks/123/abc',
|
|
280
|
-
});
|
|
281
|
-
await discord.editMessage('message-id', 'Updated webhook message');
|
|
282
|
-
expect(mockedAxios.patch).toHaveBeenCalled();
|
|
283
|
-
const call = mockedAxios.patch.mock.calls[0];
|
|
284
|
-
expect(call[0]).toContain('https://discord.com/api/webhooks/123/abc?wait=true/messages/message-id');
|
|
285
|
-
});
|
|
286
|
-
it('should handle 204 status code for webhook message edit', async () => {
|
|
287
|
-
mockedAxios.patch.mockResolvedValueOnce({
|
|
288
|
-
status: 204,
|
|
289
|
-
data: {},
|
|
290
|
-
});
|
|
291
|
-
const discord = new discord_1.Discord({
|
|
292
|
-
webhookUrl: 'https://discord.com/api/webhooks/123/abc',
|
|
293
|
-
});
|
|
294
|
-
await discord.editMessage('message-id', 'Test webhook message');
|
|
295
|
-
expect(mockedAxios.patch).toHaveBeenCalled();
|
|
296
|
-
});
|
|
297
|
-
it('should handle API error for bot message edit', async () => {
|
|
298
|
-
mockedAxios.patch.mockResolvedValueOnce({
|
|
299
|
-
status: 400,
|
|
300
|
-
data: { message: 'Bad Request' },
|
|
301
|
-
});
|
|
302
|
-
const discord = new discord_1.Discord({
|
|
303
|
-
token: 'test-token',
|
|
304
|
-
channelId: 'test-channel',
|
|
305
|
-
});
|
|
306
|
-
await expect(discord.editMessage('message-id', 'Test message')).rejects.toThrow('Discord API returned 400');
|
|
307
|
-
});
|
|
308
|
-
it('should handle API error for webhook message edit', async () => {
|
|
309
|
-
mockedAxios.patch.mockResolvedValueOnce({
|
|
310
|
-
status: 404,
|
|
311
|
-
data: { message: 'Not Found' },
|
|
312
|
-
});
|
|
313
|
-
const discord = new discord_1.Discord({
|
|
314
|
-
webhookUrl: 'https://discord.com/api/webhooks/123/abc',
|
|
315
|
-
});
|
|
316
|
-
await expect(discord.editMessage('message-id', 'Test message')).rejects.toThrow('Discord API returned 404');
|
|
317
|
-
});
|
|
318
|
-
it('should mock editBot to throw error with webhook options', async () => {
|
|
319
|
-
mockedAxios.patch.mockImplementationOnce(() => {
|
|
320
|
-
throw new Error('Invalid bot options');
|
|
321
|
-
});
|
|
322
|
-
const discord = new discord_1.Discord({
|
|
323
|
-
webhookUrl: 'https://discord.com/api/webhooks/123/abc',
|
|
324
|
-
});
|
|
325
|
-
await expect(discord.editMessage('message-id', 'Test message')).rejects.toThrow();
|
|
326
|
-
});
|
|
327
|
-
it('should mock editWebhook to throw error with bot options', async () => {
|
|
328
|
-
mockedAxios.patch.mockImplementationOnce(() => {
|
|
329
|
-
throw new Error('Invalid webhook options');
|
|
330
|
-
});
|
|
331
|
-
const discord = new discord_1.Discord({
|
|
332
|
-
token: 'test-token',
|
|
333
|
-
channelId: 'test-channel',
|
|
334
|
-
});
|
|
335
|
-
await expect(discord.editMessage('message-id', 'Test message')).rejects.toThrow();
|
|
336
|
-
});
|
|
337
|
-
});
|
|
338
|
-
describe('internal methods', () => {
|
|
339
|
-
it('should identify valid bot options', async () => {
|
|
340
|
-
const discord = new discord_1.Discord({
|
|
341
|
-
token: 'test-token',
|
|
342
|
-
channelId: 'test-channel',
|
|
343
|
-
});
|
|
344
|
-
await discord.sendMessage('Test message');
|
|
345
|
-
const call = mockedAxios.post.mock.calls[0];
|
|
346
|
-
expect(call[0]).toContain('/channels/test-channel/messages');
|
|
347
|
-
});
|
|
348
|
-
it('should identify valid webhook options', async () => {
|
|
349
|
-
const discord = new discord_1.Discord({
|
|
350
|
-
webhookUrl: 'https://discord.com/api/webhooks/123/abc',
|
|
351
|
-
});
|
|
352
|
-
await discord.sendMessage('Test message');
|
|
353
|
-
const call = mockedAxios.post.mock.calls[0];
|
|
354
|
-
expect(call[0]).toContain('https://discord.com/api/webhooks/123/abc');
|
|
355
|
-
});
|
|
356
|
-
it('should invalidate incomplete bot options', () => {
|
|
357
|
-
expect(() => new discord_1.Discord({ token: 'test-token' })).toThrow('Invalid options');
|
|
358
|
-
expect(() => new discord_1.Discord({ channelId: 'test-channel' })).toThrow('Invalid options');
|
|
359
|
-
});
|
|
360
|
-
});
|
|
361
|
-
});
|
|
362
|
-
//# sourceMappingURL=discord.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discord.test.js","sourceRoot":"","sources":["../../src/__tests__/discord.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/logger.test.ts"],"names":[],"mappings":""}
|