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  })