dns-server-port-field.test.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { describe, expect, it } from 'vitest';
  2. import { fireEvent, screen } from '@testing-library/react';
  3. import DnsServerModal from '@/pages/xray/dns/DnsServerModal';
  4. import { renderWithProviders } from './test-utils';
  5. describe('DnsServerModal port field', () => {
  6. it('hides the port for an encrypted address, whose port lives in the URL', () => {
  7. renderWithProviders(
  8. <DnsServerModal
  9. open
  10. server="https://dns.example.com/dns-query"
  11. isEdit
  12. onClose={() => {}}
  13. onConfirm={() => {}}
  14. />,
  15. );
  16. expect(screen.queryByLabelText('Port')).toBeNull();
  17. });
  18. it('offers the port for a plain address and for DoT', () => {
  19. renderWithProviders(
  20. <DnsServerModal
  21. open
  22. server="tls://dns.example.com"
  23. isEdit
  24. onClose={() => {}}
  25. onConfirm={() => {}}
  26. />,
  27. );
  28. expect(screen.getByLabelText('Port')).toBeTruthy();
  29. });
  30. it('drops the port field as soon as the address becomes a DoH URL', () => {
  31. renderWithProviders(
  32. <DnsServerModal open server="1.1.1.1" isEdit onClose={() => {}} onConfirm={() => {}} />,
  33. );
  34. expect(screen.getByLabelText('Port')).toBeTruthy();
  35. fireEvent.change(screen.getByLabelText('Address'), {
  36. target: { value: 'https://dns.example.com/dns-query' },
  37. });
  38. expect(screen.queryByLabelText('Port')).toBeNull();
  39. });
  40. });