1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
16 // make sure DirCache satisfies Cache interface
17 var _ Cache = DirCache("/")
19 func TestDirCache(t *testing.T) {
20 dir, err := ioutil.TempDir("", "autocert")
24 defer os.RemoveAll(dir)
25 dir = filepath.Join(dir, "certs") // a nonexistent dir
26 cache := DirCache(dir)
27 ctx := context.Background()
30 if _, err := cache.Get(ctx, "nonexistent"); err != ErrCacheMiss {
31 t.Errorf("get: %v; want ErrCacheMiss", err)
36 if err := cache.Put(ctx, "dummy", b1); err != nil {
37 t.Fatalf("put: %v", err)
39 b2, err := cache.Get(ctx, "dummy")
41 t.Fatalf("get: %v", err)
43 if !reflect.DeepEqual(b1, b2) {
44 t.Errorf("b1 = %v; want %v", b1, b2)
46 name := filepath.Join(dir, "dummy")
47 if _, err := os.Stat(name); err != nil {
52 if err := cache.Delete(ctx, "dummy"); err != nil {
53 t.Fatalf("delete: %v", err)
55 if _, err := cache.Get(ctx, "dummy"); err != ErrCacheMiss {
56 t.Errorf("get: %v; want ErrCacheMiss", err)