INTEGRITY Dokumentace

Vyloučení Turnstile z E2E testů

Tento návod ukazuje, jak si v end-to-end (E2E) testech poradit s Turnstile pomocí vyhrazených testovacích klíčů.

Přehled

Při E2E testech obvykle potřebujete ověřování Turnstile obejít nebo zjednodušit. Cloudflare k tomu nabízí oficiální testovací přihlašovací údaje, které ověřením vždy projdou, a jsou proto pro testovací prostředí ideální:

Podrobnosti najdete v dokumentace k testování.

Implementace

Základem detekce testovacího prostředí je rozpoznat testovací požadavky na straně serveru. Jednoduchý postup:

// Detect test environments using IP addresses or headers
function isTestEnvironment(request) {
  const testIPs = ['127.0.0.1', '::1'];
  const isTestIP = testIPs.includes(request.ip);
  const hasTestHeader = request.headers['x-test-environment'] === 'secret-token';

  return isTestIP || hasTestHeader;
}

// Use the appropriate credentials based on the environment
function getTurnstileCredentials(request) {
  if (isTestEnvironment(request)) {
    return {
      sitekey: '1x00000000000000000000AA',
      secretKey: '1x0000000000000000000000000000000AA'
    };
  }

  return {
    sitekey: process.env.TURNSTILE_SITE_KEY,
    secretKey: process.env.TURNSTILE_SECRET_KEY
  };
}

Integrace na straně serveru

Při vykreslování stránky vložte sitekey odpovídající danému prostředí:

app.get('/your-form', (req, res) => {
  const { sitekey } = getTurnstileCredentials(req);
  res.render('form', { sitekey });
});

Integrace na straně klienta

Vaše šablona pak může vložený sitekey použít:

<div class="turnstile" data-sitekey="<%= sitekey %>"></div>

Doporučené postupy

  1. Detekce prostředí

    • K rozpoznání testovacích prostředí použijte více faktorů (IP adresa, hlavičky a podobně).
    • Pokud potřebujete testovat z veřejného internetu, chraňte identifikátory testovacího prostředí.
  2. Správa přihlašovacích údajů

    • Produkční přihlašovací údaje ukládejte bezpečně (například do proměnných prostředí).
    • Přístupové údaje nikdy neukládejte do systému správy verzí.
    • Pro každé prostředí použijte jiné přihlašovací údaje.
  3. Bezpečné nasazení

    • Přidejte kontroly, které v produkci zabrání použití testovacích přihlašovacích údajů.
    • Zahrňte ověření přihlašovacích údajů do své CI/CD pipeline.
    • Sledujte, zda nedošlo k nechtěnému použití testovacích údajů.

Na co při testování myslet

Ukázkové nastavení testu

Pro Cypress a podobné frameworky pro E2E testování:

// Set test header for all test requests
beforeEach(() => {
  cy.intercept('*', (req) => {
    req.headers['x-test-environment'] = 'secret-token';
  });
});

// Your test can now interact with the form normally
it('submits form successfully', () => {
  cy.visit('/your-form');
  cy.get('form').submit();
  // Turnstile will automatically pass verification
});

Závěr

S testovacími přihlašovacími údaji Turnstile a se spolehlivým rozpoznáním prostředí si připravíte stabilní E2E testy, aniž byste oslabili zabezpečení produkce. Testovací údaje vždy držte odděleně od produkčních a do procesu nasazení zaveďte odpovídající pojistky.