@@ -48,6 +48,9 @@ module Bosh::Template::Test
4848 'metron_port' => 6789 ,
4949 'log_level' => 'debug' ,
5050 'allowed_cors_domains' => [ 'some-cors-domain' ] ,
51+ 'locket_ca_cert' => 'the locket ca cert' ,
52+ 'locket_client_cert' => 'the locket cert' ,
53+ 'locket_client_key' => 'the locket key' ,
5154 }
5255 end
5356
@@ -172,6 +175,11 @@ module Bosh::Template::Test
172175 'allowed_cors_domains' => [ 'some-cors-domain' ] ,
173176 'uaa_ca' => '/var/vcap/jobs/policy-server/config/certs/uaa_ca.crt' ,
174177 'request_timeout' => 5 ,
178+ 'asg_sync_interval' => 60 ,
179+ 'locket_address' => 'locket.service.cf.internal:8891' ,
180+ 'locket_ca_cert_file' => '/var/vcap/jobs/policy-server/config/certs/locket_ca.crt' ,
181+ 'locket_client_cert_file' => '/var/vcap/jobs/policy-server/config/certs/locket.crt' ,
182+ 'locket_client_key_file' => '/var/vcap/jobs/policy-server/config/certs/locket.key' ,
175183 } )
176184 end
177185
@@ -337,6 +345,145 @@ module Bosh::Template::Test
337345 JSON . parse ( template . render ( merged_manifest_properties ) )
338346 } . to raise_error ( 'policy_cleanup_interval must be at least 1 minute' )
339347 end
348+
349+ it 'raises an error when asg_sync_enabled is true and the asg_sync_interval is invalid' do
350+ intervals = [
351+ 'notanumber' ,
352+ 0 ,
353+ -1 ,
354+ 1.3 ,
355+ 0.5 ,
356+ true ,
357+ -0 ,
358+ '1' ,
359+ '0' ,
360+ ]
361+ merged_manifest_properties [ 'asg_sync_enabled' ] = true
362+ intervals . each do |interval |
363+ merged_manifest_properties [ 'asg_sync_interval' ] = interval
364+ expect {
365+ JSON . parse ( template . render ( merged_manifest_properties ) )
366+ } . to raise_error ( 'asg_sync_interval must be an integer greater than 0' )
367+ end
368+ end
369+ it 'raises an error when asg_sync_enabled is true and there is no locket_address defined' do
370+ addrs = [
371+ '' ,
372+ 'my-site-without-port.com' ,
373+ 'http://asdf.com' ,
374+ 'http://asdf:1234' ,
375+ 'asdf.com:badport' ,
376+ 'me+you:1234' ,
377+ ]
378+ merged_manifest_properties [ 'asg_sync_enabled' ] = true
379+ addrs . each do |addr |
380+ merged_manifest_properties [ 'locket_address' ] = addr
381+ expect {
382+ JSON . parse ( template . render ( merged_manifest_properties ) )
383+ } . to raise_error ( 'asg_sync_enabled is true but the locket_address is invalid' )
384+ end
385+ end
386+ it 'allows common domain name/ip addr combos for locket_address' do
387+ addrs = [
388+ 'test.com:1234' ,
389+ '10.10.10.10:1234' ,
390+ 'my-cool-site.com:1234' ,
391+ ]
392+ merged_manifest_properties [ 'asg_sync_enabled' ] = true
393+ addrs . each do |addr |
394+ merged_manifest_properties [ 'locket_address' ] = addr
395+ expect {
396+ JSON . parse ( template . render ( merged_manifest_properties ) )
397+ } . to_not raise_error
398+ end
399+ end
400+ end
401+ describe 'locket.ca.crt' do
402+ let ( :template ) { job . template ( 'config/certs/locket_ca.crt' ) }
403+ describe 'When the property exits' do
404+ it 'renders the locket cert' do
405+ cert = template . render ( merged_manifest_properties )
406+ expect ( cert . strip ) . to eq ( 'the locket ca cert' )
407+ end
408+ end
409+
410+ describe 'when the property doesn\'t exist' do
411+ before do
412+ merged_manifest_properties . delete ( 'locket_ca_cert' )
413+ end
414+
415+ it 'raises an error when asg_sync_enabled is true and there is no locket_ca_cert defined' do
416+ merged_manifest_properties [ 'asg_sync_enabled' ] = true
417+ expect {
418+ template . render ( merged_manifest_properties )
419+ } . to raise_error Bosh ::Template ::UnknownProperty
420+ end
421+
422+ it 'raises and error when asg_sync_enabled is false and there is no locket_ca_cert defined' do
423+ merged_manifest_properties [ 'asg_sync_enabled' ] = false
424+ expect {
425+ template . render ( merged_manifest_properties )
426+ } . to_not raise_error
427+ end
428+ end
429+ end
430+ describe 'locket.crt' do
431+ let ( :template ) { job . template ( 'config/certs/locket.crt' ) }
432+ describe 'When the property exits' do
433+ it 'renders the locket cert' do
434+ cert = template . render ( merged_manifest_properties )
435+ expect ( cert . strip ) . to eq ( 'the locket cert' )
436+ end
437+ end
438+
439+ describe 'when the property doesn\'t exist' do
440+ before do
441+ merged_manifest_properties . delete ( 'locket_client_cert' )
442+ end
443+
444+ it 'raises an error when asg_sync_enabled is true and there is no locket_client defined' do
445+ merged_manifest_properties [ 'asg_sync_enabled' ] = true
446+ expect {
447+ template . render ( merged_manifest_properties )
448+ } . to raise_error Bosh ::Template ::UnknownProperty
449+ end
450+
451+ it 'raises and error when asg_sync_enabled is false and there is no locket_client defined' do
452+ merged_manifest_properties [ 'asg_sync_enabled' ] = false
453+ expect {
454+ template . render ( merged_manifest_properties )
455+ } . to_not raise_error
456+ end
457+ end
458+ end
459+ describe 'locket.key' do
460+ let ( :template ) { job . template ( 'config/certs/locket.key' ) }
461+ describe 'When the property exits' do
462+ it 'renders the locket cert' do
463+ cert = template . render ( merged_manifest_properties )
464+ expect ( cert . strip ) . to eq ( 'the locket key' )
465+ end
466+ end
467+
468+ describe 'when the property doesn\'t exist' do
469+ before do
470+ merged_manifest_properties . delete ( 'locket_client_key' )
471+ end
472+
473+ it 'raises an error when asg_sync_enabled is true and there is no locket_client_key defined' do
474+ merged_manifest_properties [ 'asg_sync_enabled' ] = true
475+ expect {
476+ template . render ( merged_manifest_properties )
477+ } . to raise_error Bosh ::Template ::UnknownProperty
478+ end
479+
480+ it 'raises and error when asg_sync_enabled is false and there is no locket_client_key defined' do
481+ merged_manifest_properties [ 'asg_sync_enabled' ] = false
482+ expect {
483+ template . render ( merged_manifest_properties )
484+ } . to_not raise_error
485+ end
486+ end
340487 end
341488 end
342489end
0 commit comments