// Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package autocert import ( "context" "io/ioutil" "os" "path/filepath" "reflect" "testing" ) // make sure DirCache satisfies Cache interface var _ Cache = DirCache("/") func TestDirCache(t *testing.T) { dir, err := ioutil.TempDir("", "autocert") if err != nil { t.Fatal(err) } defer os.RemoveAll(dir) dir = filepath.Join(dir, "certs") // a nonexistent dir cache := DirCache(dir) ctx := context.Background() // test cache miss if _, err := cache.Get(ctx, "nonexistent"); err != ErrCacheMiss { t.Errorf("get: %v; want ErrCacheMiss", err) } // test put/get b1 := []byte{1} if err := cache.Put(ctx, "dummy", b1); err != nil { t.Fatalf("put: %v", err) } b2, err := cache.Get(ctx, "dummy") if err != nil { t.Fatalf("get: %v", err) } if !reflect.DeepEqual(b1, b2) { t.Errorf("b1 = %v; want %v", b1, b2) } name := filepath.Join(dir, "dummy") if _, err := os.Stat(name); err != nil { t.Error(err) } // test delete if err := cache.Delete(ctx, "dummy"); err != nil { t.Fatalf("delete: %v", err) } if _, err := cache.Get(ctx, "dummy"); err != ErrCacheMiss { t.Errorf("get: %v; want ErrCacheMiss", err) } }