1
0
Fork 1
mirror of https://github.com/thatmattlove/hyperglass.git synced 2026-01-17 08:48:05 +00:00
thatmattlove-hyperglass/hyperglass/ui/hooks/use-dns-query.test.tsx
2023-04-13 23:05:05 -04:00

74 lines
2.6 KiB
TypeScript

import 'isomorphic-fetch';
import '@testing-library/jest-dom';
import { renderHook } from '@testing-library/react-hooks';
import { QueryClientProvider, QueryClient } from '@tanstack/react-query';
import { HyperglassContext } from '~/context';
import { useDNSQuery } from './use-dns-query';
import type { Config } from '~/types';
const queryClient = new QueryClient({
defaultOptions: { queries: { retry: false, cacheTime: Infinity } },
});
const CloudflareWrapper = (props: React.PropsWithChildren<Dict<JSX.Element>>) => {
const config = {
cache: { timeout: 120 },
web: { dnsProvider: { url: 'https://cloudflare-dns.com/dns-query' } },
} as jest.Mocked<Config>;
return (
<QueryClientProvider client={queryClient}>
<HyperglassContext.Provider value={config} {...props} />
</QueryClientProvider>
);
};
const GoogleWrapper = (props: React.PropsWithChildren<Dict<JSX.Element>>) => {
const config = {
cache: { timeout: 120 },
web: { dnsProvider: { url: 'https://dns.google/resolve' } },
} as jest.Mocked<Config>;
return (
<QueryClientProvider client={queryClient}>
<HyperglassContext.Provider value={config} {...props} />
</QueryClientProvider>
);
};
describe('useDNSQuery Cloudflare', () => {
it('Test Cloudflare DNS over HTTPS (IPv4)', async () => {
const { result, waitFor } = renderHook(() => useDNSQuery('one.one.one.one', 4), {
wrapper: CloudflareWrapper,
});
await waitFor(() => result.current.isSuccess, { timeout: 5_000 });
expect(result.current.data?.Answer.map(a => a.data)).toContain('1.1.1.1');
});
it('Test Cloudflare DNS over HTTPS (IPv6)', async () => {
const { result, waitFor } = renderHook(() => useDNSQuery('one.one.one.one', 6), {
wrapper: CloudflareWrapper,
});
await waitFor(() => result.current.isSuccess, { timeout: 5_000 });
expect(result.current.data?.Answer.map(a => a.data)).toContain('2606:4700:4700::1111');
});
});
describe('useDNSQuery Google', () => {
it('Test Google DNS over HTTPS (IPv4)', async () => {
const { result, waitFor } = renderHook(() => useDNSQuery('one.one.one.one', 4), {
wrapper: GoogleWrapper,
});
await waitFor(() => result.current.isSuccess, { timeout: 5_000 });
expect(result.current.data?.Answer.map(a => a.data)).toContain('1.1.1.1');
});
it('Test Google DNS over HTTPS (IPv6)', async () => {
const { result, waitFor } = renderHook(() => useDNSQuery('one.one.one.one', 6), {
wrapper: GoogleWrapper,
});
await waitFor(() => result.current.isSuccess, { timeout: 5_000 });
expect(result.current.data?.Answer.map(a => a.data)).toContain('2606:4700:4700::1111');
});
});