File tree Expand file tree Collapse file tree 5 files changed +132
-0
lines changed
Expand file tree Collapse file tree 5 files changed +132
-0
lines changed Original file line number Diff line number Diff line change 2828from cloudfoundry_client .v2 .spaces import SpaceManager as SpaceManagerV2
2929
3030from cloudfoundry_client .v3 .apps import AppManager
31+ from cloudfoundry_client .v3 .audit_events import AuditEventManager
3132from cloudfoundry_client .v3 .buildpacks import BuildpackManager
3233from cloudfoundry_client .v3 .domains import DomainManager
3334from cloudfoundry_client .v3 .droplets import DropletManager
@@ -119,6 +120,7 @@ class V3(object):
119120 def __init__ (self , cloud_controller_v3_url : str , credential_manager : "CloudFoundryClient" ):
120121 target_endpoint = cloud_controller_v3_url .removesuffix ("/v3" )
121122 self .apps = AppManager (target_endpoint , credential_manager )
123+ self .audit_events = AuditEventManager (target_endpoint , credential_manager )
122124 self .buildpacks = BuildpackManager (target_endpoint , credential_manager )
123125 self .domains = DomainManager (target_endpoint , credential_manager )
124126 self .droplets = DropletManager (target_endpoint , credential_manager )
Original file line number Diff line number Diff line change 1+ from typing import TYPE_CHECKING
2+
3+ from cloudfoundry_client .v3 .entities import EntityManager , Entity
4+
5+ if TYPE_CHECKING :
6+ from cloudfoundry_client .client import CloudFoundryClient
7+
8+
9+ class AuditEventManager (EntityManager [Entity ]):
10+ def __init__ (self , target_endpoint : str , client : "CloudFoundryClient" ):
11+ super ().__init__ (target_endpoint , client , "/v3/audit_events" )
Original file line number Diff line number Diff line change 1+ {
2+ "pagination" : {
3+ "total_results" : 1 ,
4+ "total_pages" : 1 ,
5+ "first" : {
6+ "href" : " https://api.example.org/v3/audit_events?page=1&per_page=2"
7+ },
8+ "last" : {
9+ "href" : " https://api.example.org/v3/audit_events?page=1&per_page=2"
10+ },
11+ "next" : null ,
12+ "previous" : null
13+ },
14+ "resources" : [
15+ {
16+ "guid" : " a595fe2f-01ff-4965-a50c-290258ab8582" ,
17+ "created_at" : " 2016-06-08T16:41:23Z" ,
18+ "updated_at" : " 2016-06-08T16:41:26Z" ,
19+ "type" : " audit.app.update" ,
20+ "actor" : {
21+ "guid" : " d144abe3-3d7b-40d4-b63f-2584798d3ee5" ,
22+ "type" : " user" ,
23+ "name" : " admin"
24+ },
25+ "target" : {
26+ "guid" : " 2e3151ba-9a63-4345-9c5b-6d8c238f4e55" ,
27+ "type" : " app" ,
28+ "name" : " my-app"
29+ },
30+ "data" : {
31+ "request" : {
32+ "recursive" : true
33+ }
34+ },
35+ "space" : {
36+ "guid" : " cb97dd25-d4f7-4185-9e6f-ad6e585c207c"
37+ },
38+ "organization" : {
39+ "guid" : " d9be96f5-ea8f-4549-923f-bec882e32e3c"
40+ },
41+ "links" : {
42+ "self" : {
43+ "href" : " https://api.example.org//v3/audit_events/a595fe2f-01ff-4965-a50c-290258ab8582"
44+ }
45+ }
46+ }
47+ ]
48+ }
Original file line number Diff line number Diff line change 1+ {
2+ "guid" : " a595fe2f-01ff-4965-a50c-290258ab8582" ,
3+ "created_at" : " 2016-06-08T16:41:23Z" ,
4+ "updated_at" : " 2016-06-08T16:41:26Z" ,
5+ "type" : " audit.app.update" ,
6+ "actor" : {
7+ "guid" : " d144abe3-3d7b-40d4-b63f-2584798d3ee5" ,
8+ "type" : " user" ,
9+ "name" : " admin"
10+ },
11+ "target" : {
12+ "guid" : " 2e3151ba-9a63-4345-9c5b-6d8c238f4e55" ,
13+ "type" : " app" ,
14+ "name" : " my-app"
15+ },
16+ "data" : {
17+ "request" : {
18+ "recursive" : true
19+ }
20+ },
21+ "space" : {
22+ "guid" : " cb97dd25-d4f7-4185-9e6f-ad6e585c207c"
23+ },
24+ "organization" : {
25+ "guid" : " d9be96f5-ea8f-4549-923f-bec882e32e3c"
26+ },
27+ "links" : {
28+ "self" : {
29+ "href" : " https://api.example.org/v3/audit_events/a595fe2f-01ff-4965-a50c-290258ab8582"
30+ }
31+ }
32+ }
Original file line number Diff line number Diff line change 1+ import unittest
2+ from http import HTTPStatus
3+
4+ from abstract_test_case import AbstractTestCase
5+ from cloudfoundry_client .v3 .entities import Entity
6+
7+
8+ class TestAuditEvents (unittest .TestCase , AbstractTestCase ):
9+ @classmethod
10+ def setUpClass (cls ):
11+ cls .mock_client_class ()
12+
13+ def setUp (self ):
14+ self .build_client ()
15+
16+ def test_list (self ):
17+ self .client .get .return_value = self .mock_response (
18+ "/v3/audit_events" ,
19+ HTTPStatus .OK ,
20+ None ,
21+ "v3" , "audit_events" , "GET_response.json"
22+ )
23+ all_audit_events = [audit_event for audit_event in self .client .v3 .audit_events .list ()]
24+ self .client .get .assert_called_with (self .client .get .return_value .url )
25+ self .assertEqual (1 , len (all_audit_events ))
26+ self .assertEqual (all_audit_events [0 ]["type" ], "audit.app.update" )
27+ self .assertIsInstance (all_audit_events [0 ], Entity )
28+
29+ def test_get (self ):
30+ self .client .get .return_value = self .mock_response (
31+ "/v3/audit_events/audit-event-id" ,
32+ HTTPStatus .OK ,
33+ None ,
34+ "v3" , "audit_events" , "GET_{id}_response.json"
35+ )
36+ result = self .client .v3 .audit_events .get ("audit-event-id" )
37+ self .client .get .assert_called_with (self .client .get .return_value .url )
38+ self .assertIsNotNone (result )
39+ self .assertIsInstance (result , Entity )
You can’t perform that action at this time.
0 commit comments