github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/creds/conjur/manager_test.go (about)

     1  package conjur_test
     2  
     3  import (
     4  	"github.com/pf-qiu/concourse/v6/atc/creds/conjur"
     5  	"github.com/jessevdk/go-flags"
     6  
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/ginkgo/extensions/table"
     9  	. "github.com/onsi/gomega"
    10  )
    11  
    12  var _ = Describe("Manager", func() {
    13  	var manager conjur.Manager
    14  
    15  	Describe("IsConfigured()", func() {
    16  		JustBeforeEach(func() {
    17  			_, err := flags.ParseArgs(&manager, []string{})
    18  			Expect(err).To(BeNil())
    19  		})
    20  
    21  		It("fails on empty Manager", func() {
    22  			Expect(manager.IsConfigured()).To(BeFalse())
    23  		})
    24  
    25  		It("passes if ConjurApplianceURL is set", func() {
    26  			manager.ConjurApplianceUrl = "http://conjur-test"
    27  			Expect(manager.IsConfigured()).To(BeTrue())
    28  		})
    29  	})
    30  
    31  	Describe("Validate()", func() {
    32  		JustBeforeEach(func() {
    33  			manager = conjur.Manager{
    34  				ConjurApplianceUrl: "http://conjur-test",
    35  				ConjurAccount:      "account",
    36  				ConjurAuthnLogin:   "login",
    37  				ConjurAuthnApiKey:  "apiKey",
    38  			}
    39  			_, err := flags.ParseArgs(&manager, []string{})
    40  			Expect(err).To(BeNil())
    41  			Expect(manager.PipelineSecretTemplate).To(Equal(conjur.DefaultPipelineSecretTemplate))
    42  			Expect(manager.TeamSecretTemplate).To(Equal(conjur.DefaultTeamSecretTemplate))
    43  		})
    44  
    45  		It("passes on default parameters", func() {
    46  			Expect(manager.Validate()).To(BeNil())
    47  		})
    48  
    49  		DescribeTable("passes if all Conjur credentials are specified",
    50  			func(account, login, apiKey, tokenFile string) {
    51  				manager.ConjurApplianceUrl = "http://conjur-test"
    52  				manager.ConjurAccount = account
    53  				manager.ConjurAuthnLogin = login
    54  				manager.ConjurAuthnApiKey = apiKey
    55  				manager.ConjurAuthnTokenFile = tokenFile
    56  				Expect(manager.Validate()).To(BeNil())
    57  			},
    58  			Entry("account & login & apiKey", "account", "login", "apiKey", ""),
    59  			Entry("account & login & tokenFile", "account", "login", "", "tokenFile"),
    60  		)
    61  
    62  		DescribeTable("fails on partial Conjur credentials",
    63  			func(account, login, apiKey, tokenFile string) {
    64  				manager.ConjurApplianceUrl = "http://conjur-test"
    65  				manager.ConjurAccount = account
    66  				manager.ConjurAuthnLogin = login
    67  				manager.ConjurAuthnApiKey = apiKey
    68  				manager.ConjurAuthnTokenFile = tokenFile
    69  				Expect(manager.Validate()).ToNot(BeNil())
    70  			},
    71  			Entry("only account", "account", "", "", ""),
    72  			Entry("only login", "", "login", "", ""),
    73  			Entry("only apiKey", "", "", "apiKey", ""),
    74  			Entry("only token file", "", "", "", "tokenFile"),
    75  			Entry("account & login", "account", "login", "", ""),
    76  			Entry("account & apiKey", "account", "", "apiKey", ""),
    77  			Entry("account & tokenFile", "account", "", "", "tokenFile"),
    78  			Entry("login & apiKey", "", "login", "apiKey", ""),
    79  			Entry("login & tokenFile", "", "login", "", "tokenFile"),
    80  			Entry("account & login & apiKey & tokenFile", "account", "login", "apikey", "tokenFile"),
    81  		)
    82  
    83  		It("passes on pipe secret template containing less specialization", func() {
    84  			manager.PipelineSecretTemplate = "{{.Secret}}"
    85  			Expect(manager.Validate()).To(BeNil())
    86  		})
    87  
    88  		It("passes on pipe secret template containing no specialization", func() {
    89  			manager.PipelineSecretTemplate = "var"
    90  			Expect(manager.Validate()).To(BeNil())
    91  		})
    92  
    93  		It("fails on empty pipe secret template", func() {
    94  			manager.PipelineSecretTemplate = ""
    95  			Expect(manager.Validate()).ToNot(BeNil())
    96  		})
    97  
    98  		It("fails on pipe secret template containing invalid parameters", func() {
    99  			manager.PipelineSecretTemplate = "{{.Teams}}"
   100  			Expect(manager.Validate()).ToNot(BeNil())
   101  		})
   102  
   103  		It("passes on team secret template containing less specialization", func() {
   104  			manager.TeamSecretTemplate = "{{.Secret}}"
   105  			Expect(manager.Validate()).To(BeNil())
   106  		})
   107  
   108  		It("passes on team secret template containing no specialization", func() {
   109  			manager.TeamSecretTemplate = "var"
   110  			Expect(manager.Validate()).To(BeNil())
   111  		})
   112  
   113  		It("fails on empty team secret template", func() {
   114  			manager.TeamSecretTemplate = ""
   115  			Expect(manager.Validate()).ToNot(BeNil())
   116  		})
   117  
   118  		It("fails on team secret template containing invalid parameters", func() {
   119  			manager.TeamSecretTemplate = "{{.Teams}}"
   120  			Expect(manager.Validate()).ToNot(BeNil())
   121  		})
   122  	})
   123  })