(config: &Registry)
| 229 | } |
| 230 | |
| 231 | fn test_value(config: &Registry) -> Result<String, RegistryError> { |
| 232 | let mut reg_result: Registry = Registry { key_path: config.key_path.clone(), ..Default::default()}; |
| 233 | let mut in_desired_state = true; |
| 234 | |
| 235 | let reg_key = match RegistryKey::new(config.key_path.as_str()) { |
| 236 | Ok(key) => { |
| 237 | key |
| 238 | }, |
| 239 | Err(NtStatusError { status: NtStatusErrorKind::ObjectNameNotFound, ..}) => { |
| 240 | reg_result.key_path = String::new(); |
| 241 | reg_result.in_desired_state = Some(false); |
| 242 | return Ok(reg_result.to_json()); |
| 243 | }, |
| 244 | Err(err) => { |
| 245 | return Err(RegistryError::NtStatus(err)); |
| 246 | } |
| 247 | }; |
| 248 | |
| 249 | let value_name = config.value_name.as_ref().unwrap(); |
| 250 | let mut value_exists = false; |
| 251 | let reg_value: RegistryValue = match reg_key.get_value(value_name) { |
| 252 | Ok(value) => { |
| 253 | value_exists = true; |
| 254 | reg_result.value_name = Some(value.name.clone()); |
| 255 | reg_result.value_data = Some(convert_ntreg_data(&value.data)?); |
| 256 | value |
| 257 | }, |
| 258 | Err(NtStatusError { status: NtStatusErrorKind::ObjectNameNotFound, ..}) => { |
| 259 | RegistryValue { |
| 260 | key_path: config.key_path.clone(), |
| 261 | name : String::new(), |
| 262 | data : NtRegistryValueData::None, |
| 263 | } |
| 264 | }, |
| 265 | Err(err) => { |
| 266 | return Err(RegistryError::NtStatus(err)); |
| 267 | } |
| 268 | }; |
| 269 | |
| 270 | match &config.exist { |
| 271 | Some(true) | None => { |
| 272 | if value_exists { |
| 273 | in_desired_state = reg_values_are_eq(config, ®_value)?; |
| 274 | } |
| 275 | else { |
| 276 | in_desired_state = false; |
| 277 | } |
| 278 | }, |
| 279 | Some(false) => { |
| 280 | if value_exists { |
| 281 | in_desired_state = false; |
| 282 | } |
| 283 | } |
| 284 | } |
| 285 | |
| 286 | reg_result.exist = Some(value_exists); |
| 287 | reg_result.in_desired_state = Some(in_desired_state); |
| 288 | Ok(reg_result.to_json()) |
no test coverage detected