autocomplete_normalize_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package asset
  2. import (
  3. "errors"
  4. "testing"
  5. "time"
  6. "github.com/opencost/opencost/core/pkg/autocomplete"
  7. coreasset "github.com/opencost/opencost/core/pkg/autocomplete/asset"
  8. "github.com/opencost/opencost/core/pkg/opencost"
  9. )
  10. func TestNormalizeAssetAutocompleteRequest(t *testing.T) {
  11. start := time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC)
  12. end := start.Add(24 * time.Hour)
  13. req := &autocomplete.Request{
  14. TenantID: "t1",
  15. Field: "assettype",
  16. Search: " x ",
  17. Limit: 0,
  18. Window: opencost.NewClosedWindow(start, end),
  19. }
  20. opts := autocomplete.NormalizeOptions{RequireTenantID: true, WindowValidator: coreasset.ValidateWindow}
  21. field, err := autocomplete.NormalizeRequest(req, coreasset.ValidateField, opts)
  22. if err != nil {
  23. t.Fatalf("unexpected error: %v", err)
  24. }
  25. if field != "type" || req.Search != "x" || req.Limit != autocomplete.DefaultResultLimit {
  26. t.Fatalf("unexpected normalized request: field=%s search=%q limit=%d", field, req.Search, req.Limit)
  27. }
  28. _, err = autocomplete.NormalizeRequest(&autocomplete.Request{
  29. TenantID: "t1",
  30. Field: "cluster",
  31. Limit: autocomplete.MaxResultLimit + 1,
  32. Window: opencost.NewClosedWindow(start, end),
  33. }, coreasset.ValidateField, opts)
  34. if err == nil || !autocomplete.IsBadRequest(err) {
  35. t.Fatalf("expected bad request, got %v", err)
  36. }
  37. if !errors.Is(err, autocomplete.ErrBadRequest) {
  38. t.Fatalf("expected ErrBadRequest")
  39. }
  40. }