github.com/almamedia/fargate@v0.2.4-0.20220704071213-7b5b3d27c5eb/cmd/certificate_test.go (about) 1 package cmd 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/golang/mock/gomock" 8 "github.com/almamedia/fargate/acm" 9 "github.com/almamedia/fargate/acm/mock/client" 10 "github.com/almamedia/fargate/cmd/mock" 11 ) 12 13 func TestFindCertificate(t *testing.T) { 14 certificate := acm.Certificate{ 15 DomainName: "www.example.com", 16 ARN: "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012", 17 Status: "ISSUED", 18 Type: "AMAZON_ISSUED", 19 } 20 21 mockCtrl := gomock.NewController(t) 22 defer mockCtrl.Finish() 23 24 mockClient := client.NewMockClient(mockCtrl) 25 mockOutput := &mock.Output{} 26 27 mockClient.EXPECT().ListCertificates().Return(acm.Certificates{certificate}, nil) 28 mockClient.EXPECT().InflateCertificate(&certificate).Return(nil) 29 30 operation := certificateOperation{ 31 acm: mockClient, 32 output: mockOutput, 33 } 34 foundCertificate, err := operation.findCertificate("www.example.com") 35 36 if err != nil { 37 t.Errorf("Expected no error, got %v", err) 38 } 39 40 if !reflect.DeepEqual(foundCertificate, certificate) { 41 t.Errorf("Expected to find %+v, got: %v", certificate, foundCertificate) 42 } 43 } 44 45 func TestFindCertificateNotFound(t *testing.T) { 46 mockCtrl := gomock.NewController(t) 47 defer mockCtrl.Finish() 48 49 mockClient := client.NewMockClient(mockCtrl) 50 mockOutput := &mock.Output{} 51 52 mockClient.EXPECT().ListCertificates().Return(acm.Certificates{}, nil) 53 54 operation := certificateOperation{ 55 acm: mockClient, 56 output: mockOutput, 57 } 58 foundCertificate, err := operation.findCertificate("www.example.com") 59 60 if err != errCertificateNotFound { 61 t.Errorf("Expected errCertificateNotFound, got %v", err) 62 } 63 64 if !reflect.DeepEqual(foundCertificate, acm.Certificate{}) { 65 t.Errorf("Expected empty Certificate, got: %v", foundCertificate) 66 } 67 } 68 69 func TestFindCertificateTooManyFound(t *testing.T) { 70 certificates := acm.Certificates{ 71 acm.Certificate{DomainName: "www.example.com", ARN: "arn:1"}, 72 acm.Certificate{DomainName: "www.example.com", ARN: "arn:2"}, 73 } 74 75 mockCtrl := gomock.NewController(t) 76 defer mockCtrl.Finish() 77 78 mockClient := client.NewMockClient(mockCtrl) 79 mockOutput := &mock.Output{} 80 81 mockClient.EXPECT().ListCertificates().Return(certificates, nil) 82 83 operation := certificateOperation{ 84 acm: mockClient, 85 output: mockOutput, 86 } 87 foundCertificate, err := operation.findCertificate("www.example.com") 88 89 if err != errCertificateTooManyFound { 90 t.Errorf("Expected errCertificateTooManyFound, got %v", err) 91 } 92 93 if !reflect.DeepEqual(foundCertificate, acm.Certificate{}) { 94 t.Errorf("Expected empty Certificate, got: %v", foundCertificate) 95 } 96 }