route/vendor/github.com/lucas-clemente/quic-go/internal/crypto/cert_cache_test.go

52 lines
1.6 KiB
Go

package crypto
import (
lru "github.com/hashicorp/golang-lru"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("Certificate cache", func() {
BeforeEach(func() {
var err error
compressedCertsCache, err = lru.New(2)
Expect(err).NotTo(HaveOccurred())
})
It("gives a compressed cert", func() {
chain := [][]byte{{0xde, 0xca, 0xfb, 0xad}}
expected, err := compressChain(chain, nil, nil)
Expect(err).NotTo(HaveOccurred())
compressed, err := getCompressedCert(chain, nil, nil)
Expect(err).ToNot(HaveOccurred())
Expect(compressed).To(Equal(expected))
})
It("gets the same result multiple times", func() {
chain := [][]byte{{0xde, 0xca, 0xfb, 0xad}}
compressed, err := getCompressedCert(chain, nil, nil)
Expect(err).NotTo(HaveOccurred())
compressed2, err := getCompressedCert(chain, nil, nil)
Expect(err).NotTo(HaveOccurred())
Expect(compressed).To(Equal(compressed2))
})
It("stores cached values", func() {
chain := [][]byte{{0xde, 0xca, 0xfb, 0xad}}
_, err := getCompressedCert(chain, nil, nil)
Expect(err).NotTo(HaveOccurred())
Expect(compressedCertsCache.Len()).To(Equal(1))
Expect(compressedCertsCache.Contains(uint64(3838929964809501833))).To(BeTrue())
})
It("evicts old values", func() {
_, err := getCompressedCert([][]byte{{0x00}}, nil, nil)
Expect(err).NotTo(HaveOccurred())
_, err = getCompressedCert([][]byte{{0x01}}, nil, nil)
Expect(err).NotTo(HaveOccurred())
_, err = getCompressedCert([][]byte{{0x02}}, nil, nil)
Expect(err).NotTo(HaveOccurred())
Expect(compressedCertsCache.Len()).To(Equal(2))
})
})