github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/cf/api/resources/applications_test.go (about) 1 package resources_test 2 3 import ( 4 "encoding/json" 5 "time" 6 7 "code.cloudfoundry.org/cli/cf/api/resources" 8 "code.cloudfoundry.org/cli/cf/models" 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 ) 12 13 var _ = Describe("Application resources", func() { 14 var resource *resources.ApplicationResource 15 16 Describe("New Application", func() { 17 BeforeEach(func() { 18 resource = new(resources.ApplicationResource) 19 }) 20 21 It("Adds a packageUpdatedAt timestamp", func() { 22 err := json.Unmarshal([]byte(` 23 { 24 "metadata": { 25 "guid":"application-1-guid" 26 }, 27 "entity": { 28 "package_updated_at": "2013-10-07T16:51:07+00:00" 29 } 30 }`), &resource) 31 32 Expect(err).NotTo(HaveOccurred()) 33 34 applicationModel := resource.ToModel() 35 timestamp, err := time.Parse(eventTimestampFormat, "2013-10-07T16:51:07+00:00") 36 Expect(err).ToNot(HaveOccurred()) 37 Expect(*applicationModel.PackageUpdatedAt).To(Equal(timestamp)) 38 }) 39 }) 40 41 Describe("NewApplicationEntityFromAppParams", func() { 42 var ( 43 appParams models.AppParams 44 45 diskQuota, memory int64 46 healthCheckTimeout, instanceCount int 47 healthCheckHTTPEndpoint string 48 diego, enableSSH bool 49 packageUpdatedAt time.Time 50 appPorts []int 51 environmentVars map[string]interface{} 52 53 buildpackURL, 54 command, 55 healthCheckType, 56 dockerImage, 57 name, 58 spaceGUID, 59 stackGUID, 60 state string 61 ) 62 63 BeforeEach(func() { 64 buildpackURL = "buildpack-url" 65 command = "command" 66 diskQuota = int64(1024) 67 environmentVars = map[string]interface{}{ 68 "foo": "bar", 69 "baz": "quux", 70 } 71 healthCheckType = "none" 72 healthCheckTimeout = 5 73 healthCheckHTTPEndpoint = "/some-endpoint" 74 dockerImage = "docker-image" 75 diego = true 76 enableSSH = true 77 instanceCount = 5 78 memory = int64(2048) 79 name = "app-name" 80 spaceGUID = "space-guid" 81 stackGUID = "stack-guid" 82 state = "state" 83 packageUpdatedAt = time.Now() 84 appPorts = []int{9090, 123} 85 86 appParams = models.AppParams{ 87 BuildpackURL: &buildpackURL, 88 Command: &command, 89 DiskQuota: &diskQuota, 90 EnvironmentVars: &environmentVars, 91 HealthCheckType: &healthCheckType, 92 HealthCheckTimeout: &healthCheckTimeout, 93 HealthCheckHTTPEndpoint: &healthCheckHTTPEndpoint, 94 DockerImage: &dockerImage, 95 Diego: &diego, 96 EnableSSH: &enableSSH, 97 InstanceCount: &instanceCount, 98 Memory: &memory, 99 Name: &name, 100 SpaceGUID: &spaceGUID, 101 StackGUID: &stackGUID, 102 State: &state, 103 PackageUpdatedAt: &packageUpdatedAt, 104 AppPorts: &appPorts, 105 } 106 }) 107 108 It("directly assigns some attributes", func() { 109 entity := resources.NewApplicationEntityFromAppParams(appParams) 110 Expect(*entity.Buildpack).To(Equal(buildpackURL)) 111 Expect(*entity.Name).To(Equal(name)) 112 Expect(*entity.SpaceGUID).To(Equal(spaceGUID)) 113 Expect(*entity.Instances).To(Equal(instanceCount)) 114 Expect(*entity.Memory).To(Equal(memory)) 115 Expect(*entity.DiskQuota).To(Equal(diskQuota)) 116 Expect(*entity.StackGUID).To(Equal(stackGUID)) 117 Expect(*entity.Command).To(Equal(command)) 118 Expect(*entity.HealthCheckType).To(Equal(healthCheckType)) 119 Expect(*entity.HealthCheckTimeout).To(Equal(healthCheckTimeout)) 120 Expect(*entity.HealthCheckHTTPEndpoint).To(Equal(healthCheckHTTPEndpoint)) 121 Expect(*entity.DockerImage).To(Equal(dockerImage)) 122 Expect(*entity.Diego).To(Equal(diego)) 123 Expect(*entity.EnableSSH).To(Equal(enableSSH)) 124 Expect(*entity.PackageUpdatedAt).To(Equal(packageUpdatedAt)) 125 Expect(*entity.AppPorts).To(Equal(appPorts)) 126 }) 127 128 It("upcases the state", func() { 129 entity := resources.NewApplicationEntityFromAppParams(appParams) 130 Expect(*entity.State).To(Equal("STATE")) 131 }) 132 133 It("does not include environment vars when they do not exist in the params", func() { 134 appParams.EnvironmentVars = nil 135 entity := resources.NewApplicationEntityFromAppParams(appParams) 136 Expect(entity.EnvironmentJSON).To(BeNil()) 137 }) 138 }) 139 })