(&self, expected: &str)
| 435 | } |
| 436 | |
| 437 | fn test(&self, expected: &str) -> Result<TestResult, DscError> { |
| 438 | debug!("{}", t!("dscresources.dscresource.invokeTest", resource = self.type_name)); |
| 439 | if let Some(deprecation_message) = self.deprecation_message.as_ref() { |
| 440 | warn!("{}", t!("dscresources.dscresource.deprecationMessage", resource = self.type_name, message = deprecation_message)); |
| 441 | } |
| 442 | if let Some(adapter) = &self.require_adapter { |
| 443 | return self.invoke_test_with_adapter(adapter, self, expected); |
| 444 | } |
| 445 | |
| 446 | match &self.implemented_as { |
| 447 | Some(ImplementedAs::Command) => { |
| 448 | let Some(manifest) = &self.manifest else { |
| 449 | return Err(DscError::MissingManifest(self.type_name.to_string())); |
| 450 | }; |
| 451 | |
| 452 | // if test is not directly implemented, then we need to handle it here |
| 453 | if manifest.test.is_none() { |
| 454 | let get_result = self.get(expected)?; |
| 455 | let mut desired_state = serde_json::from_str(expected)?; |
| 456 | let actual_state = match get_result { |
| 457 | GetResult::Group(results) => { |
| 458 | let mut result_array: Vec<Value> = Vec::new(); |
| 459 | for result in results { |
| 460 | result_array.push(serde_json::to_value(result)?); |
| 461 | } |
| 462 | Value::from(result_array) |
| 463 | }, |
| 464 | GetResult::Resource(response) => { |
| 465 | response.actual_state |
| 466 | } |
| 467 | }; |
| 468 | let diff_properties = get_diff( &desired_state, &actual_state); |
| 469 | desired_state = redact(&desired_state); |
| 470 | let test_result = TestResult::Resource(ResourceTestResponse { |
| 471 | desired_state, |
| 472 | actual_state, |
| 473 | in_desired_state: diff_properties.is_empty(), |
| 474 | diff_properties, |
| 475 | }); |
| 476 | Ok(test_result) |
| 477 | } |
| 478 | else { |
| 479 | command_resource::invoke_test(self, expected, self.target_resource.as_deref()) |
| 480 | } |
| 481 | }, |
| 482 | _ => { |
| 483 | Err(DscError::NotImplemented(t!("dscresources.dscresource.customResourceNotSupported").to_string())) |
| 484 | }, |
| 485 | } |
| 486 | } |
| 487 | |
| 488 | fn delete(&self, filter: &str, execution_type: &ExecutionKind) -> Result<DeleteResultKind, DscError> { |
| 489 | debug!("{}", t!("dscresources.dscresource.invokeDelete", resource = self.type_name)); |
no test coverage detected