(t *testing.T)
| 457 | } |
| 458 | |
| 459 | func Test_varyManifest_StoreLoad(t *testing.T) { |
| 460 | t.Parallel() |
| 461 | |
| 462 | m := newManager(newFailingCacheStorage(), false) |
| 463 | ctx := context.Background() |
| 464 | |
| 465 | // Empty names is a no-op store. |
| 466 | require.NoError(t, storeVaryManifest(ctx, m, "mk", nil, time.Minute)) |
| 467 | |
| 468 | // Missing manifest -> no names, no error. |
| 469 | names, ok, err := loadVaryManifest(ctx, m, "mk") |
| 470 | require.NoError(t, err) |
| 471 | require.False(t, ok) |
| 472 | require.Nil(t, names) |
| 473 | |
| 474 | // Store and load a real manifest. |
| 475 | require.NoError(t, storeVaryManifest(ctx, m, "mk", []string{"accept", "accept-encoding"}, time.Minute)) |
| 476 | names, ok, err = loadVaryManifest(ctx, m, "mk") |
| 477 | require.NoError(t, err) |
| 478 | require.True(t, ok) |
| 479 | require.Equal(t, []string{"accept", "accept-encoding"}, names) |
| 480 | |
| 481 | // A wildcard manifest is treated as uncacheable. |
| 482 | require.NoError(t, m.setRaw(ctx, "star", []byte("*"), time.Minute)) |
| 483 | names, ok, err = loadVaryManifest(ctx, m, "star") |
| 484 | require.NoError(t, err) |
| 485 | require.False(t, ok) |
| 486 | require.Nil(t, names) |
| 487 | |
| 488 | // Storage error propagates. |
| 489 | storage := newFailingCacheStorage() |
| 490 | storage.errs["get|mk"] = errors.New("boom") |
| 491 | mErr := newManager(storage, false) |
| 492 | _, _, err = loadVaryManifest(ctx, mErr, "mk") |
| 493 | require.ErrorContains(t, err, "boom") |
| 494 | } |
| 495 | |
| 496 | func Test_makeBuildVaryKeyFunc(t *testing.T) { |
| 497 | t.Parallel() |
nothing calls this directly
no test coverage detected