55module VCAP ::CloudController
66 RSpec . describe BuildpackCreate do
77 describe 'create' do
8+ let ( :user ) { User . make }
9+ let ( :user_email ) { '[email protected] ' } 10+ let ( :user_name ) { 'user-name' }
11+ let ( :user_audit_info ) { UserAuditInfo . new ( user_guid : user . guid , user_email : user_email , user_name : user_name ) }
12+
813 let! ( :buildpack1 ) { Buildpack . create ( name : 'take-up-position-1' , position : 1 ) }
914 let! ( :buildpack2 ) { Buildpack . create ( name : 'take-up-position-2' , position : 2 ) }
1015 let! ( :buildpack3 ) { Buildpack . create ( name : 'take-up-position-3' , position : 3 ) }
@@ -22,7 +27,7 @@ module VCAP::CloudController
2227 locked : true ,
2328 lifecycle : Lifecycles ::BUILDPACK
2429 )
25- buildpack = BuildpackCreate . new . create ( message )
30+ buildpack = BuildpackCreate . new ( user_audit_info ) . create ( message )
2631
2732 expect ( buildpack . name ) . to eq ( 'the-name' )
2833 expect ( buildpack . stack ) . to eq ( 'the-stack' )
@@ -31,6 +36,33 @@ module VCAP::CloudController
3136 expect ( buildpack . locked ) . to be ( true )
3237 expect ( buildpack . lifecycle ) . to eq ( Lifecycles ::BUILDPACK )
3338 end
39+
40+ it 'creates an audit event' do
41+ message = BuildpackCreateMessage . new (
42+ name : 'the-name' ,
43+ stack : 'the-stack' ,
44+ enabled : false ,
45+ locked : true
46+ )
47+ buildpack = BuildpackCreate . new ( user_audit_info ) . create ( message )
48+
49+ event = VCAP ::CloudController ::Event . last
50+
51+ expect ( event . values ) . to include (
52+ type : 'audit.buildpack.create' ,
53+ actee : buildpack . guid ,
54+ actee_type : 'buildpack' ,
55+ actee_name : buildpack . name ,
56+ actor : user_audit_info . user_guid ,
57+ actor_type : 'user' ,
58+ actor_name : user_audit_info . user_email ,
59+ actor_username : user_audit_info . user_name ,
60+ space_guid : '' ,
61+ organization_guid : ''
62+ )
63+ expect ( event . metadata ) . to eq ( { 'request' => message . audit_hash } )
64+ expect ( event . timestamp ) . to be
65+ end
3466 end
3567
3668 context 'when metadata is provided' do
@@ -49,7 +81,7 @@ module VCAP::CloudController
4981 }
5082 }
5183 )
52- buildpack = BuildpackCreate . new . create ( message )
84+ buildpack = BuildpackCreate . new ( user_audit_info ) . create ( message )
5385
5486 expect ( buildpack . name ) . to eq ( 'the-name' )
5587 expect ( buildpack . stack ) . to eq ( 'the-stack' )
@@ -68,7 +100,7 @@ module VCAP::CloudController
68100 name : 'the-name' ,
69101 position : 2
70102 )
71- buildpack = BuildpackCreate . new . create ( message )
103+ buildpack = BuildpackCreate . new ( user_audit_info ) . create ( message )
72104
73105 expect ( buildpack . position ) . to eq ( 2 )
74106 expect ( buildpack1 . reload . position ) . to eq ( 1 )
@@ -83,7 +115,7 @@ module VCAP::CloudController
83115 name : 'the-name' ,
84116 position : 42
85117 )
86- buildpack = BuildpackCreate . new . create ( message )
118+ buildpack = BuildpackCreate . new ( user_audit_info ) . create ( message )
87119
88120 expect ( buildpack . position ) . to eq ( 4 )
89121 end
@@ -97,7 +129,7 @@ module VCAP::CloudController
97129 stack : 'the-stack' ,
98130 locked : true
99131 )
100- buildpack = BuildpackCreate . new . create ( message )
132+ buildpack = BuildpackCreate . new ( user_audit_info ) . create ( message )
101133
102134 expect ( buildpack . enabled ) . to be ( true )
103135 end
@@ -110,7 +142,7 @@ module VCAP::CloudController
110142 stack : 'the-stack' ,
111143 enabled : true
112144 )
113- buildpack = BuildpackCreate . new . create ( message )
145+ buildpack = BuildpackCreate . new ( user_audit_info ) . create ( message )
114146
115147 expect ( buildpack . locked ) . to be ( false )
116148 end
@@ -123,7 +155,7 @@ module VCAP::CloudController
123155 stack : 'the-stack' ,
124156 lifecycle : Lifecycles ::CNB
125157 )
126- buildpack = BuildpackCreate . new . create ( message )
158+ buildpack = BuildpackCreate . new ( user_audit_info ) . create ( message )
127159
128160 expect ( buildpack . lifecycle ) . to eq ( Lifecycles ::CNB )
129161 end
@@ -138,7 +170,7 @@ module VCAP::CloudController
138170
139171 message = BuildpackCreateMessage . new ( name : 'foobar' )
140172 expect do
141- BuildpackCreate . new . create ( message )
173+ BuildpackCreate . new ( user_audit_info ) . create ( message )
142174 end . to raise_error ( BuildpackCreate ::Error , 'blork is busted' )
143175 end
144176 end
@@ -148,7 +180,7 @@ module VCAP::CloudController
148180 message = BuildpackCreateMessage . new ( name : 'the-name' , stack : 'does-not-exist' )
149181
150182 expect do
151- BuildpackCreate . new . create ( message )
183+ BuildpackCreate . new ( user_audit_info ) . create ( message )
152184 end . to raise_error ( BuildpackCreate ::Error , "Stack 'does-not-exist' does not exist" )
153185 end
154186 end
@@ -164,7 +196,7 @@ module VCAP::CloudController
164196 it 'raises a human-friendly error' do
165197 message = BuildpackCreateMessage . new ( name :)
166198 expect do
167- BuildpackCreate . new . create ( message )
199+ BuildpackCreate . new ( user_audit_info ) . create ( message )
168200 end . to raise_error ( BuildpackCreate ::Error , "Buildpack with name 'the-name' and an unassigned stack already exists" )
169201 end
170202 end
@@ -177,7 +209,7 @@ module VCAP::CloudController
177209 it 'raises a human-friendly error' do
178210 message = BuildpackCreateMessage . new ( name : name , stack : 'the-stack' )
179211 expect do
180- BuildpackCreate . new . create ( message )
212+ BuildpackCreate . new ( user_audit_info ) . create ( message )
181213 end . to raise_error ( BuildpackCreate ::Error , "Buildpack with name 'the-name', stack 'the-stack' and lifecycle 'buildpack' already exists" )
182214 end
183215 end
0 commit comments