diff --git a/internal/client/client.go b/internal/client/client.go index 2bc1fb5..a6ca480 100644 --- a/internal/client/client.go +++ b/internal/client/client.go @@ -299,7 +299,7 @@ func wrapError(msg string, err error) error { } func checkInboxCAPTCHA(content string) error { - s := `w\.finrmail\(\d+,\s*\d+,\s*\d+,\s*\d+,\s*\d+,\s*'alt\.[^']+',\s*'.*?'\)` + s := `w\.finrmail\(\d+,\s*\d+,\s*\d+,\s*\d+,\s*\d+,\s*'alt\.[^']+',\s*'.*?'\)|Loading \.\.\.` if !regexp.MustCompile(s).MatchString(content) { return ErrCaptcha } diff --git a/internal/client/client_test.go b/internal/client/client_test.go index 87400a5..d32a604 100644 --- a/internal/client/client_test.go +++ b/internal/client/client_test.go @@ -575,10 +575,42 @@ func TestHTTPClientFactoryCreate(t *testing.T) { } } +func TestCheckInboxCAPTCHA(t *testing.T) { + type scenario struct { + name string + arg string + test func(error) + } + + for _, s := range []scenario{{ + "No captcha because loading is defined", + "Loading ...", + func(err error) { + assert.NoError(t, err) + }, + }, { + "No captcha because finrmail is defined", + `w.finrmail(699,2,1,1,0,'alt.xm-doh3nzhv','')`, + func(err error) { + assert.NoError(t, err) + }, + }, { + "Captcha activated", + ``, + func(err error) { + assert.Error(t, err) + }, + }} { + t.Run(s.name, func(t *testing.T) { + err := checkInboxCAPTCHA(s.arg) + s.test(err) + }) + } +} + func mockYopmailSetup() { httpmock.RegisterResponder("GET", refURL+"/ver/3.1/webmail.js", httpmock.NewStringResponder(200, "xxx http://whatever.com?q=s&yj=ytest&t=a xxxxx")) - httpmock.RegisterResponder("GET", refURL+"/consent?c=accept", httpmock.NewStringResponder(200, "")) httpmock.RegisterResponder("GET", refURL, httpmock.NewStringResponder(200, ``)) }