@@ -7,12 +7,20 @@ module Repositories
77 let ( :app ) { AppModel . make ( name : 'popsicle' ) }
88 let ( :user ) { User . make }
99 let ( :package ) { PackageModel . make ( app_guid : app . guid ) }
10- let ( :build ) { BuildModel . make ( app_guid : app . guid , package : package ) }
1110 let ( :email ) { 'user-email' }
1211 let ( :user_name ) { 'user-name' }
12+ let ( :build ) do
13+ BuildModel . make (
14+ app_guid : app . guid ,
15+ package : package ,
16+ created_by_user_guid : user . guid ,
17+ created_by_user_name : user_name ,
18+ created_by_user_email : email
19+ )
20+ end
1321 let ( :user_audit_info ) { UserAuditInfo . new ( user_email : email , user_name : user_name , user_guid : user . guid ) }
1422
15- describe '#record_create_by_staging ' do
23+ describe '#record_build_create ' do
1624 it 'creates a new audit.app.build.create event' do
1725 event = BuildEventRepository . record_build_create ( build , user_audit_info , app . name , package . space . guid , package . space . organization . guid )
1826 event . reload
@@ -32,6 +40,110 @@ module Repositories
3240 expect ( metadata [ 'package_guid' ] ) . to eq ( package . guid )
3341 end
3442 end
43+
44+ describe '#record_build_staged' do
45+ let ( :droplet ) { DropletModel . make ( app_guid : app . guid , package : package , build : build ) }
46+
47+ it 'creates a new audit.app.build.staged event' do
48+ event = BuildEventRepository . record_build_staged ( build , droplet )
49+ event . reload
50+
51+ expect ( event . type ) . to eq ( 'audit.app.build.staged' )
52+ expect ( event . actor ) . to eq ( user . guid )
53+ expect ( event . actor_type ) . to eq ( 'user' )
54+ expect ( event . actor_name ) . to eq ( email )
55+ expect ( event . actor_username ) . to eq ( user_name )
56+ expect ( event . actee ) . to eq ( app . guid )
57+ expect ( event . actee_type ) . to eq ( 'app' )
58+ expect ( event . actee_name ) . to eq ( 'popsicle' )
59+ expect ( event . space_guid ) . to eq ( app . space . guid )
60+ expect ( event . organization_guid ) . to eq ( app . space . organization . guid )
61+
62+ metadata = event . metadata
63+ expect ( metadata [ 'build_guid' ] ) . to eq ( build . guid )
64+ expect ( metadata [ 'package_guid' ] ) . to eq ( package . guid )
65+ expect ( metadata [ 'droplet_guid' ] ) . to eq ( droplet . guid )
66+ end
67+
68+ context 'when the droplet has buildpack lifecycle data' do
69+ let! ( :admin_buildpack ) { Buildpack . make ( name : 'ruby_buildpack' ) }
70+ let ( :lifecycle_data ) { BuildpackLifecycleDataModel . make ( droplet :, build :) }
71+ let! ( :lifecycle_buildpack1 ) do
72+ BuildpackLifecycleBuildpackModel . make (
73+ buildpack_lifecycle_data : lifecycle_data ,
74+ admin_buildpack_name : 'ruby_buildpack' ,
75+ buildpack_name : 'ruby' ,
76+ version : '1.8.0'
77+ )
78+ end
79+ let! ( :lifecycle_buildpack2 ) do
80+ BuildpackLifecycleBuildpackModel . make (
81+ buildpack_lifecycle_data : lifecycle_data ,
82+ admin_buildpack_name : nil ,
83+ buildpack_url : 'https://github.com/custom/buildpack' ,
84+ buildpack_name : 'custom-bp' ,
85+ version : '2.0.0'
86+ )
87+ end
88+
89+ before do
90+ droplet . buildpack_lifecycle_data = lifecycle_data
91+ droplet . save
92+ end
93+
94+ it 'includes buildpack information in metadata' do
95+ event = BuildEventRepository . record_build_staged ( build , droplet )
96+ event . reload
97+
98+ buildpacks = event . metadata [ 'buildpacks' ]
99+ expect ( buildpacks ) . to have ( 2 ) . items
100+
101+ expect ( buildpacks [ 0 ] [ 'name' ] ) . to eq ( 'ruby_buildpack' )
102+ expect ( buildpacks [ 0 ] [ 'buildpack_name' ] ) . to eq ( 'ruby' )
103+ expect ( buildpacks [ 0 ] [ 'version' ] ) . to eq ( '1.8.0' )
104+
105+ expect ( buildpacks [ 1 ] [ 'name' ] ) . to eq ( '***' )
106+ expect ( buildpacks [ 1 ] [ 'buildpack_name' ] ) . to eq ( 'custom-bp' )
107+ expect ( buildpacks [ 1 ] [ 'version' ] ) . to eq ( '2.0.0' )
108+ end
109+ end
110+
111+ context 'when the droplet has no lifecycle data' do
112+ it 'sets buildpacks to nil in metadata' do
113+ event = BuildEventRepository . record_build_staged ( build , droplet )
114+ event . reload
115+
116+ expect ( event . metadata [ 'buildpacks' ] ) . to be_nil
117+ end
118+ end
119+ end
120+
121+ describe '#record_build_failed' do
122+ let ( :error_id ) { 'StagingError' }
123+ let ( :error_message ) { 'Something went wrong during staging' }
124+
125+ it 'creates a new audit.app.build.failed event' do
126+ event = BuildEventRepository . record_build_failed ( build , error_id , error_message )
127+ event . reload
128+
129+ expect ( event . type ) . to eq ( 'audit.app.build.failed' )
130+ expect ( event . actor ) . to eq ( user . guid )
131+ expect ( event . actor_type ) . to eq ( 'user' )
132+ expect ( event . actor_name ) . to eq ( email )
133+ expect ( event . actor_username ) . to eq ( user_name )
134+ expect ( event . actee ) . to eq ( app . guid )
135+ expect ( event . actee_type ) . to eq ( 'app' )
136+ expect ( event . actee_name ) . to eq ( 'popsicle' )
137+ expect ( event . space_guid ) . to eq ( app . space . guid )
138+ expect ( event . organization_guid ) . to eq ( app . space . organization . guid )
139+
140+ metadata = event . metadata
141+ expect ( metadata [ 'build_guid' ] ) . to eq ( build . guid )
142+ expect ( metadata [ 'package_guid' ] ) . to eq ( package . guid )
143+ expect ( metadata [ 'error_id' ] ) . to eq ( error_id )
144+ expect ( metadata [ 'error_message' ] ) . to eq ( error_message )
145+ end
146+ end
35147 end
36148 end
37149end
0 commit comments