github.com/cloudfoundry/libcfbuildpack@v1.91.23/services/services_test.go (about) 1 /* 2 * Copyright 2018-2020 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package services_test 18 19 import ( 20 "testing" 21 22 bp "github.com/buildpack/libbuildpack/services" 23 "github.com/cloudfoundry/libcfbuildpack/services" 24 "github.com/onsi/gomega" 25 "github.com/sclevine/spec" 26 "github.com/sclevine/spec/report" 27 ) 28 29 func TestServices(t *testing.T) { 30 spec.Run(t, "Services", func(t *testing.T, when spec.G, it spec.S) { 31 32 g := gomega.NewWithT(t) 33 34 when("FindServiceCredentials", func() { 35 it("matches single service by BindingName", func() { 36 s := services.Services{Services: bp.Services{services.Service{BindingName: "test-service-1"}}} 37 38 _, ok := s.FindServiceCredentials("test-service") 39 40 g.Expect(ok).To(gomega.BeTrue()) 41 }) 42 43 it("matches single service by InstanceName", func() { 44 s := services.Services{Services: bp.Services{services.Service{InstanceName: "test-service-1"}}} 45 46 _, ok := s.FindServiceCredentials("test-service") 47 48 g.Expect(ok).To(gomega.BeTrue()) 49 }) 50 51 it("matches single service by Label", func() { 52 s := services.Services{Services: bp.Services{services.Service{Label: "test-service-1"}}} 53 54 _, ok := s.FindServiceCredentials("test-service") 55 56 g.Expect(ok).To(gomega.BeTrue()) 57 }) 58 59 it("matches single service by Tags", func() { 60 s := services.Services{Services: bp.Services{services.Service{Tags: []string{"test-service-1"}}}} 61 62 _, ok := s.FindServiceCredentials("test-service") 63 64 g.Expect(ok).To(gomega.BeTrue()) 65 }) 66 67 it("matches single service with Credentials", func() { 68 s := services.Services{Services: bp.Services{services.Service{ 69 BindingName: "test-service-1", 70 Credentials: services.Credentials{"test-credential": "test-payload"}, 71 }}} 72 73 c, ok := s.FindServiceCredentials("test-service", "test-credential") 74 75 g.Expect(c).To(gomega.Equal(services.Credentials{"test-credential": "test-payload"})) 76 g.Expect(ok).To(gomega.BeTrue()) 77 }) 78 79 it("does not match no service", func() { 80 s := services.Services{Services: bp.Services{}} 81 82 _, ok := s.FindServiceCredentials("test-service") 83 84 g.Expect(ok).To(gomega.BeFalse()) 85 }) 86 87 it("does not match multiple services", func() { 88 s := services.Services{Services: bp.Services{ 89 services.Service{BindingName: "test-service-1"}, 90 services.Service{BindingName: "test-service-2"}, 91 }} 92 93 _, ok := s.FindServiceCredentials("test-service") 94 95 g.Expect(ok).To(gomega.BeFalse()) 96 }) 97 98 it("does not match without Credentials", func() { 99 s := services.Services{Services: bp.Services{services.Service{BindingName: "test-service-1"}}} 100 101 _, ok := s.FindServiceCredentials("test-service", "test-credential") 102 103 g.Expect(ok).To(gomega.BeFalse()) 104 }) 105 }) 106 107 when("HasService", func() { 108 109 it("matches single service by BindingName", func() { 110 s := services.Services{Services: bp.Services{services.Service{BindingName: "test-service-1"}}} 111 112 g.Expect(s.HasService("test-service")).To(gomega.BeTrue()) 113 }) 114 115 it("matches single service by InstanceName", func() { 116 s := services.Services{Services: bp.Services{services.Service{InstanceName: "test-service-1"}}} 117 118 g.Expect(s.HasService("test-service")).To(gomega.BeTrue()) 119 }) 120 121 it("matches single service by Label", func() { 122 s := services.Services{Services: bp.Services{services.Service{Label: "test-service-1"}}} 123 124 g.Expect(s.HasService("test-service")).To(gomega.BeTrue()) 125 }) 126 127 it("matches single service by Tags", func() { 128 s := services.Services{Services: bp.Services{services.Service{Tags: []string{"test-service-1"}}}} 129 130 g.Expect(s.HasService("test-service")).To(gomega.BeTrue()) 131 }) 132 133 it("matches single service with Credentials", func() { 134 s := services.Services{Services: bp.Services{services.Service{ 135 BindingName: "test-service-1", 136 Credentials: services.Credentials{"test-credential": "test-payload"}, 137 }}} 138 139 g.Expect(s.HasService("test-service", "test-credential")).To(gomega.BeTrue()) 140 }) 141 142 it("does not match no service", func() { 143 s := services.Services{Services: bp.Services{}} 144 145 g.Expect(s.HasService("test-service")).To(gomega.BeFalse()) 146 }) 147 148 it("does not match multiple services", func() { 149 s := services.Services{Services: bp.Services{ 150 services.Service{BindingName: "test-service-1"}, 151 services.Service{BindingName: "test-service-2"}, 152 }} 153 154 g.Expect(s.HasService("test-service")).To(gomega.BeFalse()) 155 }) 156 157 it("does not match without Credentials", func() { 158 s := services.Services{Services: bp.Services{services.Service{BindingName: "test-service-1"}}} 159 160 g.Expect(s.HasService("test-service", "test-credential")).To(gomega.BeFalse()) 161 }) 162 }) 163 }, spec.Report(report.Terminal{})) 164 }