@@ -14,7 +14,7 @@ pub struct RegistryHelper {
14
14
}
15
15
16
16
impl RegistryHelper {
17
- pub fn new ( config : & str , what_if : bool ) -> Result < Self , RegistryError > {
17
+ pub fn new ( config : & str ) -> Result < Self , RegistryError > {
18
18
let registry: Registry = match serde_json:: from_str ( config) {
19
19
Ok ( config) => config,
20
20
Err ( e) => return Err ( RegistryError :: Json ( e) ) ,
@@ -27,11 +27,15 @@ impl RegistryHelper {
27
27
config : registry,
28
28
hive,
29
29
subkey : subkey. to_string ( ) ,
30
- what_if
30
+ what_if : false
31
31
}
32
32
)
33
33
}
34
34
35
+ pub fn enable_what_if ( & mut self ) {
36
+ self . what_if = true ;
37
+ }
38
+
35
39
pub fn get ( & self ) -> Result < Registry , RegistryError > {
36
40
let exist: bool ;
37
41
let ( reg_key, _subkey) = match self . open ( Security :: Read ) {
@@ -248,7 +252,6 @@ impl RegistryHelper {
248
252
}
249
253
250
254
fn handle_error_or_what_if ( & self , error : RegistryError ) -> Result < Option < Registry > , RegistryError > {
251
- // TODO: return error message via metadata instead of as property within set state
252
255
if self . what_if {
253
256
return Ok ( Some ( Registry {
254
257
key_path : self . config . key_path . clone ( ) ,
@@ -317,7 +320,7 @@ fn convert_reg_value(value: &Data) -> Result<RegistryValueData, RegistryError> {
317
320
318
321
#[ test]
319
322
fn get_hklm_key ( ) {
320
- let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKEY_LOCAL_MACHINE"}"# , false ) . unwrap ( ) ;
323
+ let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKEY_LOCAL_MACHINE"}"# ) . unwrap ( ) ;
321
324
let reg_config = reg_helper. get ( ) . unwrap ( ) ;
322
325
assert_eq ! ( reg_config. key_path, r#"HKEY_LOCAL_MACHINE"# ) ;
323
326
assert_eq ! ( reg_config. value_name, None ) ;
@@ -326,7 +329,7 @@ fn get_hklm_key() {
326
329
327
330
#[ test]
328
331
fn get_product_name ( ) {
329
- let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion","valueName":"ProductName"}"# , false ) . unwrap ( ) ;
332
+ let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion","valueName":"ProductName"}"# ) . unwrap ( ) ;
330
333
let reg_config = reg_helper. get ( ) . unwrap ( ) ;
331
334
assert_eq ! ( reg_config. key_path, r#"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"# ) ;
332
335
assert_eq ! ( reg_config. value_name, Some ( "ProductName" . to_string( ) ) ) ;
@@ -335,7 +338,7 @@ fn get_product_name() {
335
338
336
339
#[ test]
337
340
fn get_nonexisting_key ( ) {
338
- let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\DoesNotExist"}"# , false ) . unwrap ( ) ;
341
+ let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\DoesNotExist"}"# ) . unwrap ( ) ;
339
342
let reg_config = reg_helper. get ( ) . unwrap ( ) ;
340
343
assert_eq ! ( reg_config. key_path, r#"HKCU\DoesNotExist"# ) ;
341
344
assert_eq ! ( reg_config. value_name, None ) ;
@@ -345,7 +348,7 @@ fn get_nonexisting_key() {
345
348
346
349
#[ test]
347
350
fn get_nonexisting_value ( ) {
348
- let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\Software","valueName":"DoesNotExist"}"# , false ) . unwrap ( ) ;
351
+ let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\Software","valueName":"DoesNotExist"}"# ) . unwrap ( ) ;
349
352
let reg_config = reg_helper. get ( ) . unwrap ( ) ;
350
353
assert_eq ! ( reg_config. key_path, r#"HKCU\Software"# ) ;
351
354
assert_eq ! ( reg_config. value_name, Some ( "DoesNotExist" . to_string( ) ) ) ;
@@ -355,7 +358,7 @@ fn get_nonexisting_value() {
355
358
356
359
#[ test]
357
360
fn set_and_remove_test_value ( ) {
358
- let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\DSCTest\\DSCSubKey","valueName":"TestValue","valueData": { "String": "Hello"} }"# , false ) . unwrap ( ) ;
361
+ let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\DSCTest\\DSCSubKey","valueName":"TestValue","valueData": { "String": "Hello"} }"# ) . unwrap ( ) ;
359
362
reg_helper. set ( ) . unwrap ( ) ;
360
363
let result = reg_helper. get ( ) . unwrap ( ) ;
361
364
assert_eq ! ( result. key_path, r#"HKCU\DSCTest\DSCSubKey"# ) ;
@@ -367,7 +370,7 @@ fn set_and_remove_test_value() {
367
370
assert_eq ! ( result. value_name, Some ( "TestValue" . to_string( ) ) ) ;
368
371
assert_eq ! ( result. value_data, None ) ;
369
372
assert_eq ! ( result. exist, Some ( false ) ) ;
370
- let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\DSCTest"}"# , false ) . unwrap ( ) ;
373
+ let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\DSCTest"}"# ) . unwrap ( ) ;
371
374
let result = reg_helper. get ( ) . unwrap ( ) ;
372
375
assert_eq ! ( result. key_path, r#"HKCU\DSCTest"# ) ;
373
376
assert_eq ! ( result. value_name, None ) ;
@@ -382,13 +385,13 @@ fn set_and_remove_test_value() {
382
385
383
386
#[ test]
384
387
fn delete_tree ( ) {
385
- let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\DSCTest2\\DSCSubKey","valueName":"TestValue","valueData": { "String": "Hello"} }"# , false ) . unwrap ( ) ;
388
+ let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\DSCTest2\\DSCSubKey","valueName":"TestValue","valueData": { "String": "Hello"} }"# ) . unwrap ( ) ;
386
389
reg_helper. set ( ) . unwrap ( ) ;
387
390
let result = reg_helper. get ( ) . unwrap ( ) ;
388
391
assert_eq ! ( result. key_path, r#"HKCU\DSCTest2\DSCSubKey"# ) ;
389
392
assert_eq ! ( result. value_name, Some ( "TestValue" . to_string( ) ) ) ;
390
393
assert_eq ! ( result. value_data, Some ( RegistryValueData :: String ( "Hello" . to_string( ) ) ) ) ;
391
- let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\DSCTest2"}"# , false ) . unwrap ( ) ;
394
+ let reg_helper = RegistryHelper :: new ( r#"{"keyPath":"HKCU\\DSCTest2"}"# ) . unwrap ( ) ;
392
395
reg_helper. remove ( ) . unwrap ( ) ;
393
396
let result = reg_helper. get ( ) . unwrap ( ) ;
394
397
assert_eq ! ( result. key_path, r#"HKCU\DSCTest2"# ) ;
0 commit comments