Testy i CI
Używaj osobnej konfiguracji do testów funkcjonalnych, jeśli narzędzia testowe mogą uruchamiać zaawansowane zabezpieczenia. Nie ma osobnego endpointu testowego ani środowiska w panelu.
Dlaczego testy potrzebują własnego builda
Zaawansowane zabezpieczenia (VM Self Defending, VM Debug Protection, VM Domain Lock oraz ich podstawowe odpowiedniki selfDefending, debugProtection i domainLock) działają także przeciwko Twoim własnym agentom, automatyzacji i debuggerom. Mogą zatrzymać wykonanie, zgłosić niezwiązane z niczym błędy lub dać nieprawidłowe wyniki. disableConsoleOutput globalnie zastępuje metody console pustymi funkcjami dla każdego skryptu na stronie, a nie tylko dla zobfuskowanego, więc asercje oparte na logach niczego nie zobaczą. Testy funkcjonalne uruchamiaj na osobnym buildzie testowym z wyłączonymi tymi funkcjami.
Konfiguracja testów funkcjonalnych
Wyprowadź konfigurację testową ze wspólnych ustawień i po wybraniu presetu zastosuj poniższe nadpisania. Wyłączają one wersje VM i podstawowe opcji Self Defending, Debug Protection i Domain Lock oraz wyłączają disableConsoleOutput (presety Low, Medium i High je włączają). Podawaj wartości jawnie; pominięcie opcji może pozwolić presetowi ją włączyć.
CI
Najpierw uruchom kod oryginalny, a następnie przepuść zobfuskowany build testowy przez te same sprawdzenia. Zapisuj dane wejściowe, efektywne opcje, wersję obfuskatora i ostrzeżenia builda, aby dało się odtworzyć błędy. Panel i bezpośrednie odpowiedzi API zgłaszają ostrzeżenia i ustaloną wersję; pakiet javascript-obfuscator podaje wersję w komunikacie postępu, ale nie zgłasza ostrzeżeń.
Gdy testy funkcjonalne przejdą, wygeneruj osobny artefakt wydania z oryginalnymi ustawieniami produkcyjnymi. Zweryfikuj dokładnie ten artefakt w jego docelowym środowisku, w dozwolonej domenie, bez automatyzacji i debuggerów, które jego zabezpieczenia mają wykrywać. To, że build testowy przechodzi testy, nie potwierdza poprawności chronionego wydania.
Buildy z panelu, z pakietu javascript-obfuscator (CLI lub Node.js) i z API korzystają z tych samych opcji ochrony. Testy przez API używają zwykłych danych uwierzytelniających i tego samego endpointu, a obowiązują normalne limity użycia. W CI trzymaj wyniki testowe i produkcyjne w osobnych ścieżkach i wdrażaj wyłącznie artefakt wydania.
Jeśli wykonanie nadal kończy się błędem, zobacz Diagnozowanie błędów wykonania VM.
