@@ -108,6 +108,8 @@ impl BackendTlsConfig {
108108
109109#[ cfg( test) ]
110110mod tests {
111+ use carbide_test_support:: { Check , check_values} ;
112+
111113 use super :: * ;
112114
113115 #[ test]
@@ -118,75 +120,138 @@ mod tests {
118120 assert_eq ! ( cfg. compute_tray_backend, ComputeBackend :: Rms ) ;
119121 }
120122
121- fn tls_config (
122- cert_dir : Option < & str > ,
123- ca : Option < & str > ,
124- cert : Option < & str > ,
125- key : Option < & str > ,
126- ) -> BackendTlsConfig {
123+ /// One `BackendTlsConfig` worth of path inputs for a resolver table.
124+ struct Row {
125+ cert_dir : Option < & ' static str > ,
126+ ca : Option < & ' static str > ,
127+ cert : Option < & ' static str > ,
128+ key : Option < & ' static str > ,
129+ }
130+
131+ fn tls_config ( row : Row ) -> BackendTlsConfig {
127132 BackendTlsConfig {
128- cert_dir : cert_dir. map ( String :: from) ,
129- ca_cert_path : ca. map ( String :: from) ,
130- client_cert_path : cert. map ( String :: from) ,
131- client_key_path : key. map ( String :: from) ,
133+ cert_dir : row . cert_dir . map ( String :: from) ,
134+ ca_cert_path : row . ca . map ( String :: from) ,
135+ client_cert_path : row . cert . map ( String :: from) ,
136+ client_key_path : row . key . map ( String :: from) ,
132137 domain : None ,
133138 }
134139 }
135140
136141 #[ test]
137- fn resolve_ca_cert_explicit_path_wins ( ) {
138- let cfg = tls_config ( Some ( "/dir" ) , Some ( "/explicit/ca.pem" ) , None , None ) ;
139- assert_eq ! ( cfg. resolve_ca_cert_path( ) . unwrap( ) , "/explicit/ca.pem" ) ;
140- }
141-
142- #[ test]
143- fn resolve_ca_cert_falls_back_to_dir ( ) {
144- let cfg = tls_config ( Some ( "/certs" ) , None , None , None ) ;
145- assert_eq ! ( cfg. resolve_ca_cert_path( ) . unwrap( ) , "/certs/ca.crt" ) ;
146- }
147-
148- #[ test]
149- fn resolve_ca_cert_none_when_nothing_set ( ) {
150- let cfg = tls_config ( None , None , None , None ) ;
151- assert ! ( cfg. resolve_ca_cert_path( ) . is_none( ) ) ;
152- }
153-
154- #[ test]
155- fn resolve_client_cert_explicit_path_wins ( ) {
156- let cfg = tls_config ( Some ( "/dir" ) , None , Some ( "/explicit/client.pem" ) , None ) ;
157- assert_eq ! (
158- cfg. resolve_client_cert_path( ) . unwrap( ) ,
159- "/explicit/client.pem"
142+ fn resolve_ca_cert_path_explicit_wins_then_dir_then_none ( ) {
143+ check_values (
144+ [
145+ Check {
146+ scenario : "explicit path wins" ,
147+ input : Row {
148+ cert_dir : Some ( "/dir" ) ,
149+ ca : Some ( "/explicit/ca.pem" ) ,
150+ cert : None ,
151+ key : None ,
152+ } ,
153+ expect : Some ( "/explicit/ca.pem" . to_string ( ) ) ,
154+ } ,
155+ Check {
156+ scenario : "falls back to dir" ,
157+ input : Row {
158+ cert_dir : Some ( "/certs" ) ,
159+ ca : None ,
160+ cert : None ,
161+ key : None ,
162+ } ,
163+ expect : Some ( "/certs/ca.crt" . to_string ( ) ) ,
164+ } ,
165+ Check {
166+ scenario : "none when nothing set" ,
167+ input : Row {
168+ cert_dir : None ,
169+ ca : None ,
170+ cert : None ,
171+ key : None ,
172+ } ,
173+ expect : None ,
174+ } ,
175+ ] ,
176+ |row| tls_config ( row) . resolve_ca_cert_path ( ) ,
160177 ) ;
161178 }
162179
163180 #[ test]
164- fn resolve_client_cert_falls_back_to_dir ( ) {
165- let cfg = tls_config ( Some ( "/certs" ) , None , None , None ) ;
166- assert_eq ! ( cfg. resolve_client_cert_path( ) . unwrap( ) , "/certs/tls.crt" ) ;
167- }
168-
169- #[ test]
170- fn resolve_client_cert_none_when_nothing_set ( ) {
171- let cfg = tls_config ( None , None , None , None ) ;
172- assert ! ( cfg. resolve_client_cert_path( ) . is_none( ) ) ;
173- }
174-
175- #[ test]
176- fn resolve_client_key_explicit_path_wins ( ) {
177- let cfg = tls_config ( Some ( "/dir" ) , None , None , Some ( "/explicit/key.pem" ) ) ;
178- assert_eq ! ( cfg. resolve_client_key_path( ) . unwrap( ) , "/explicit/key.pem" ) ;
179- }
180-
181- #[ test]
182- fn resolve_client_key_falls_back_to_dir ( ) {
183- let cfg = tls_config ( Some ( "/certs" ) , None , None , None ) ;
184- assert_eq ! ( cfg. resolve_client_key_path( ) . unwrap( ) , "/certs/tls.key" ) ;
181+ fn resolve_client_cert_path_explicit_wins_then_dir_then_none ( ) {
182+ check_values (
183+ [
184+ Check {
185+ scenario : "explicit path wins" ,
186+ input : Row {
187+ cert_dir : Some ( "/dir" ) ,
188+ ca : None ,
189+ cert : Some ( "/explicit/client.pem" ) ,
190+ key : None ,
191+ } ,
192+ expect : Some ( "/explicit/client.pem" . to_string ( ) ) ,
193+ } ,
194+ Check {
195+ scenario : "falls back to dir" ,
196+ input : Row {
197+ cert_dir : Some ( "/certs" ) ,
198+ ca : None ,
199+ cert : None ,
200+ key : None ,
201+ } ,
202+ expect : Some ( "/certs/tls.crt" . to_string ( ) ) ,
203+ } ,
204+ Check {
205+ scenario : "none when nothing set" ,
206+ input : Row {
207+ cert_dir : None ,
208+ ca : None ,
209+ cert : None ,
210+ key : None ,
211+ } ,
212+ expect : None ,
213+ } ,
214+ ] ,
215+ |row| tls_config ( row) . resolve_client_cert_path ( ) ,
216+ ) ;
185217 }
186218
187219 #[ test]
188- fn resolve_client_key_none_when_nothing_set ( ) {
189- let cfg = tls_config ( None , None , None , None ) ;
190- assert ! ( cfg. resolve_client_key_path( ) . is_none( ) ) ;
220+ fn resolve_client_key_path_explicit_wins_then_dir_then_none ( ) {
221+ check_values (
222+ [
223+ Check {
224+ scenario : "explicit path wins" ,
225+ input : Row {
226+ cert_dir : Some ( "/dir" ) ,
227+ ca : None ,
228+ cert : None ,
229+ key : Some ( "/explicit/key.pem" ) ,
230+ } ,
231+ expect : Some ( "/explicit/key.pem" . to_string ( ) ) ,
232+ } ,
233+ Check {
234+ scenario : "falls back to dir" ,
235+ input : Row {
236+ cert_dir : Some ( "/certs" ) ,
237+ ca : None ,
238+ cert : None ,
239+ key : None ,
240+ } ,
241+ expect : Some ( "/certs/tls.key" . to_string ( ) ) ,
242+ } ,
243+ Check {
244+ scenario : "none when nothing set" ,
245+ input : Row {
246+ cert_dir : None ,
247+ ca : None ,
248+ cert : None ,
249+ key : None ,
250+ } ,
251+ expect : None ,
252+ } ,
253+ ] ,
254+ |row| tls_config ( row) . resolve_client_key_path ( ) ,
255+ ) ;
191256 }
192257}
0 commit comments