Skip to content

Commit e5a6c86

Browse files
committed
Advanced Polishing
This commit adds integration tests for Audit Events, and handles issues uncovered by the tests. It also adds some missing javadoc, and tweaks some naming and visibilities. [resolves #1014] Signed-off-by: Paul Harris <[email protected]>
1 parent 8900835 commit e5a6c86

File tree

17 files changed

+342
-146
lines changed

17 files changed

+342
-146
lines changed

cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/client/_ReactorCloudFoundryClient.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.cloudfoundry.client.v2.userprovidedserviceinstances.UserProvidedServiceInstances;
5050
import org.cloudfoundry.client.v2.users.Users;
5151
import org.cloudfoundry.client.v3.applications.ApplicationsV3;
52+
import org.cloudfoundry.client.v3.auditevents.AuditEventsV3;
5253
import org.cloudfoundry.client.v3.builds.Builds;
5354
import org.cloudfoundry.client.v3.deployments.DeploymentsV3;
5455
import org.cloudfoundry.client.v3.domains.DomainsV3;
@@ -141,6 +142,12 @@ public ApplicationsV3 applicationsV3() {
141142
return new ReactorApplicationsV3(getConnectionContext(), getRootV3(), getTokenProvider(), getRequestTags());
142143
}
143144

145+
@Override
146+
@Value.Derived
147+
public AuditEventsV3 auditEventsV3() {
148+
return new ReactorAuditEventsV3(getConnectionContext(), getRootV3(), getTokenProvider(), getRequestTags());
149+
}
150+
144151
@Override
145152
@Value.Derived
146153
public Blobstores blobstores() {
@@ -200,12 +207,6 @@ public Events events() {
200207
return new ReactorEvents(getConnectionContext(), getRootV2(), getTokenProvider(), getRequestTags());
201208
}
202209

203-
@Override
204-
@Value.Derived
205-
public ReactorAuditEventsV3 eventsV3() {
206-
return new ReactorAuditEventsV3(getConnectionContext(), getRootV2(), getTokenProvider(), getRequestTags());
207-
}
208-
209210
@Override
210211
@Value.Derived
211212
public FeatureFlags featureFlags() {

cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/client/v3/auditevents/ReactorAuditEventsV3.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,14 @@ public ReactorAuditEventsV3(ConnectionContext connectionContext, Mono<String> ro
3636

3737
@Override
3838
public Mono<GetAuditEventResponse> get(GetAuditEventRequest request) {
39-
return get(request, GetAuditEventResponse.class, uriComponentsBuilder -> uriComponentsBuilder.pathSegment("audit_events", request.getEventId()));
39+
return get(request, GetAuditEventResponse.class, builder -> builder.pathSegment("audit_events", request.getEventId()))
40+
.checkpoint();
4041
}
4142

4243
@Override
4344
public Mono<ListAuditEventsResponse> list(ListAuditEventsRequest request) {
44-
return get(request, ListAuditEventsResponse.class, uriComponentsBuilder -> uriComponentsBuilder.pathSegment("audit_events"))
45+
return get(request, ListAuditEventsResponse.class, builder -> builder.pathSegment("audit_events"))
4546
.checkpoint();
4647
}
48+
4749
}

cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/client/v3/auditevents/ReactorAuditEventsV3Test.java

Lines changed: 27 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@
1818

1919
import org.cloudfoundry.client.v3.Link;
2020
import org.cloudfoundry.client.v3.Pagination;
21-
import org.cloudfoundry.client.v3.auditevents.AuditEventReference;
21+
import org.cloudfoundry.client.v3.auditevents.AuditEventActor;
2222
import org.cloudfoundry.client.v3.auditevents.AuditEventRelationship;
2323
import org.cloudfoundry.client.v3.auditevents.AuditEventResource;
24+
import org.cloudfoundry.client.v3.auditevents.AuditEventTarget;
2425
import org.cloudfoundry.client.v3.auditevents.GetAuditEventRequest;
2526
import org.cloudfoundry.client.v3.auditevents.GetAuditEventResponse;
2627
import org.cloudfoundry.client.v3.auditevents.ListAuditEventsRequest;
@@ -40,7 +41,7 @@
4041

4142
public class ReactorAuditEventsV3Test extends AbstractClientApiTest {
4243

43-
private ReactorAuditEventsV3 events = new ReactorAuditEventsV3(CONNECTION_CONTEXT, this.root, TOKEN_PROVIDER, Collections.emptyMap());
44+
private final ReactorAuditEventsV3 events = new ReactorAuditEventsV3(CONNECTION_CONTEXT, this.root, TOKEN_PROVIDER, Collections.emptyMap());
4445

4546
@Test
4647
public void get() {
@@ -61,24 +62,25 @@ public void get() {
6162
.as(StepVerifier::create)
6263
.expectNext(GetAuditEventResponse.builder()
6364
.id("a595fe2f-01ff-4965-a50c-290258ab8582")
64-
.createdAt("2016-11-04T16:41:23Z")
65-
.updatedAt("2016-11-04T16:41:23Z")
65+
.createdAt("2016-06-08T16:41:23Z")
66+
.updatedAt("2016-06-08T16:41:26Z")
6667
.type("audit.app.update")
67-
.auditEventActor(AuditEventReference.builder()
68-
.id("test-user-id")
68+
.auditEventActor(AuditEventActor.builder()
69+
.id("d144abe3-3d7b-40d4-b63f-2584798d3ee5")
6970
.name("admin")
7071
.type("user")
7172
.build())
72-
.auditEventTarget(AuditEventReference.builder()
73-
.id("test-app-id")
74-
.name("test-app")
73+
.auditEventTarget(AuditEventTarget.builder()
74+
.id("2e3151ba-9a63-4345-9c5b-6d8c238f4e55")
75+
.name("my-app")
7576
.type("app")
7677
.build())
78+
.data((Collections.singletonMap("request", null)))
7779
.spaceRelationship(AuditEventRelationship.builder()
78-
.id("test-space-id")
80+
.id("cb97dd25-d4f7-4185-9e6f-ad6e585c207c")
7981
.build())
8082
.organizationRelationship(AuditEventRelationship.builder()
81-
.id("test-organization-id")
83+
.id("d9be96f5-ea8f-4549-923f-bec882e32e3c")
8284
.build())
8385
.link("self", Link.builder()
8486
.href("https://api.example.org/v3/audit_events/a595fe2f-01ff-4965-a50c-290258ab8582")
@@ -106,66 +108,39 @@ public void list() {
106108
.as(StepVerifier::create)
107109
.expectNext(ListAuditEventsResponse.builder()
108110
.pagination(Pagination.builder()
109-
.totalResults(3)
110-
.totalPages(2)
111+
.totalResults(1)
112+
.totalPages(1)
111113
.first(Link.builder()
112114
.href("https://api.example.org/v3/audit_events?page=1&per_page=2")
113115
.build())
114116
.last(Link.builder()
115-
.href("https://api.example.org/v3/audit_events?page=2&per_page=2")
116-
.build())
117-
.next(Link.builder()
118-
.href("https://api.example.org/v3/audit_events?page=2&per_page=2")
117+
.href("https://api.example.org/v3/audit_events?page=1&per_page=2")
119118
.build())
120119
.build())
121120
.resource(AuditEventResource.builder()
122121
.id("a595fe2f-01ff-4965-a50c-290258ab8582")
123-
.createdAt("2016-11-04T16:41:23Z")
124-
.updatedAt("2016-11-04T16:41:23Z")
122+
.createdAt("2016-06-08T16:41:23Z")
123+
.updatedAt("2016-06-08T16:41:26Z")
125124
.type("audit.app.update")
126-
.auditEventActor(AuditEventReference.builder()
127-
.id("test-user-id")
125+
.auditEventActor(AuditEventActor.builder()
126+
.id("d144abe3-3d7b-40d4-b63f-2584798d3ee5")
128127
.name("admin")
129128
.type("user")
130129
.build())
131-
.auditEventTarget(AuditEventReference.builder()
132-
.id("test-app-id")
133-
.name("test-app")
134-
.type("app")
135-
.build())
136-
.spaceRelationship(AuditEventRelationship.builder()
137-
.id("test-space-id")
138-
.build())
139-
.organizationRelationship(AuditEventRelationship.builder()
140-
.id("test-organization-id")
141-
.build())
142-
.link("self", Link.builder()
143-
.href("https://api.example.org/v3/audit_events/a595fe2f-01ff-4965-a50c-290258ab8582")
144-
.build())
145-
.build())
146-
.resource(AuditEventResource.builder()
147-
.id("8a8a14a3-beab-4946-ab6a-3e69741c6405")
148-
.createdAt("2016-11-04T16:41:23Z")
149-
.updatedAt("2016-11-04T16:41:23Z")
150-
.type("audit.app.update")
151-
.auditEventActor(AuditEventReference.builder()
152-
.id("test-user-id")
153-
.name("admin-admin")
154-
.type("user")
155-
.build())
156-
.auditEventTarget(AuditEventReference.builder()
157-
.id("test-app-id")
158-
.name("test-app-2")
130+
.auditEventTarget(AuditEventTarget.builder()
131+
.id("2e3151ba-9a63-4345-9c5b-6d8c238f4e55")
132+
.name("my-app")
159133
.type("app")
160134
.build())
135+
.data(Collections.singletonMap("request", Collections.singletonMap("recursive", true)))
161136
.spaceRelationship(AuditEventRelationship.builder()
162-
.id("test-space-id-1")
137+
.id("cb97dd25-d4f7-4185-9e6f-ad6e585c207c")
163138
.build())
164139
.organizationRelationship(AuditEventRelationship.builder()
165-
.id("test-organization-id-1")
140+
.id("d9be96f5-ea8f-4549-923f-bec882e32e3c")
166141
.build())
167142
.link("self", Link.builder()
168-
.href("https://api.example.org/v3/audit_events/8a8a14a3-beab-4946-ab6a-3e69741c6405")
143+
.href("https://api.example.org//v3/audit_events/a595fe2f-01ff-4965-a50c-290258ab8582")
169144
.build())
170145
.build())
171146
.build())
Lines changed: 16 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,48 @@
11
{
22
"pagination": {
3-
"total_results": 3,
4-
"total_pages": 2,
3+
"total_results": 1,
4+
"total_pages": 1,
55
"first": {
66
"href": "https://api.example.org/v3/audit_events?page=1&per_page=2"
77
},
88
"last": {
9-
"href": "https://api.example.org/v3/audit_events?page=2&per_page=2"
10-
},
11-
"next": {
12-
"href": "https://api.example.org/v3/audit_events?page=2&per_page=2"
9+
"href": "https://api.example.org/v3/audit_events?page=1&per_page=2"
1310
},
11+
"next": null,
1412
"previous": null
1513
},
1614
"resources": [
1715
{
1816
"guid": "a595fe2f-01ff-4965-a50c-290258ab8582",
19-
"created_at": "2016-11-04T16:41:23Z",
20-
"updated_at": "2016-11-04T16:41:23Z",
17+
"created_at": "2016-06-08T16:41:23Z",
18+
"updated_at": "2016-06-08T16:41:26Z",
2119
"type": "audit.app.update",
2220
"actor": {
23-
"guid": "test-user-id",
21+
"guid": "d144abe3-3d7b-40d4-b63f-2584798d3ee5",
2422
"type": "user",
2523
"name": "admin"
2624
},
2725
"target": {
28-
"guid": "test-app-id",
26+
"guid": "2e3151ba-9a63-4345-9c5b-6d8c238f4e55",
2927
"type": "app",
30-
"name": "test-app"
28+
"name": "my-app"
3129
},
32-
"space": {
33-
"guid": "test-space-id"
34-
},
35-
"organization": {
36-
"guid": "test-organization-id"
37-
},
38-
"links": {
39-
"self": {
40-
"href": "https://api.example.org/v3/audit_events/a595fe2f-01ff-4965-a50c-290258ab8582"
30+
"data": {
31+
"request": {
32+
"recursive": true
4133
}
42-
}
43-
},
44-
{
45-
"guid": "8a8a14a3-beab-4946-ab6a-3e69741c6405",
46-
"created_at": "2016-11-04T16:41:23Z",
47-
"updated_at": "2016-11-04T16:41:23Z",
48-
"type": "audit.app.update",
49-
"actor": {
50-
"guid": "test-user-id",
51-
"type": "user",
52-
"name": "admin-admin"
53-
},
54-
"target": {
55-
"guid": "test-app-id",
56-
"type": "app",
57-
"name": "test-app-2"
5834
},
5935
"space": {
60-
"guid": "test-space-id-1"
36+
"guid": "cb97dd25-d4f7-4185-9e6f-ad6e585c207c"
6137
},
6238
"organization": {
63-
"guid": "test-organization-id-1"
39+
"guid": "d9be96f5-ea8f-4549-923f-bec882e32e3c"
6440
},
6541
"links": {
6642
"self": {
67-
"href": "https://api.example.org/v3/audit_events/8a8a14a3-beab-4946-ab6a-3e69741c6405"
43+
"href": "https://api.example.org//v3/audit_events/a595fe2f-01ff-4965-a50c-290258ab8582"
6844
}
6945
}
7046
}
7147
]
72-
}
48+
}

cloudfoundry-client-reactor/src/test/resources/fixtures/client/v3/auditevents/GET_{id}_response.json

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
11
{
22
"guid": "a595fe2f-01ff-4965-a50c-290258ab8582",
3-
"created_at": "2016-11-04T16:41:23Z",
4-
"updated_at": "2016-11-04T16:41:23Z",
3+
"created_at": "2016-06-08T16:41:23Z",
4+
"updated_at": "2016-06-08T16:41:26Z",
55
"type": "audit.app.update",
66
"actor": {
7-
"guid": "test-user-id",
7+
"guid": "d144abe3-3d7b-40d4-b63f-2584798d3ee5",
88
"type": "user",
99
"name": "admin"
1010
},
1111
"target": {
12-
"guid": "test-app-id",
12+
"guid": "2e3151ba-9a63-4345-9c5b-6d8c238f4e55",
1313
"type": "app",
14-
"name": "test-app"
14+
"name": "my-app"
15+
},
16+
"data": {
17+
"request": null
1518
},
1619
"space": {
17-
"guid": "test-space-id"
20+
"guid": "cb97dd25-d4f7-4185-9e6f-ad6e585c207c"
1821
},
1922
"organization": {
20-
"guid": "test-organization-id"
23+
"guid": "d9be96f5-ea8f-4549-923f-bec882e32e3c"
2124
},
2225
"links": {
2326
"self": {

cloudfoundry-client/src/main/java/org/cloudfoundry/client/CloudFoundryClient.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ public interface CloudFoundryClient {
8888
*/
8989
ApplicationsV3 applicationsV3();
9090

91+
/**
92+
* Main entry point to the Cloud Foundry Audit Events V3 Client API
93+
*/
94+
AuditEventsV3 auditEventsV3();
95+
9196
/**
9297
* Main entry point to the Cloud Foundry Blobstores Client API
9398
*/
@@ -133,11 +138,6 @@ public interface CloudFoundryClient {
133138
*/
134139
Events events();
135140

136-
/**
137-
* Main entry point to the Cloud Foundry Audit Events V3 Client API
138-
*/
139-
AuditEventsV3 eventsV3();
140-
141141
/**
142142
* Main entry point to the Cloud Foundry Feature Flags Client API
143143
*/

0 commit comments

Comments
 (0)