github.com/elopio/cli@v6.21.2-0.20160902224010-ea909d1fdb2f+incompatible/cf/api/appevents/app_events_test.go (about) 1 package appevents_test 2 3 import ( 4 "net/http" 5 "net/http/httptest" 6 7 "time" 8 9 . "code.cloudfoundry.org/cli/cf/api/appevents" 10 "code.cloudfoundry.org/cli/cf/api/strategy" 11 "code.cloudfoundry.org/cli/cf/configuration/coreconfig" 12 "code.cloudfoundry.org/cli/cf/models" 13 "code.cloudfoundry.org/cli/cf/net" 14 "code.cloudfoundry.org/cli/cf/terminal/terminalfakes" 15 "code.cloudfoundry.org/cli/cf/trace/tracefakes" 16 testconfig "code.cloudfoundry.org/cli/testhelpers/configuration" 17 testnet "code.cloudfoundry.org/cli/testhelpers/net" 18 . "github.com/onsi/ginkgo" 19 . "github.com/onsi/gomega" 20 ) 21 22 var _ = Describe("App Events Repo", func() { 23 var ( 24 server *httptest.Server 25 handler *testnet.TestHandler 26 config coreconfig.ReadWriter 27 repo Repository 28 ) 29 30 BeforeEach(func() { 31 config = testconfig.NewRepository() 32 config.SetAccessToken("BEARER my_access_token") 33 config.SetAPIVersion("2.2.0") 34 }) 35 36 JustBeforeEach(func() { 37 strategy := strategy.NewEndpointStrategy(config.APIVersion()) 38 gateway := net.NewCloudControllerGateway(config, time.Now, new(terminalfakes.FakeUI), new(tracefakes.FakePrinter), "") 39 repo = NewCloudControllerAppEventsRepository(config, gateway, strategy) 40 }) 41 42 AfterEach(func() { 43 server.Close() 44 }) 45 46 setupTestServer := func(requests ...testnet.TestRequest) { 47 server, handler = testnet.NewServer(requests) 48 config.SetAPIEndpoint(server.URL) 49 } 50 51 Describe("list recent events", func() { 52 It("returns the most recent events", func() { 53 setupTestServer(eventsRequest) 54 55 list, err := repo.RecentEvents("my-app-guid", 2) 56 Expect(err).ToNot(HaveOccurred()) 57 timestamp, err := time.Parse(eventTimestampFormat, "2014-01-21T00:20:11+00:00") 58 Expect(err).ToNot(HaveOccurred()) 59 60 Expect(list).To(ConsistOf([]models.EventFields{ 61 { 62 GUID: "event-1-guid", 63 Name: "audit.app.update", 64 Timestamp: timestamp, 65 Description: "instances: 1, memory: 256, command: PRIVATE DATA HIDDEN, environment_json: PRIVATE DATA HIDDEN", 66 Actor: "cf-1-client", 67 ActorName: "somebody@pivotallabs.com", 68 }, 69 { 70 GUID: "event-2-guid", 71 Name: "audit.app.update", 72 Timestamp: timestamp, 73 Description: "instances: 1, memory: 256, command: PRIVATE DATA HIDDEN, environment_json: PRIVATE DATA HIDDEN", 74 Actor: "cf-2-client", 75 ActorName: "nobody@pivotallabs.com", 76 }, 77 })) 78 }) 79 }) 80 }) 81 82 const eventTimestampFormat = "2006-01-02T15:04:05-07:00" 83 84 var eventsRequest = testnet.TestRequest{ 85 Method: "GET", 86 Path: "/v2/events?q=actee%3Amy-app-guid&order-direction=desc&results-per-page=2", 87 Response: testnet.TestResponse{ 88 Status: http.StatusOK, 89 Body: `{ 90 "total_results": 1, 91 "total_pages": 1, 92 "prev_url": null, 93 "next_url": "/v2/events?q=actee%3Amy-app-guid&page=2", 94 "resources": [ 95 { 96 "metadata": { 97 "guid": "event-1-guid" 98 }, 99 "entity": { 100 "type": "audit.app.update", 101 "timestamp": "2014-01-21T00:20:11+00:00", 102 "actor": "cf-1-client", 103 "actor_name": "somebody@pivotallabs.com", 104 "metadata": { 105 "request": { 106 "command": "PRIVATE DATA HIDDEN", 107 "instances": 1, 108 "memory": 256, 109 "name": "dora", 110 "environment_json": "PRIVATE DATA HIDDEN" 111 } 112 } 113 } 114 }, 115 { 116 "metadata": { 117 "guid": "event-2-guid" 118 }, 119 "entity": { 120 "type": "audit.app.update", 121 "actor": "cf-2-client", 122 "actor_name": "nobody@pivotallabs.com", 123 "timestamp": "2014-01-21T00:20:11+00:00", 124 "metadata": { 125 "request": { 126 "command": "PRIVATE DATA HIDDEN", 127 "instances": 1, 128 "memory": 256, 129 "name": "dora", 130 "environment_json": "PRIVATE DATA HIDDEN" 131 } 132 } 133 } 134 } 135 ] 136 }`}}