52 lines
1.6 KiB
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))
|
|
})
|
|
})
|