github.com/elopio/cli@v6.21.2-0.20160902224010-ea909d1fdb2f+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 diego, enableSSH bool 48 packageUpdatedAt time.Time 49 appPorts []int 50 environmentVars map[string]interface{} 51 52 buildpackURL, 53 command, 54 healthCheckType, 55 dockerImage, 56 name, 57 spaceGUID, 58 stackGUID, 59 state string 60 ) 61 62 BeforeEach(func() { 63 buildpackURL = "buildpack-url" 64 command = "command" 65 diskQuota = int64(1024) 66 environmentVars = map[string]interface{}{ 67 "foo": "bar", 68 "baz": "quux", 69 } 70 healthCheckType = "none" 71 healthCheckTimeout = 5 72 dockerImage = "docker-image" 73 diego = true 74 enableSSH = true 75 instanceCount = 5 76 memory = int64(2048) 77 name = "app-name" 78 spaceGUID = "space-guid" 79 stackGUID = "stack-guid" 80 state = "state" 81 packageUpdatedAt = time.Now() 82 appPorts = []int{9090, 123} 83 84 appParams = models.AppParams{ 85 BuildpackURL: &buildpackURL, 86 Command: &command, 87 DiskQuota: &diskQuota, 88 EnvironmentVars: &environmentVars, 89 HealthCheckType: &healthCheckType, 90 HealthCheckTimeout: &healthCheckTimeout, 91 DockerImage: &dockerImage, 92 Diego: &diego, 93 EnableSSH: &enableSSH, 94 InstanceCount: &instanceCount, 95 Memory: &memory, 96 Name: &name, 97 SpaceGUID: &spaceGUID, 98 StackGUID: &stackGUID, 99 State: &state, 100 PackageUpdatedAt: &packageUpdatedAt, 101 AppPorts: &appPorts, 102 } 103 }) 104 105 It("directly assigns some attributes", func() { 106 entity := resources.NewApplicationEntityFromAppParams(appParams) 107 Expect(*entity.Buildpack).To(Equal(buildpackURL)) 108 Expect(*entity.Name).To(Equal(name)) 109 Expect(*entity.SpaceGUID).To(Equal(spaceGUID)) 110 Expect(*entity.Instances).To(Equal(instanceCount)) 111 Expect(*entity.Memory).To(Equal(memory)) 112 Expect(*entity.DiskQuota).To(Equal(diskQuota)) 113 Expect(*entity.StackGUID).To(Equal(stackGUID)) 114 Expect(*entity.Command).To(Equal(command)) 115 Expect(*entity.HealthCheckType).To(Equal(healthCheckType)) 116 Expect(*entity.HealthCheckTimeout).To(Equal(healthCheckTimeout)) 117 Expect(*entity.DockerImage).To(Equal(dockerImage)) 118 Expect(*entity.Diego).To(Equal(diego)) 119 Expect(*entity.EnableSSH).To(Equal(enableSSH)) 120 Expect(*entity.PackageUpdatedAt).To(Equal(packageUpdatedAt)) 121 Expect(*entity.AppPorts).To(Equal(appPorts)) 122 }) 123 124 It("upcases the state", func() { 125 entity := resources.NewApplicationEntityFromAppParams(appParams) 126 Expect(*entity.State).To(Equal("STATE")) 127 }) 128 129 It("does not include environment vars when they do not exist in the params", func() { 130 appParams.EnvironmentVars = nil 131 entity := resources.NewApplicationEntityFromAppParams(appParams) 132 Expect(entity.EnvironmentJSON).To(BeNil()) 133 }) 134 }) 135 })