mirror of
https://github.com/rjNemo/rentease.git
synced 2026-06-06 02:36:49 +00:00
60 lines
1.4 KiB
Go
60 lines
1.4 KiB
Go
package server
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
type stubStripeSyncer struct {
|
|
from time.Time
|
|
to time.Time
|
|
err error
|
|
}
|
|
|
|
func (s *stubStripeSyncer) SyncStripePayments(ctx context.Context, from, to time.Time) error {
|
|
s.from = from
|
|
s.to = to
|
|
return s.err
|
|
}
|
|
|
|
func TestHandleStripeSyncSuccess(t *testing.T) {
|
|
syncer := &stubStripeSyncer{}
|
|
handler := handleStripeSync(syncer)
|
|
|
|
now := time.Now().UTC().Truncate(time.Second)
|
|
from := now.Add(-2 * time.Hour).Format(time.RFC3339)
|
|
to := now.Format(time.RFC3339)
|
|
|
|
req := httptest.NewRequest(http.MethodPost, "/api/stripe/sync", strings.NewReader(`{"from":"`+from+`","to":"`+to+`"}`))
|
|
req.Header.Set("Content-Type", "application/json")
|
|
rec := httptest.NewRecorder()
|
|
|
|
handler(rec, req)
|
|
|
|
if rec.Code != http.StatusOK {
|
|
t.Fatalf("expected status 200, got %d", rec.Code)
|
|
}
|
|
|
|
if syncer.from.IsZero() || syncer.to.IsZero() {
|
|
t.Fatal("expected syncer to receive time bounds")
|
|
}
|
|
}
|
|
|
|
func TestHandleStripeSyncInvalidTimestamp(t *testing.T) {
|
|
syncer := &stubStripeSyncer{}
|
|
handler := handleStripeSync(syncer)
|
|
|
|
req := httptest.NewRequest(http.MethodPost, "/api/stripe/sync", strings.NewReader(`{"from":"not-a-date"}`))
|
|
req.Header.Set("Content-Type", "application/json")
|
|
rec := httptest.NewRecorder()
|
|
|
|
handler(rec, req)
|
|
|
|
if rec.Code != http.StatusBadRequest {
|
|
t.Fatalf("expected status 400, got %d", rec.Code)
|
|
}
|
|
}
|