package main import ( "errors" "testing" ) // --- shouldInitEmail --- func TestShouldInitEmail_BothSet_True(t *testing.T) { if !shouldInitEmail("smtp.example.com", "user@example.com") { t.Error("expected true when both set") } } func TestShouldInitEmail_MissingHost_False(t *testing.T) { if shouldInitEmail("", "user@example.com") { t.Error("expected false when host empty") } } func TestShouldInitEmail_MissingUser_False(t *testing.T) { if shouldInitEmail("smtp.example.com", "") { t.Error("expected false when user empty") } } func TestShouldInitEmail_BothEmpty_False(t *testing.T) { if shouldInitEmail("", "") { t.Error("expected false when both empty") } } // --- shouldInitStorage --- func TestShouldInitStorage_Set_True(t *testing.T) { if !shouldInitStorage("/uploads") { t.Error("expected true") } } func TestShouldInitStorage_Empty_False(t *testing.T) { if shouldInitStorage("") { t.Error("expected false") } } // --- shouldInitEncryption --- func TestShouldInitEncryption_Set_True(t *testing.T) { if !shouldInitEncryption("secret-key-123") { t.Error("expected true") } } func TestShouldInitEncryption_Empty_False(t *testing.T) { if shouldInitEncryption("") { t.Error("expected false") } } // --- connectWithRetry --- func TestConnectWithRetry_SucceedsFirst_NoRetry(t *testing.T) { calls := 0 err := connectWithRetry(func() error { calls++ return nil }, 3) if err != nil { t.Errorf("unexpected error: %v", err) } if calls != 1 { t.Errorf("calls = %d, want 1", calls) } } func TestConnectWithRetry_SucceedsSecond_OneRetry(t *testing.T) { calls := 0 err := connectWithRetry(func() error { calls++ if calls == 1 { return errors.New("fail") } return nil }, 3) if err != nil { t.Errorf("unexpected error: %v", err) } if calls != 2 { t.Errorf("calls = %d, want 2", calls) } } func TestConnectWithRetry_AllFail_ReturnsError(t *testing.T) { calls := 0 err := connectWithRetry(func() error { calls++ return errors.New("fail") }, 3) if err == nil { t.Error("expected error") } if calls != 3 { t.Errorf("calls = %d, want 3", calls) } }