diff --git a/pkg/captcha/inmemdb/inmemdb_test.go b/pkg/captcha/inmemdb/inmemdb_test.go new file mode 100644 index 0000000..f727412 --- /dev/null +++ b/pkg/captcha/inmemdb/inmemdb_test.go @@ -0,0 +1,48 @@ +package inmemdb_test + +import ( + "testing" + "time" + + "git.arav.top/Arav/justcaptcha/pkg/captcha" + "git.arav.top/Arav/justcaptcha/pkg/captcha/inmemdb" + "git.arav.top/Arav/justcaptcha/pkg/dwcaptcha" +) + +const expiry = 10 * time.Minute +const testData = "192.168.0.1" + +func TestInMemDBDefaultInstance(t *testing.T) { + if inmemdb.GetExpiry() != captcha.DefaultExpiredScanInterval { + t.Errorf("expiration is different from a default one (%v != %v)", + inmemdb.GetExpiry(), captcha.DefaultExpiredScanInterval) + } + + inmemdb.SetExpiry(expiry) + + if expiry != inmemdb.GetExpiry() { + t.Errorf("Expected %v, but got %v", expiry, inmemdb.GetExpiry()) + } + + captcha, captchaID := inmemdb.New(testData, dwcaptcha.NewDwellingCaptcha(expiry)) + + if inmemdb.Image(captchaID, "") == nil { + t.Error("nil returned instead of an image.Image struct") + } + + if !inmemdb.Solve(captchaID, captcha.Answer()) { + t.Error("CAPTCHA not solved. Looks like provided ID wasn't found") + } + + if !inmemdb.IsSolved(captchaID) { + t.Error("last test solved a CAPTCHA, but IsSolved() returned false") + } +} + +func TestInMemDBNewInstance(t *testing.T) { + db := inmemdb.NewInMemoryCaptchaDB(expiry) + + if db.GetExpiry() != expiry { + t.Errorf("expected expiry %v, but got %v", expiry, db.GetExpiry()) + } +} diff --git a/pkg/dwcaptcha/dwcaptcha_test.go b/pkg/dwcaptcha/dwcaptcha_test.go new file mode 100644 index 0000000..77d8e94 --- /dev/null +++ b/pkg/dwcaptcha/dwcaptcha_test.go @@ -0,0 +1,30 @@ +package dwcaptcha_test + +import ( + "testing" + "time" + + "git.arav.top/Arav/justcaptcha/pkg/dwcaptcha" +) + +const expiry = 10 * time.Minute + +func TestCaptcha(t *testing.T) { + captcha := dwcaptcha.NewDwellingCaptcha(expiry) + + if diff := time.Until(captcha.Expiry()) - expiry; diff >= 1*time.Microsecond { + t.Errorf("Difference %s is more than 1 microsecond", diff.String()) + } + + if captcha.Image("") == nil { + t.Error("image cannot be nil, but it is!") + } + + if !captcha.Solve(captcha.Answer()) { + t.Error("for whatever reason, its own answer doesn't match itself O_O") + } + + if !captcha.IsSolved() { + t.Error("after last test it should be true, but it is not!") + } +}