github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/api/resources/events_test.go (about)

     1  package resources_test
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	. "github.com/cloudfoundry/cli/cf/api/resources"
     7  	testtime "github.com/cloudfoundry/cli/testhelpers/time"
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  )
    11  
    12  var _ = Describe("Event resources", func() {
    13  	var resource EventResource
    14  
    15  	Describe("New V2 resources", func() {
    16  		BeforeEach(func() {
    17  			resource = new(EventResourceNewV2)
    18  		})
    19  
    20  		It("unmarshals app crash events", func() {
    21  			err := json.Unmarshal([]byte(`
    22  			{
    23  			  "metadata": {
    24  				"guid":"event-1-guid"
    25  			  },
    26  			  "entity": {
    27  				"timestamp": "2013-10-07T16:51:07+00:00",
    28  				"type": "app.crash",
    29  				"metadata": {
    30  				  "instance": "50dd66d3f8874b35988d23a25d19bfa0",
    31  				  "index": 3,
    32  				  "exit_status": -1,
    33  				  "exit_description": "unknown",
    34  				  "reason": "CRASHED"
    35  				}
    36  			  }
    37  			}`), &resource)
    38  
    39  			Expect(err).NotTo(HaveOccurred())
    40  
    41  			eventFields := resource.ToFields()
    42  			Expect(eventFields.Guid).To(Equal("event-1-guid"))
    43  			Expect(eventFields.Name).To(Equal("app.crash"))
    44  			Expect(eventFields.Timestamp).To(Equal(testtime.MustParse(eventTimestampFormat, "2013-10-07T16:51:07+00:00")))
    45  			Expect(eventFields.Description).To(Equal(`index: 3, reason: CRASHED, exit_description: unknown, exit_status: -1`))
    46  		})
    47  
    48  		It("unmarshals app update events", func() {
    49  			err := json.Unmarshal([]byte(`
    50  			{
    51  			  "metadata": {
    52  				"guid": "event-1-guid"
    53  			  },
    54  			  "entity": {
    55  				"type": "audit.app.update",
    56  				"timestamp": "2014-01-21T00:20:11+00:00",
    57  				"metadata": {
    58  				  "request": {
    59  				  	"state": "STOPPED",
    60  					"command": "PRIVATE DATA HIDDEN",
    61  					"instances": 1,
    62  					"memory": 256,
    63  					"environment_json": "PRIVATE DATA HIDDEN"
    64  				  }
    65  				}
    66  			  }
    67  			}`), &resource)
    68  
    69  			Expect(err).NotTo(HaveOccurred())
    70  
    71  			eventFields := resource.ToFields()
    72  			Expect(eventFields.Guid).To(Equal("event-1-guid"))
    73  			Expect(eventFields.Name).To(Equal("audit.app.update"))
    74  			Expect(eventFields.Timestamp).To(Equal(testtime.MustParse(eventTimestampFormat, "2014-01-21T00:20:11+00:00")))
    75  			Expect(eventFields.Description).To(Equal("instances: 1, memory: 256, state: STOPPED, command: PRIVATE DATA HIDDEN, environment_json: PRIVATE DATA HIDDEN"))
    76  		})
    77  
    78  		It("unmarshals app delete events", func() {
    79  			resource := new(EventResourceNewV2)
    80  			err := json.Unmarshal([]byte(`
    81  			{
    82  			  "metadata": {
    83  				"guid": "event-2-guid"
    84  			  },
    85  			  "entity": {
    86  				"type": "audit.app.delete-request",
    87  				"timestamp": "2014-01-21T18:39:09+00:00",
    88  				"metadata": {
    89  				  "request": {
    90  					"recursive": true
    91  				  }
    92  				}
    93  			  }
    94  			}`), &resource)
    95  
    96  			Expect(err).NotTo(HaveOccurred())
    97  
    98  			eventFields := resource.ToFields()
    99  			Expect(eventFields.Guid).To(Equal("event-2-guid"))
   100  			Expect(eventFields.Name).To(Equal("audit.app.delete-request"))
   101  			Expect(eventFields.Timestamp).To(Equal(testtime.MustParse(eventTimestampFormat, "2014-01-21T18:39:09+00:00")))
   102  			Expect(eventFields.Description).To(Equal("recursive: true"))
   103  		})
   104  
   105  		It("unmarshals the new v2 app create event", func() {
   106  			resource := new(EventResourceNewV2)
   107  			err := json.Unmarshal([]byte(`
   108  			{
   109  			  "metadata": {
   110  				"guid": "event-1-guid"
   111  			  },
   112  			  "entity": {
   113  				"type": "audit.app.create",
   114  				"timestamp": "2014-01-22T19:34:16+00:00",
   115  				"metadata": {
   116  				  "request": {
   117  					"name": "java-warz",
   118  					"space_guid": "6cc20fec-0dee-4843-b875-b124bfee791a",
   119  					"production": false,
   120  					"environment_json": "PRIVATE DATA HIDDEN",
   121  					"instances": 1,
   122  					"disk_quota": 1024,
   123  					"state": "STOPPED",
   124  					"console": false
   125  				  }
   126  				}
   127  			  }
   128  			}`), &resource)
   129  
   130  			Expect(err).NotTo(HaveOccurred())
   131  
   132  			eventFields := resource.ToFields()
   133  			Expect(eventFields.Guid).To(Equal("event-1-guid"))
   134  			Expect(eventFields.Name).To(Equal("audit.app.create"))
   135  			Expect(eventFields.Timestamp).To(Equal(testtime.MustParse(eventTimestampFormat, "2014-01-22T19:34:16+00:00")))
   136  			Expect(eventFields.Description).To(Equal("disk_quota: 1024, instances: 1, state: STOPPED, environment_json: PRIVATE DATA HIDDEN"))
   137  		})
   138  	})
   139  
   140  	Describe("Old V2 Resources", func() {
   141  		BeforeEach(func() {
   142  			resource = new(EventResourceOldV2)
   143  		})
   144  
   145  		It("unmarshals app crashed events", func() {
   146  			err := json.Unmarshal([]byte(`
   147  			{
   148  			  "metadata": {
   149  				"guid": "event-1-guid"
   150  			  },
   151  			  "entity": {
   152  				"timestamp": "2014-01-22T19:34:16+00:00",
   153  				"exit_status": 3,
   154  				"instance_index": 4,
   155  				"exit_description": "the exit description"
   156  			  }
   157  			}`), &resource)
   158  
   159  			Expect(err).NotTo(HaveOccurred())
   160  			eventFields := resource.ToFields()
   161  			Expect(eventFields.Guid).To(Equal("event-1-guid"))
   162  			Expect(eventFields.Name).To(Equal("app crashed"))
   163  			Expect(eventFields.Timestamp).To(Equal(testtime.MustParse(eventTimestampFormat, "2014-01-22T19:34:16+00:00")))
   164  			Expect(eventFields.Description).To(Equal("instance: 4, reason: the exit description, exit_status: 3"))
   165  		})
   166  	})
   167  })
   168  
   169  const eventTimestampFormat = "2006-01-02T15:04:05-07:00"