You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

61 lines
1.8 KiB

package main
import "testing"
func TestCaptchaSolveModeForAttempt(t *testing.T) {
t.Parallel()
t.Run("default flow", func(t *testing.T) {
t.Parallel()
mode, ok := captchaSolveModeForAttempt(0, false, true)
if !ok || mode != captchaSolveModeAuto {
t.Fatalf("expected first attempt to use auto captcha, got mode=%v ok=%v", mode, ok)
}
mode, ok = captchaSolveModeForAttempt(1, false, true)
if !ok || mode != captchaSolveModeSliderPOC {
t.Fatalf("expected second attempt to use slider POC, got mode=%v ok=%v", mode, ok)
}
mode, ok = captchaSolveModeForAttempt(2, false, true)
if !ok || mode != captchaSolveModeManual {
t.Fatalf("expected third attempt to use manual captcha, got mode=%v ok=%v", mode, ok)
}
if _, ok = captchaSolveModeForAttempt(3, false, true); ok {
t.Fatal("expected no fourth captcha attempt in default flow")
}
})
t.Run("manual only flow", func(t *testing.T) {
t.Parallel()
mode, ok := captchaSolveModeForAttempt(0, true, true)
if !ok || mode != captchaSolveModeManual {
t.Fatalf("expected manual mode on first attempt, got mode=%v ok=%v", mode, ok)
}
if _, ok = captchaSolveModeForAttempt(1, true, true); ok {
t.Fatal("expected only one manual captcha attempt when manual mode is forced")
}
})
t.Run("flow without slider poc", func(t *testing.T) {
t.Parallel()
mode, ok := captchaSolveModeForAttempt(0, false, false)
if !ok || mode != captchaSolveModeAuto {
t.Fatalf("expected auto captcha first, got mode=%v ok=%v", mode, ok)
}
mode, ok = captchaSolveModeForAttempt(1, false, false)
if !ok || mode != captchaSolveModeManual {
t.Fatalf("expected manual captcha second when slider POC is disabled, got mode=%v ok=%v", mode, ok)
}
if _, ok = captchaSolveModeForAttempt(2, false, false); ok {
t.Fatal("expected only two attempts when slider POC is disabled")
}
})
}