@@ -5,31 +5,65 @@ module CloudController
55 module Blobstore
66 RSpec . describe StorageCliClient do
77 describe 'registry build and lookup' do
8- it 'builds the correct client' do
8+ it 'builds the correct client when JSON has provider AzureRM ' do
99 droplets_cfg = Tempfile . new ( [ 'droplets' , '.json' ] )
10- droplets_cfg . write ( { connection_config : { provider : 'AzureRM' } } . to_json )
10+ droplets_cfg . write ( { provider : 'AzureRM' ,
11+ azure_storage_access_key : 'bommelkey' ,
12+ azure_storage_account_name : 'bommel' ,
13+ container_name : 'bommelcontainer' ,
14+ environment : 'BommelCloud' } . to_json )
1115 droplets_cfg . flush
1216
1317 config_double = instance_double ( VCAP ::CloudController ::Config )
1418 allow ( VCAP ::CloudController ::Config ) . to receive ( :config ) . and_return ( config_double )
1519 allow ( config_double ) . to receive ( :get ) . with ( :storage_cli_config_file_droplets ) . and_return ( droplets_cfg . path )
1620
17- client_from_registry = StorageCliClient . build ( connection_config : { provider : 'AzureRM' } , directory_key : 'dummy-key' , root_dir : 'dummy-root' , resource_type : 'droplets' )
21+ client_from_registry = StorageCliClient . build (
22+ directory_key : 'dummy-key' ,
23+ root_dir : 'dummy-root' ,
24+ resource_type : 'droplets'
25+ )
1826 expect ( client_from_registry ) . to be_a ( AzureStorageCliClient )
1927
2028 droplets_cfg . close!
2129 end
2230
2331 it 'raises an error for an unregistered provider' do
32+ droplets_cfg = Tempfile . new ( [ 'droplets' , '.json' ] )
33+ droplets_cfg . write (
34+ { provider : 'UnknownProvider' ,
35+ azure_storage_access_key : 'bommelkey' ,
36+ azure_storage_account_name : 'bommel' ,
37+ container_name : 'bommelcontainer' ,
38+ environment : 'BommelCloud' } . to_json
39+ )
40+ droplets_cfg . flush
41+
42+ config_double = instance_double ( VCAP ::CloudController ::Config )
43+ allow ( VCAP ::CloudController ::Config ) . to receive ( :config ) . and_return ( config_double )
44+ allow ( config_double ) . to receive ( :get ) . with ( :storage_cli_config_file_droplets ) . and_return ( droplets_cfg . path )
45+
2446 expect do
25- StorageCliClient . build ( connection_config : { provider : 'UnknownProvider' } , directory_key : 'dummy-key' , root_dir : 'dummy-root' , resource_type : 'droplets' )
47+ StorageCliClient . build ( directory_key : 'dummy-key' , root_dir : 'dummy-root' , resource_type : 'droplets' )
2648 end . to raise_error ( RuntimeError , 'No storage CLI client registered for provider UnknownProvider' )
49+
50+ droplets_cfg . close!
2751 end
2852
29- it 'raises an error if provider is missing' do
53+ it 'raises an error when provider is missing from the JSON' do
54+ droplets_cfg = Tempfile . new ( [ 'droplets' , '.json' ] )
55+ droplets_cfg . write ( { } . to_json )
56+ droplets_cfg . flush
57+
58+ config_double = instance_double ( VCAP ::CloudController ::Config )
59+ allow ( VCAP ::CloudController ::Config ) . to receive ( :config ) . and_return ( config_double )
60+ allow ( config_double ) . to receive ( :get ) . with ( :storage_cli_config_file_droplets ) . and_return ( droplets_cfg . path )
61+
3062 expect do
31- StorageCliClient . build ( connection_config : { } , directory_key : 'dummy-key' , root_dir : 'dummy-root' , resource_type : 'droplets' )
32- end . to raise_error ( RuntimeError , 'Missing connection_config[:provider]' )
63+ StorageCliClient . build ( directory_key : 'dummy-key' , root_dir : 'dummy-root' , resource_type : 'droplets' )
64+ end . to raise_error ( CloudController ::Blobstore ::BlobstoreError , /No provider specified in config file/ )
65+
66+ droplets_cfg . close!
3367 end
3468 end
3569
@@ -42,9 +76,12 @@ module Blobstore
4276 let ( :resource_pool_cfg ) { Tempfile . new ( [ 'resource_pool' , '.json' ] ) }
4377
4478 before do
45- # Valid JSON (YAML can parse JSON)
4679 [ droplets_cfg , buildpacks_cfg , packages_cfg , resource_pool_cfg ] . each do |f |
47- f . write ( { connection_config : { provider : 'AzureRM' } } . to_json )
80+ f . write ( { provider : 'AzureRM' ,
81+ azure_storage_access_key : 'bommelkey' ,
82+ azure_storage_account_name : 'bommel' ,
83+ container_name : 'bommelcontainer' ,
84+ environment : 'BommelCloud' } . to_json )
4885 f . flush
4986 end
5087
@@ -59,7 +96,6 @@ module Blobstore
5996 end
6097 end
6198
62- # Quiet logger noise in specs
6399 allow ( Steno ) . to receive ( :logger ) . and_return ( double ( info : nil , error : nil ) )
64100 end
65101
@@ -69,7 +105,6 @@ module Blobstore
69105
70106 def build_client ( resource_type )
71107 StorageCliClient . build (
72- connection_config : { provider : 'AzureRM' } ,
73108 directory_key : 'dir-key' ,
74109 root_dir : 'root' ,
75110 resource_type : resource_type
@@ -119,11 +154,39 @@ def build_client(resource_type)
119154 end . to raise_error ( CloudController ::Blobstore ::BlobstoreError , /not found or not readable/ )
120155 end
121156
157+ it 'raises when provider is missing from config file' do
158+ File . write ( packages_cfg . path , {
159+ azure_storage_access_key : 'bommelkey' ,
160+ azure_storage_account_name : 'bommel' ,
161+ container_name : 'bommelcontainer' ,
162+ environment : 'BommelCloud'
163+ } . to_json )
164+
165+ expect do
166+ build_client ( 'packages' )
167+ end . to raise_error (
168+ CloudController ::Blobstore ::BlobstoreError ,
169+ /No provider specified/
170+ )
171+ end
172+
122173 it 'raises when YAML load fails' do
123- File . write ( packages_cfg . path , '{ this is: [not, valid }' )
174+ File . write ( packages_cfg . path , { provider : 'AzureRM' ,
175+ azure_storage_access_key : 'bommelkey' ,
176+ azure_storage_account_name : 'bommel' ,
177+ container_name : 'bommelcontainer' ,
178+ environment : 'BommelCloud' } . to_json )
179+
180+ expect ( VCAP ::CloudController ::YAMLConfig ) . to receive ( :safe_load_file ) .
181+ with ( packages_cfg . path ) .
182+ and_raise ( StandardError . new ( 'parse blew up' ) )
183+
124184 expect do
125185 build_client ( 'packages' )
126- end . to raise_error ( CloudController ::Blobstore ::BlobstoreError , /Failed to load storage-cli config/ )
186+ end . to raise_error (
187+ CloudController ::Blobstore ::BlobstoreError ,
188+ /Failed to load storage-cli config/
189+ )
127190 end
128191 end
129192
@@ -132,21 +195,23 @@ def build_client(resource_type)
132195 let ( :droplets_cfg ) { Tempfile . new ( [ 'droplets' , '.json' ] ) }
133196
134197 before do
135- droplets_cfg . write ( { connection_config : { provider : 'AzureRM' } } . to_json )
198+ droplets_cfg . write ( { provider : 'AzureRM' ,
199+ azure_storage_access_key : 'bommelkey' ,
200+ azure_storage_account_name : 'bommel' ,
201+ container_name : 'bommelcontainer' ,
202+ environment : 'BommelCloud' } . to_json )
136203 droplets_cfg . flush
137204
138205 allow ( VCAP ::CloudController ::Config ) . to receive ( :config ) . and_return ( config_double )
139206 allow ( config_double ) . to receive ( :get ) . with ( :storage_cli_config_file_droplets ) . and_return ( droplets_cfg . path )
140207
141- # Avoid logger noise
142208 allow ( Steno ) . to receive ( :logger ) . and_return ( double ( info : nil , error : nil ) )
143209 end
144210
145211 after { droplets_cfg . close! }
146212
147213 let ( :client ) do
148214 StorageCliClient . build (
149- connection_config : { provider : 'AzureRM' } ,
150215 directory_key : 'dir' ,
151216 root_dir : 'root' ,
152217 resource_type : 'droplets'
0 commit comments