github.com/sleungcy-sap/cli@v7.1.0+incompatible/util/manifestparser/manifest_test.go (about) 1 package manifestparser_test 2 3 import ( 4 . "code.cloudfoundry.org/cli/util/manifestparser" 5 . "github.com/onsi/ginkgo" 6 . "github.com/onsi/gomega" 7 "gopkg.in/yaml.v2" 8 ) 9 10 var _ = Describe("Manifest", func() { 11 var manifest Manifest 12 13 BeforeEach(func() { 14 manifest = Manifest{} 15 }) 16 17 Describe("AppNames", func() { 18 When("given a valid manifest file", func() { 19 BeforeEach(func() { 20 manifest.Applications = []Application{ 21 {Name: "app-1"}, 22 {Name: "app-2"}, 23 } 24 }) 25 26 It("gets the app names", func() { 27 appNames := manifest.AppNames() 28 Expect(appNames).To(ConsistOf("app-1", "app-2")) 29 }) 30 }) 31 }) 32 33 Describe("ContainsMultipleApps", func() { 34 When("given a valid manifest file with multiple apps", func() { 35 BeforeEach(func() { 36 manifest.Applications = []Application{ 37 {Name: "app-1"}, 38 {Name: "app-2"}} 39 }) 40 41 It("returns true", func() { 42 Expect(manifest.ContainsMultipleApps()).To(BeTrue()) 43 }) 44 }) 45 46 When("given a valid manifest file with a single app", func() { 47 BeforeEach(func() { 48 manifest.Applications = []Application{{Name: "app-1"}} 49 }) 50 51 It("returns false", func() { 52 Expect(manifest.ContainsMultipleApps()).To(BeFalse()) 53 }) 54 }) 55 }) 56 57 Describe("ContainsPrivateDockerImages", func() { 58 When("the manifest contains a docker image", func() { 59 When("the image is public", func() { 60 BeforeEach(func() { 61 manifest.Applications = []Application{ 62 {Name: "app-1", Docker: &Docker{Image: "image-1"}}, 63 {Name: "app-2", Docker: &Docker{Image: "image-2"}}} 64 }) 65 66 It("returns false", func() { 67 Expect(manifest.ContainsPrivateDockerImages()).To(BeFalse()) 68 }) 69 }) 70 71 When("the image is private", func() { 72 BeforeEach(func() { 73 manifest.Applications = []Application{ 74 {Name: "app-1", Docker: &Docker{Image: "image-1"}}, 75 {Name: "app-2", Docker: &Docker{Image: "image-2", Username: "user"}}, 76 } 77 }) 78 79 It("returns true", func() { 80 Expect(manifest.ContainsPrivateDockerImages()).To(BeTrue()) 81 }) 82 }) 83 }) 84 85 When("the manifest does not contain a docker image", func() { 86 BeforeEach(func() { 87 manifest.Applications = []Application{ 88 {Name: "app-1"}, 89 {Name: "app-2"}, 90 } 91 }) 92 93 It("returns false", func() { 94 Expect(manifest.ContainsPrivateDockerImages()).To(BeFalse()) 95 }) 96 }) 97 }) 98 99 Describe("HasAppWithNoName", func() { 100 It("returns true when there is an app with no name", func() { 101 manifest.Applications = []Application{ 102 {Name: "some-app"}, 103 {}, 104 } 105 106 Expect(manifest.HasAppWithNoName()).To(BeTrue()) 107 }) 108 109 It("returns false when all apps have names", func() { 110 manifest.Applications = []Application{ 111 {Name: "some-app"}, 112 {Name: "some-other-app"}, 113 } 114 115 Expect(manifest.HasAppWithNoName()).To(BeFalse()) 116 }) 117 }) 118 119 Describe("GetFirstAppWebProcess", func() { 120 BeforeEach(func() { 121 manifest.Applications = []Application{ 122 { 123 Processes: []Process{ 124 {Type: "worker"}, 125 {Type: "web", Memory: "1G"}, 126 }, 127 }, 128 { 129 Processes: []Process{ 130 {Type: "worker2"}, 131 {Type: "web", Memory: "2G"}, 132 }, 133 }, 134 } 135 }) 136 137 It("returns the first app's web process", func() { 138 Expect(manifest.GetFirstAppWebProcess()).To(Equal(&Process{ 139 Type: "web", Memory: "1G", 140 })) 141 }) 142 143 It("returns nil if there is no first-app-web-process", func() { 144 manifest.Applications = []Application{ 145 { 146 Name: "app1", 147 }, 148 } 149 150 Expect(manifest.GetFirstAppWebProcess()).To(BeNil()) 151 }) 152 }) 153 154 Describe("GetFirstApp", func() { 155 BeforeEach(func() { 156 manifest.Applications = []Application{ 157 { 158 Name: "app1", 159 }, 160 { 161 Name: "app2", 162 }, 163 } 164 }) 165 166 It("returns the first app", func() { 167 Expect(manifest.GetFirstApp()).To(Equal(&Application{ 168 Name: "app1", 169 })) 170 }) 171 }) 172 173 Describe("has the correct attributes", func() { 174 It("it unmarshals with the version", func() { 175 manifestBytes := []byte(`--- 176 applications: [] 177 version: 151 178 `) 179 err := yaml.Unmarshal(manifestBytes, &manifest) 180 Expect(err).ToNot(HaveOccurred()) 181 182 Expect(manifest.Version).To(Equal(151)) 183 }) 184 185 It("it marshals with the version", func() { 186 manifest = Manifest{ 187 Applications: []Application{}, 188 Version: 151, 189 } 190 expectedManifestBytes := []byte(`applications: [] 191 version: 151 192 `) 193 actualBytes, err := yaml.Marshal(manifest) 194 195 Expect(err).ToNot(HaveOccurred()) 196 Expect(string(actualBytes)).To(Equal(string(expectedManifestBytes))) 197 }) 198 }) 199 })