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