package imgcache import ( "testing" "sneak.berlin/go/pixa/internal/imagerequest" ) // testSVG is an SVG with a comment before its root element, so that its // first magic.MinMagicBytes bytes do not show its format. const testSVG = `` // TestSourceAndVariant_ReadSVG checks that a cached SVG source is read as // SVG, and a cached SVG variant (orig of an SVG source) as image/svg+xml. func TestSourceAndVariant_ReadSVG(t *testing.T) { t.Parallel() cache, _ := newEvictionTestCache(t, 1<<30) storeEvictionTestSource(t, cache, testHostCDN, "/drawing.svg", []byte(testSVG)) reader, _, format, err := cache.Source(t.Context(), imagerequest.Source{Host: testHostCDN, Path: "/drawing.svg"}) t.Logf("Source() format = %q, error = %v", format, err) if err != nil || format != imagerequest.FormatSVG { t.Errorf("Source() = format %q, error %v; want %q", format, err, imagerequest.FormatSVG) } if reader != nil { _ = reader.Close() } key := imagerequest.VariantKey("aabbccdd3001") err = cache.variants.Write(string(key), []byte(testSVG)) if err != nil { t.Fatalf("storing the variant file: %v", err) } variant, err := cache.Variant(key) t.Logf("Variant() content type = %q, error = %v", variant.ContentType, err) if err != nil || variant.ContentType != "image/svg+xml" { t.Errorf("Variant() = content type %q, error %v; want image/svg+xml", variant.ContentType, err) } if variant.Content != nil { _ = variant.Content.Close() } }