| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import { render, screen } from '@testing-library/react';
- import { beforeEach, expect, test, vi } from 'vitest';
- import SettingsPage from '@/pages/Settings';
- import { apiRequest } from '@/services/api';
- vi.mock('@/services/api', () => ({
- apiRequest: vi.fn(),
- jsonOptions: vi.fn((method, body) => ({ method, body: JSON.stringify(body) })),
- setCsrfToken: vi.fn(),
- setSelectedBotId: vi.fn(),
- }));
- beforeEach(() => {
- vi.mocked(apiRequest).mockImplementation(async (path) => {
- if (path === '/settings') {
- return {
- web_address: 'http://127.0.0.1:8088/admin',
- bind_host: '127.0.0.1',
- upload_limit_mb: 20,
- supervisor_mode: true,
- bot: { connected: false, id: '', username: '', name: '' },
- };
- }
- if (path === '/settings/telegram') {
- return {
- api_id: 12345,
- api_hash_configured: true,
- api_ready: true,
- bots: [
- {
- bot_id: 'one',
- label: '主 Bot',
- enabled: true,
- bot_token_configured: true,
- sudo_users_id: [],
- log_group_id: '0',
- gban_log_group_id: '0',
- message_dump_chat: '-100123',
- identity: { id: '1', username: 'primary_bot', name: 'Primary' },
- ready_to_connect: true,
- runtime: { state: 'running' },
- },
- {
- bot_id: 'two',
- label: '备用 Bot',
- enabled: false,
- bot_token_configured: true,
- sudo_users_id: [],
- log_group_id: '0',
- gban_log_group_id: '0',
- message_dump_chat: '0',
- identity: null,
- ready_to_connect: true,
- runtime: { state: 'stopped' },
- },
- ],
- };
- }
- throw new Error(`Unexpected request: ${path}`);
- });
- });
- test('展示多个机器人、脱敏凭据状态和运行状态', async () => {
- render(<SettingsPage />);
- expect(await screen.findByText('@primary_bot')).toBeInTheDocument();
- expect(screen.getByText('备用 Bot')).toBeInTheDocument();
- expect(screen.getByText('运行中')).toBeInTheDocument();
- expect(screen.getByText('已停用')).toBeInTheDocument();
- expect(screen.getAllByText('已配置')).toHaveLength(2);
- const credentialsLink = screen.getByRole('link', { name: 'my.telegram.org/apps' });
- expect(credentialsLink).toHaveAttribute('href', 'https://my.telegram.org/apps');
- expect(credentialsLink.parentElement).toHaveTextContent('不是机器人编号。');
- expect(screen.getByText('32 位十六进制字符串,不是机器人令牌。')).toBeInTheDocument();
- expect(screen.queryByText(/AA[A-Za-z0-9_-]{20}/)).not.toBeInTheDocument();
- });
|