1package iam_test
2
3import (
4	"errors"
5
6	"github.com/aws/aws-sdk-go/aws"
7	"github.com/genevieve/leftovers/aws/iam"
8	"github.com/genevieve/leftovers/aws/iam/fakes"
9
10	. "github.com/onsi/ginkgo"
11	. "github.com/onsi/gomega"
12)
13
14var _ = Describe("ServerCertificate", func() {
15	var (
16		serverCertificate iam.ServerCertificate
17		client            *fakes.ServerCertificatesClient
18		name              *string
19	)
20
21	BeforeEach(func() {
22		client = &fakes.ServerCertificatesClient{}
23		name = aws.String("the-name")
24
25		serverCertificate = iam.NewServerCertificate(client, name)
26	})
27
28	Describe("Delete", func() {
29		It("deletes the server certificate", func() {
30			err := serverCertificate.Delete()
31			Expect(err).NotTo(HaveOccurred())
32
33			Expect(client.DeleteServerCertificateCall.CallCount).To(Equal(1))
34			Expect(client.DeleteServerCertificateCall.Receives.Input.ServerCertificateName).To(Equal(name))
35		})
36
37		Context("when the client fails", func() {
38			BeforeEach(func() {
39				client.DeleteServerCertificateCall.Returns.Error = errors.New("banana")
40			})
41
42			It("returns the error", func() {
43				err := serverCertificate.Delete()
44				Expect(err).To(MatchError("Delete: banana"))
45			})
46		})
47	})
48
49	Describe("Name", func() {
50		It("returns the identifier", func() {
51			Expect(serverCertificate.Name()).To(Equal("the-name"))
52		})
53	})
54
55	Describe("Type", func() {
56		It("returns \"server certificate\"", func() {
57			Expect(serverCertificate.Type()).To(Equal("IAM Server Certificate"))
58		})
59	})
60})
61