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. 4 5package autocert 6 7import ( 8 "context" 9 "io/ioutil" 10 "os" 11 "path/filepath" 12 "reflect" 13 "testing" 14) 15 16// make sure DirCache satisfies Cache interface 17var _ Cache = DirCache("/") 18 19func TestDirCache(t *testing.T) { 20 dir, err := ioutil.TempDir("", "autocert") 21 if err != nil { 22 t.Fatal(err) 23 } 24 defer os.RemoveAll(dir) 25 dir = filepath.Join(dir, "certs") // a nonexistent dir 26 cache := DirCache(dir) 27 ctx := context.Background() 28 29 // test cache miss 30 if _, err := cache.Get(ctx, "nonexistent"); err != ErrCacheMiss { 31 t.Errorf("get: %v; want ErrCacheMiss", err) 32 } 33 34 // test put/get 35 b1 := []byte{1} 36 if err := cache.Put(ctx, "dummy", b1); err != nil { 37 t.Fatalf("put: %v", err) 38 } 39 b2, err := cache.Get(ctx, "dummy") 40 if err != nil { 41 t.Fatalf("get: %v", err) 42 } 43 if !reflect.DeepEqual(b1, b2) { 44 t.Errorf("b1 = %v; want %v", b1, b2) 45 } 46 name := filepath.Join(dir, "dummy") 47 if _, err := os.Stat(name); err != nil { 48 t.Error(err) 49 } 50 51 // test delete 52 if err := cache.Delete(ctx, "dummy"); err != nil { 53 t.Fatalf("delete: %v", err) 54 } 55 if _, err := cache.Get(ctx, "dummy"); err != ErrCacheMiss { 56 t.Errorf("get: %v; want ErrCacheMiss", err) 57 } 58} 59