#[non_exhaustive]pub struct SyntheticsTestRequestProxy {
pub headers: Option<BTreeMap<String, String>>,
pub url: String,
pub additional_properties: BTreeMap<String, Value>,
/* private fields */
}
Expand description
The proxy to perform the test.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.headers: Option<BTreeMap<String, String>>
Headers to include when performing the test.
url: String
URL of the proxy to perform the test.
additional_properties: BTreeMap<String, Value>
Implementations§
Source§impl SyntheticsTestRequestProxy
impl SyntheticsTestRequestProxy
Sourcepub fn new(url: String) -> SyntheticsTestRequestProxy
pub fn new(url: String) -> SyntheticsTestRequestProxy
Examples found in repository?
examples/v1_synthetics_UpdateBrowserTest.rs (lines 57-59)
36async fn main() {
37 let body = SyntheticsBrowserTest::new(
38 SyntheticsBrowserTestConfig::new(
39 vec![],
40 SyntheticsTestRequest::new()
41 .basic_auth(SyntheticsBasicAuth::SyntheticsBasicAuthWeb(Box::new(
42 SyntheticsBasicAuthWeb::new()
43 .password("PaSSw0RD!".to_string())
44 .type_(SyntheticsBasicAuthWebType::WEB)
45 .username("my_username".to_string()),
46 )))
47 .body_type(SyntheticsTestRequestBodyType::TEXT_PLAIN)
48 .call_type(SyntheticsTestCallType::UNARY)
49 .certificate(
50 SyntheticsTestRequestCertificate::new()
51 .cert(SyntheticsTestRequestCertificateItem::new())
52 .key(SyntheticsTestRequestCertificateItem::new()),
53 )
54 .certificate_domains(vec![])
55 .files(vec![SyntheticsTestRequestBodyFile::new()])
56 .http_version(SyntheticsTestOptionsHTTPVersion::HTTP1)
57 .proxy(SyntheticsTestRequestProxy::new(
58 "https://example.com".to_string(),
59 ))
60 .service("Greeter".to_string())
61 .url("https://example.com".to_string()),
62 )
63 .config_variables(vec![SyntheticsConfigVariable::new(
64 "VARIABLE_NAME".to_string(),
65 SyntheticsConfigVariableType::TEXT,
66 )
67 .secure(false)])
68 .variables(vec![SyntheticsBrowserVariable::new(
69 "VARIABLE_NAME".to_string(),
70 SyntheticsBrowserVariableType::TEXT,
71 )]),
72 vec!["aws:eu-west-3".to_string()],
73 "".to_string(),
74 "Example test name".to_string(),
75 SyntheticsTestOptions::new()
76 .ci(SyntheticsTestCiOptions::new(
77 SyntheticsTestExecutionRule::BLOCKING,
78 ))
79 .device_ids(vec!["chrome.laptop_large".to_string()])
80 .http_version(SyntheticsTestOptionsHTTPVersion::HTTP1)
81 .monitor_options(
82 SyntheticsTestOptionsMonitorOptions::new().notification_preset_name(
83 SyntheticsTestOptionsMonitorOptionsNotificationPresetName::SHOW_ALL,
84 ),
85 )
86 .restricted_roles(vec!["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".to_string()])
87 .retry(SyntheticsTestOptionsRetry::new())
88 .rum_settings(
89 SyntheticsBrowserTestRumSettings::new(true)
90 .application_id("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".to_string())
91 .client_token_id(12345),
92 )
93 .scheduling(SyntheticsTestOptionsScheduling::new(
94 vec![
95 SyntheticsTestOptionsSchedulingTimeframe::new(
96 1,
97 "07:00".to_string(),
98 "16:00".to_string(),
99 ),
100 SyntheticsTestOptionsSchedulingTimeframe::new(
101 3,
102 "07:00".to_string(),
103 "16:00".to_string(),
104 ),
105 ],
106 "America/New_York".to_string(),
107 )),
108 SyntheticsBrowserTestType::BROWSER,
109 )
110 .status(SyntheticsTestPauseStatus::LIVE)
111 .steps(vec![
112 SyntheticsStep::new().type_(SyntheticsStepType::ASSERT_ELEMENT_CONTENT)
113 ])
114 .tags(vec!["env:prod".to_string()]);
115 let configuration = datadog::Configuration::new();
116 let api = SyntheticsAPI::with_config(configuration);
117 let resp = api.update_browser_test("public_id".to_string(), body).await;
118 if let Ok(value) = resp {
119 println!("{:#?}", value);
120 } else {
121 println!("{:#?}", resp.unwrap_err());
122 }
123}
More examples
examples/v1_synthetics_CreateSyntheticsAPITest_1241981394.rs (lines 157-159)
39async fn main() {
40 let body =
41 SyntheticsAPITest::new(
42 SyntheticsAPITestConfig::new()
43 .assertions(
44 vec![
45 SyntheticsAssertion::SyntheticsAssertionTarget(
46 Box::new(
47 SyntheticsAssertionTarget::new(
48 SyntheticsAssertionOperator::IS,
49 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
50 "text/html".to_string(),
51 ),
52 SyntheticsAssertionType::HEADER,
53 ).property("{{ PROPERTY }}".to_string()),
54 ),
55 ),
56 SyntheticsAssertion::SyntheticsAssertionTarget(
57 Box::new(
58 SyntheticsAssertionTarget::new(
59 SyntheticsAssertionOperator::LESS_THAN,
60 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueNumber(
61 2000.0 as f64,
62 ),
63 SyntheticsAssertionType::RESPONSE_TIME,
64 ).timings_scope(SyntheticsAssertionTimingsScope::WITHOUT_DNS),
65 ),
66 ),
67 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
68 Box::new(
69 SyntheticsAssertionJSONPathTarget::new(
70 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
71 SyntheticsAssertionType::BODY,
72 ).target(
73 SyntheticsAssertionJSONPathTargetTarget::new()
74 .json_path("topKey".to_string())
75 .operator("isNot".to_string())
76 .target_value(
77 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
78 "0".to_string(),
79 ),
80 ),
81 ),
82 ),
83 ),
84 SyntheticsAssertion::SyntheticsAssertionXPathTarget(
85 Box::new(
86 SyntheticsAssertionXPathTarget::new(
87 SyntheticsAssertionXPathOperator::VALIDATES_X_PATH,
88 SyntheticsAssertionType::BODY,
89 ).target(
90 SyntheticsAssertionXPathTargetTarget::new()
91 .operator("contains".to_string())
92 .target_value(
93 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
94 "0".to_string(),
95 ),
96 )
97 .x_path("target-xpath".to_string()),
98 ),
99 ),
100 )
101 ],
102 )
103 .config_variables(
104 vec![
105 SyntheticsConfigVariable::new("PROPERTY".to_string(), SyntheticsConfigVariableType::TEXT)
106 .example("content-type".to_string())
107 .pattern("content-type".to_string())
108 ],
109 )
110 .request(
111 SyntheticsTestRequest::new()
112 .basic_auth(
113 SyntheticsBasicAuth::SyntheticsBasicAuthOauthClient(
114 Box::new(
115 SyntheticsBasicAuthOauthClient::new(
116 "https://datadog-token.com".to_string(),
117 "client-id".to_string(),
118 "client-secret".to_string(),
119 SyntheticsBasicAuthOauthTokenApiAuthentication::HEADER,
120 SyntheticsBasicAuthOauthClientType::OAUTH_CLIENT,
121 )
122 .audience("audience".to_string())
123 .resource("resource".to_string())
124 .scope("yoyo".to_string()),
125 ),
126 ),
127 )
128 .body_type(SyntheticsTestRequestBodyType::APPLICATION_OCTET_STREAM)
129 .certificate(
130 SyntheticsTestRequestCertificate::new()
131 .cert(
132 SyntheticsTestRequestCertificateItem::new()
133 .content("cert-content".to_string())
134 .filename("cert-filename".to_string())
135 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
136 )
137 .key(
138 SyntheticsTestRequestCertificateItem::new()
139 .content("key-content".to_string())
140 .filename("key-filename".to_string())
141 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
142 ),
143 )
144 .files(
145 vec![
146 SyntheticsTestRequestBodyFile::new()
147 .content("file content".to_string())
148 .name("file name".to_string())
149 .original_file_name("image.png".to_string())
150 .type_("file type".to_string())
151 ],
152 )
153 .headers(BTreeMap::from([("unique".to_string(), "examplesynthetic".to_string())]))
154 .method("GET".to_string())
155 .persist_cookies(true)
156 .proxy(
157 SyntheticsTestRequestProxy::new(
158 "https://datadoghq.com".to_string(),
159 ).headers(BTreeMap::from([])),
160 )
161 .timeout(10.0 as f64)
162 .url("https://datadoghq.com".to_string()),
163 ),
164 vec!["aws:us-east-2".to_string()],
165 "BDD test payload: synthetics_api_http_test_payload.json".to_string(),
166 "Example-Synthetic".to_string(),
167 SyntheticsTestOptions::new()
168 .accept_self_signed(false)
169 .allow_insecure(true)
170 .follow_redirects(true)
171 .http_version(SyntheticsTestOptionsHTTPVersion::HTTP2)
172 .min_failure_duration(10)
173 .min_location_failed(1)
174 .monitor_name("Example-Synthetic".to_string())
175 .monitor_priority(5)
176 .retry(SyntheticsTestOptionsRetry::new().count(3).interval(10.0 as f64))
177 .tick_every(60),
178 SyntheticsAPITestType::API,
179 )
180 .subtype(SyntheticsTestDetailsSubType::HTTP)
181 .tags(vec!["testing:api".to_string()]);
182 let configuration = datadog::Configuration::new();
183 let api = SyntheticsAPI::with_config(configuration);
184 let resp = api.create_synthetics_api_test(body).await;
185 if let Ok(value) = resp {
186 println!("{:#?}", value);
187 } else {
188 println!("{:#?}", resp.unwrap_err());
189 }
190}
examples/v1_synthetics_CreateSyntheticsAPITest_960766374.rs (lines 162-164)
39async fn main() {
40 let body =
41 SyntheticsAPITest::new(
42 SyntheticsAPITestConfig::new()
43 .assertions(
44 vec![
45 SyntheticsAssertion::SyntheticsAssertionTarget(
46 Box::new(
47 SyntheticsAssertionTarget::new(
48 SyntheticsAssertionOperator::IS,
49 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
50 "text/html".to_string(),
51 ),
52 SyntheticsAssertionType::HEADER,
53 ).property("{{ PROPERTY }}".to_string()),
54 ),
55 ),
56 SyntheticsAssertion::SyntheticsAssertionTarget(
57 Box::new(
58 SyntheticsAssertionTarget::new(
59 SyntheticsAssertionOperator::LESS_THAN,
60 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueNumber(
61 2000.0 as f64,
62 ),
63 SyntheticsAssertionType::RESPONSE_TIME,
64 ),
65 ),
66 ),
67 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
68 Box::new(
69 SyntheticsAssertionJSONPathTarget::new(
70 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
71 SyntheticsAssertionType::BODY,
72 ).target(
73 SyntheticsAssertionJSONPathTargetTarget::new()
74 .json_path("topKey".to_string())
75 .operator("isNot".to_string())
76 .target_value(
77 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
78 "0".to_string(),
79 ),
80 ),
81 ),
82 ),
83 ),
84 SyntheticsAssertion::SyntheticsAssertionJSONSchemaTarget(
85 Box::new(
86 SyntheticsAssertionJSONSchemaTarget::new(
87 SyntheticsAssertionJSONSchemaOperator::VALIDATES_JSON_SCHEMA,
88 SyntheticsAssertionType::BODY,
89 ).target(
90 SyntheticsAssertionJSONSchemaTargetTarget::new()
91 .json_schema(
92 r#"{"type": "object", "properties":{"slideshow":{"type":"object"}}}"#.to_string(),
93 )
94 .meta_schema(SyntheticsAssertionJSONSchemaMetaSchema::DRAFT_07),
95 ),
96 ),
97 ),
98 SyntheticsAssertion::SyntheticsAssertionXPathTarget(
99 Box::new(
100 SyntheticsAssertionXPathTarget::new(
101 SyntheticsAssertionXPathOperator::VALIDATES_X_PATH,
102 SyntheticsAssertionType::BODY,
103 ).target(
104 SyntheticsAssertionXPathTargetTarget::new()
105 .operator("contains".to_string())
106 .target_value(
107 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
108 "0".to_string(),
109 ),
110 )
111 .x_path("target-xpath".to_string()),
112 ),
113 ),
114 )
115 ],
116 )
117 .config_variables(
118 vec![
119 SyntheticsConfigVariable::new("PROPERTY".to_string(), SyntheticsConfigVariableType::TEXT)
120 .example("content-type".to_string())
121 .pattern("content-type".to_string())
122 ],
123 )
124 .request(
125 SyntheticsTestRequest::new()
126 .basic_auth(
127 SyntheticsBasicAuth::SyntheticsBasicAuthOauthROP(
128 Box::new(
129 SyntheticsBasicAuthOauthROP::new(
130 "https://datadog-token.com".to_string(),
131 "oauth-password".to_string(),
132 SyntheticsBasicAuthOauthTokenApiAuthentication::BODY,
133 SyntheticsBasicAuthOauthROPType::OAUTH_ROP,
134 "oauth-usermame".to_string(),
135 )
136 .audience("audience".to_string())
137 .client_id("client-id".to_string())
138 .client_secret("client-secret".to_string())
139 .resource("resource".to_string())
140 .scope("yoyo".to_string()),
141 ),
142 ),
143 )
144 .certificate(
145 SyntheticsTestRequestCertificate::new()
146 .cert(
147 SyntheticsTestRequestCertificateItem::new()
148 .content("cert-content".to_string())
149 .filename("cert-filename".to_string())
150 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
151 )
152 .key(
153 SyntheticsTestRequestCertificateItem::new()
154 .content("key-content".to_string())
155 .filename("key-filename".to_string())
156 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
157 ),
158 )
159 .headers(BTreeMap::from([("unique".to_string(), "examplesynthetic".to_string())]))
160 .method("GET".to_string())
161 .proxy(
162 SyntheticsTestRequestProxy::new(
163 "https://datadoghq.com".to_string(),
164 ).headers(BTreeMap::from([])),
165 )
166 .timeout(10.0 as f64)
167 .url("https://datadoghq.com".to_string()),
168 ),
169 vec!["aws:us-east-2".to_string()],
170 "BDD test payload: synthetics_api_http_test_payload.json".to_string(),
171 "Example-Synthetic".to_string(),
172 SyntheticsTestOptions::new()
173 .accept_self_signed(false)
174 .allow_insecure(true)
175 .follow_redirects(true)
176 .min_failure_duration(10)
177 .min_location_failed(1)
178 .monitor_name("Example-Synthetic".to_string())
179 .monitor_priority(5)
180 .retry(SyntheticsTestOptionsRetry::new().count(3).interval(10.0 as f64))
181 .tick_every(60),
182 SyntheticsAPITestType::API,
183 )
184 .subtype(SyntheticsTestDetailsSubType::HTTP)
185 .tags(vec!["testing:api".to_string()]);
186 let configuration = datadog::Configuration::new();
187 let api = SyntheticsAPI::with_config(configuration);
188 let resp = api.create_synthetics_api_test(body).await;
189 if let Ok(value) = resp {
190 println!("{:#?}", value);
191 } else {
192 println!("{:#?}", resp.unwrap_err());
193 }
194}
examples/v1_synthetics_CreateSyntheticsAPITest_1487281163.rs (lines 205-207)
46async fn main() {
47 let body =
48 SyntheticsAPITest::new(
49 SyntheticsAPITestConfig::new()
50 .assertions(
51 vec![
52 SyntheticsAssertion::SyntheticsAssertionTarget(
53 Box::new(
54 SyntheticsAssertionTarget::new(
55 SyntheticsAssertionOperator::IS,
56 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
57 "text/html".to_string(),
58 ),
59 SyntheticsAssertionType::HEADER,
60 ).property("{{ PROPERTY }}".to_string()),
61 ),
62 ),
63 SyntheticsAssertion::SyntheticsAssertionTarget(
64 Box::new(
65 SyntheticsAssertionTarget::new(
66 SyntheticsAssertionOperator::LESS_THAN,
67 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueNumber(
68 2000.0 as f64,
69 ),
70 SyntheticsAssertionType::RESPONSE_TIME,
71 ).timings_scope(SyntheticsAssertionTimingsScope::WITHOUT_DNS),
72 ),
73 ),
74 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
75 Box::new(
76 SyntheticsAssertionJSONPathTarget::new(
77 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
78 SyntheticsAssertionType::BODY,
79 ).target(
80 SyntheticsAssertionJSONPathTargetTarget::new()
81 .json_path("topKey".to_string())
82 .operator("isNot".to_string())
83 .target_value(
84 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
85 "0".to_string(),
86 ),
87 ),
88 ),
89 ),
90 ),
91 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
92 Box::new(
93 SyntheticsAssertionJSONPathTarget::new(
94 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
95 SyntheticsAssertionType::BODY,
96 ).target(
97 SyntheticsAssertionJSONPathTargetTarget::new()
98 .elements_operator("atLeastOneElementMatches".to_string())
99 .json_path("topKey".to_string())
100 .operator("isNot".to_string())
101 .target_value(
102 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
103 "0".to_string(),
104 ),
105 ),
106 ),
107 ),
108 ),
109 SyntheticsAssertion::SyntheticsAssertionJSONSchemaTarget(
110 Box::new(
111 SyntheticsAssertionJSONSchemaTarget::new(
112 SyntheticsAssertionJSONSchemaOperator::VALIDATES_JSON_SCHEMA,
113 SyntheticsAssertionType::BODY,
114 ).target(
115 SyntheticsAssertionJSONSchemaTargetTarget::new()
116 .json_schema(
117 r#"{"type": "object", "properties":{"slideshow":{"type":"object"}}}"#.to_string(),
118 )
119 .meta_schema(SyntheticsAssertionJSONSchemaMetaSchema::DRAFT_07),
120 ),
121 ),
122 ),
123 SyntheticsAssertion::SyntheticsAssertionXPathTarget(
124 Box::new(
125 SyntheticsAssertionXPathTarget::new(
126 SyntheticsAssertionXPathOperator::VALIDATES_X_PATH,
127 SyntheticsAssertionType::BODY,
128 ).target(
129 SyntheticsAssertionXPathTargetTarget::new()
130 .operator("contains".to_string())
131 .target_value(
132 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
133 "0".to_string(),
134 ),
135 )
136 .x_path("target-xpath".to_string()),
137 ),
138 ),
139 ),
140 SyntheticsAssertion::SyntheticsAssertionBodyHashTarget(
141 Box::new(
142 SyntheticsAssertionBodyHashTarget::new(
143 SyntheticsAssertionBodyHashOperator::MD5,
144 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
145 "a".to_string(),
146 ),
147 SyntheticsAssertionBodyHashType::BODY_HASH,
148 ),
149 ),
150 ),
151 SyntheticsAssertion::SyntheticsAssertionJavascript(
152 Box::new(
153 SyntheticsAssertionJavascript::new(
154 "const hello = 'world';".to_string(),
155 SyntheticsAssertionJavascriptType::JAVASCRIPT,
156 ),
157 ),
158 )
159 ],
160 )
161 .config_variables(
162 vec![
163 SyntheticsConfigVariable::new("PROPERTY".to_string(), SyntheticsConfigVariableType::TEXT)
164 .example("content-type".to_string())
165 .pattern("content-type".to_string())
166 ],
167 )
168 .request(
169 SyntheticsTestRequest::new()
170 .basic_auth(
171 SyntheticsBasicAuth::SyntheticsBasicAuthOauthClient(
172 Box::new(
173 SyntheticsBasicAuthOauthClient::new(
174 "https://datadog-token.com".to_string(),
175 "client-id".to_string(),
176 "client-secret".to_string(),
177 SyntheticsBasicAuthOauthTokenApiAuthentication::HEADER,
178 SyntheticsBasicAuthOauthClientType::OAUTH_CLIENT,
179 )
180 .audience("audience".to_string())
181 .resource("resource".to_string())
182 .scope("yoyo".to_string()),
183 ),
184 ),
185 )
186 .certificate(
187 SyntheticsTestRequestCertificate::new()
188 .cert(
189 SyntheticsTestRequestCertificateItem::new()
190 .content("cert-content".to_string())
191 .filename("cert-filename".to_string())
192 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
193 )
194 .key(
195 SyntheticsTestRequestCertificateItem::new()
196 .content("key-content".to_string())
197 .filename("key-filename".to_string())
198 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
199 ),
200 )
201 .headers(BTreeMap::from([("unique".to_string(), "examplesynthetic".to_string())]))
202 .method("GET".to_string())
203 .persist_cookies(true)
204 .proxy(
205 SyntheticsTestRequestProxy::new(
206 "https://datadoghq.com".to_string(),
207 ).headers(BTreeMap::from([])),
208 )
209 .timeout(10.0 as f64)
210 .url("https://datadoghq.com".to_string()),
211 )
212 .variables_from_script(r#"dd.variable.set("FOO", "foo")"#.to_string()),
213 vec!["aws:us-east-2".to_string()],
214 "BDD test payload: synthetics_api_http_test_payload.json".to_string(),
215 "Example-Synthetic".to_string(),
216 SyntheticsTestOptions::new()
217 .accept_self_signed(false)
218 .allow_insecure(true)
219 .follow_redirects(true)
220 .http_version(SyntheticsTestOptionsHTTPVersion::HTTP2)
221 .min_failure_duration(10)
222 .min_location_failed(1)
223 .monitor_name("Example-Synthetic".to_string())
224 .monitor_priority(5)
225 .retry(SyntheticsTestOptionsRetry::new().count(3).interval(10.0 as f64))
226 .tick_every(60),
227 SyntheticsAPITestType::API,
228 )
229 .subtype(SyntheticsTestDetailsSubType::HTTP)
230 .tags(vec!["testing:api".to_string()]);
231 let configuration = datadog::Configuration::new();
232 let api = SyntheticsAPI::with_config(configuration);
233 let resp = api.create_synthetics_api_test(body).await;
234 if let Ok(value) = resp {
235 println!("{:#?}", value);
236 } else {
237 println!("{:#?}", resp.unwrap_err());
238 }
239}
examples/v1_synthetics_CreateSyntheticsAPITest_1987645492.rs (lines 204-206)
45async fn main() {
46 let body =
47 SyntheticsAPITest::new(
48 SyntheticsAPITestConfig::new()
49 .assertions(
50 vec![
51 SyntheticsAssertion::SyntheticsAssertionTarget(
52 Box::new(
53 SyntheticsAssertionTarget::new(
54 SyntheticsAssertionOperator::IS,
55 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
56 "text/html".to_string(),
57 ),
58 SyntheticsAssertionType::HEADER,
59 ).property("{{ PROPERTY }}".to_string()),
60 ),
61 ),
62 SyntheticsAssertion::SyntheticsAssertionTarget(
63 Box::new(
64 SyntheticsAssertionTarget::new(
65 SyntheticsAssertionOperator::LESS_THAN,
66 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueNumber(
67 2000.0 as f64,
68 ),
69 SyntheticsAssertionType::RESPONSE_TIME,
70 ).timings_scope(SyntheticsAssertionTimingsScope::WITHOUT_DNS),
71 ),
72 ),
73 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
74 Box::new(
75 SyntheticsAssertionJSONPathTarget::new(
76 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
77 SyntheticsAssertionType::BODY,
78 ).target(
79 SyntheticsAssertionJSONPathTargetTarget::new()
80 .json_path("topKey".to_string())
81 .operator("isNot".to_string())
82 .target_value(
83 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
84 "0".to_string(),
85 ),
86 ),
87 ),
88 ),
89 ),
90 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
91 Box::new(
92 SyntheticsAssertionJSONPathTarget::new(
93 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
94 SyntheticsAssertionType::BODY,
95 ).target(
96 SyntheticsAssertionJSONPathTargetTarget::new()
97 .elements_operator("atLeastOneElementMatches".to_string())
98 .json_path("topKey".to_string())
99 .operator("isNot".to_string())
100 .target_value(
101 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
102 "0".to_string(),
103 ),
104 ),
105 ),
106 ),
107 ),
108 SyntheticsAssertion::SyntheticsAssertionJSONSchemaTarget(
109 Box::new(
110 SyntheticsAssertionJSONSchemaTarget::new(
111 SyntheticsAssertionJSONSchemaOperator::VALIDATES_JSON_SCHEMA,
112 SyntheticsAssertionType::BODY,
113 ).target(
114 SyntheticsAssertionJSONSchemaTargetTarget::new()
115 .json_schema(
116 r#"{"type": "object", "properties":{"slideshow":{"type":"object"}}}"#.to_string(),
117 )
118 .meta_schema(SyntheticsAssertionJSONSchemaMetaSchema::DRAFT_07),
119 ),
120 ),
121 ),
122 SyntheticsAssertion::SyntheticsAssertionXPathTarget(
123 Box::new(
124 SyntheticsAssertionXPathTarget::new(
125 SyntheticsAssertionXPathOperator::VALIDATES_X_PATH,
126 SyntheticsAssertionType::BODY,
127 ).target(
128 SyntheticsAssertionXPathTargetTarget::new()
129 .operator("contains".to_string())
130 .target_value(
131 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
132 "0".to_string(),
133 ),
134 )
135 .x_path("target-xpath".to_string()),
136 ),
137 ),
138 ),
139 SyntheticsAssertion::SyntheticsAssertionBodyHashTarget(
140 Box::new(
141 SyntheticsAssertionBodyHashTarget::new(
142 SyntheticsAssertionBodyHashOperator::MD5,
143 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
144 "a".to_string(),
145 ),
146 SyntheticsAssertionBodyHashType::BODY_HASH,
147 ),
148 ),
149 ),
150 SyntheticsAssertion::SyntheticsAssertionJavascript(
151 Box::new(
152 SyntheticsAssertionJavascript::new(
153 "const hello = 'world';".to_string(),
154 SyntheticsAssertionJavascriptType::JAVASCRIPT,
155 ),
156 ),
157 )
158 ],
159 )
160 .config_variables(
161 vec![
162 SyntheticsConfigVariable::new("PROPERTY".to_string(), SyntheticsConfigVariableType::TEXT)
163 .example("content-type".to_string())
164 .pattern("content-type".to_string())
165 ],
166 )
167 .request(
168 SyntheticsTestRequest::new()
169 .basic_auth(
170 SyntheticsBasicAuth::SyntheticsBasicAuthOauthClient(
171 Box::new(
172 SyntheticsBasicAuthOauthClient::new(
173 "https://datadog-token.com".to_string(),
174 "client-id".to_string(),
175 "client-secret".to_string(),
176 SyntheticsBasicAuthOauthTokenApiAuthentication::HEADER,
177 SyntheticsBasicAuthOauthClientType::OAUTH_CLIENT,
178 )
179 .audience("audience".to_string())
180 .resource("resource".to_string())
181 .scope("yoyo".to_string()),
182 ),
183 ),
184 )
185 .certificate(
186 SyntheticsTestRequestCertificate::new()
187 .cert(
188 SyntheticsTestRequestCertificateItem::new()
189 .content("cert-content".to_string())
190 .filename("cert-filename".to_string())
191 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
192 )
193 .key(
194 SyntheticsTestRequestCertificateItem::new()
195 .content("key-content".to_string())
196 .filename("key-filename".to_string())
197 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
198 ),
199 )
200 .headers(BTreeMap::from([("unique".to_string(), "examplesynthetic".to_string())]))
201 .method("GET".to_string())
202 .persist_cookies(true)
203 .proxy(
204 SyntheticsTestRequestProxy::new(
205 "https://datadoghq.com".to_string(),
206 ).headers(BTreeMap::from([])),
207 )
208 .timeout(10.0 as f64)
209 .url("https://datadoghq.com".to_string()),
210 )
211 .variables_from_script(r#"dd.variable.set("FOO", "foo")"#.to_string()),
212 vec!["aws:us-east-2".to_string()],
213 "BDD test payload: synthetics_api_http_test_payload.json".to_string(),
214 "Example-Synthetic".to_string(),
215 SyntheticsTestOptions::new()
216 .accept_self_signed(false)
217 .allow_insecure(true)
218 .follow_redirects(true)
219 .http_version(SyntheticsTestOptionsHTTPVersion::HTTP2)
220 .min_failure_duration(10)
221 .min_location_failed(1)
222 .monitor_name("Example-Synthetic".to_string())
223 .monitor_priority(5)
224 .retry(SyntheticsTestOptionsRetry::new().count(3).interval(10.0 as f64))
225 .tick_every(60),
226 SyntheticsAPITestType::API,
227 )
228 .subtype(SyntheticsTestDetailsSubType::HTTP)
229 .tags(vec!["testing:api".to_string()]);
230 let configuration = datadog::Configuration::new();
231 let api = SyntheticsAPI::with_config(configuration);
232 let resp = api.create_synthetics_api_test(body).await;
233 if let Ok(value) = resp {
234 println!("{:#?}", value);
235 } else {
236 println!("{:#?}", resp.unwrap_err());
237 }
238}
Sourcepub fn headers(self, value: BTreeMap<String, String>) -> Self
pub fn headers(self, value: BTreeMap<String, String>) -> Self
Examples found in repository?
examples/v1_synthetics_CreateSyntheticsAPITest_1241981394.rs (line 159)
39async fn main() {
40 let body =
41 SyntheticsAPITest::new(
42 SyntheticsAPITestConfig::new()
43 .assertions(
44 vec![
45 SyntheticsAssertion::SyntheticsAssertionTarget(
46 Box::new(
47 SyntheticsAssertionTarget::new(
48 SyntheticsAssertionOperator::IS,
49 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
50 "text/html".to_string(),
51 ),
52 SyntheticsAssertionType::HEADER,
53 ).property("{{ PROPERTY }}".to_string()),
54 ),
55 ),
56 SyntheticsAssertion::SyntheticsAssertionTarget(
57 Box::new(
58 SyntheticsAssertionTarget::new(
59 SyntheticsAssertionOperator::LESS_THAN,
60 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueNumber(
61 2000.0 as f64,
62 ),
63 SyntheticsAssertionType::RESPONSE_TIME,
64 ).timings_scope(SyntheticsAssertionTimingsScope::WITHOUT_DNS),
65 ),
66 ),
67 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
68 Box::new(
69 SyntheticsAssertionJSONPathTarget::new(
70 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
71 SyntheticsAssertionType::BODY,
72 ).target(
73 SyntheticsAssertionJSONPathTargetTarget::new()
74 .json_path("topKey".to_string())
75 .operator("isNot".to_string())
76 .target_value(
77 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
78 "0".to_string(),
79 ),
80 ),
81 ),
82 ),
83 ),
84 SyntheticsAssertion::SyntheticsAssertionXPathTarget(
85 Box::new(
86 SyntheticsAssertionXPathTarget::new(
87 SyntheticsAssertionXPathOperator::VALIDATES_X_PATH,
88 SyntheticsAssertionType::BODY,
89 ).target(
90 SyntheticsAssertionXPathTargetTarget::new()
91 .operator("contains".to_string())
92 .target_value(
93 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
94 "0".to_string(),
95 ),
96 )
97 .x_path("target-xpath".to_string()),
98 ),
99 ),
100 )
101 ],
102 )
103 .config_variables(
104 vec![
105 SyntheticsConfigVariable::new("PROPERTY".to_string(), SyntheticsConfigVariableType::TEXT)
106 .example("content-type".to_string())
107 .pattern("content-type".to_string())
108 ],
109 )
110 .request(
111 SyntheticsTestRequest::new()
112 .basic_auth(
113 SyntheticsBasicAuth::SyntheticsBasicAuthOauthClient(
114 Box::new(
115 SyntheticsBasicAuthOauthClient::new(
116 "https://datadog-token.com".to_string(),
117 "client-id".to_string(),
118 "client-secret".to_string(),
119 SyntheticsBasicAuthOauthTokenApiAuthentication::HEADER,
120 SyntheticsBasicAuthOauthClientType::OAUTH_CLIENT,
121 )
122 .audience("audience".to_string())
123 .resource("resource".to_string())
124 .scope("yoyo".to_string()),
125 ),
126 ),
127 )
128 .body_type(SyntheticsTestRequestBodyType::APPLICATION_OCTET_STREAM)
129 .certificate(
130 SyntheticsTestRequestCertificate::new()
131 .cert(
132 SyntheticsTestRequestCertificateItem::new()
133 .content("cert-content".to_string())
134 .filename("cert-filename".to_string())
135 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
136 )
137 .key(
138 SyntheticsTestRequestCertificateItem::new()
139 .content("key-content".to_string())
140 .filename("key-filename".to_string())
141 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
142 ),
143 )
144 .files(
145 vec![
146 SyntheticsTestRequestBodyFile::new()
147 .content("file content".to_string())
148 .name("file name".to_string())
149 .original_file_name("image.png".to_string())
150 .type_("file type".to_string())
151 ],
152 )
153 .headers(BTreeMap::from([("unique".to_string(), "examplesynthetic".to_string())]))
154 .method("GET".to_string())
155 .persist_cookies(true)
156 .proxy(
157 SyntheticsTestRequestProxy::new(
158 "https://datadoghq.com".to_string(),
159 ).headers(BTreeMap::from([])),
160 )
161 .timeout(10.0 as f64)
162 .url("https://datadoghq.com".to_string()),
163 ),
164 vec!["aws:us-east-2".to_string()],
165 "BDD test payload: synthetics_api_http_test_payload.json".to_string(),
166 "Example-Synthetic".to_string(),
167 SyntheticsTestOptions::new()
168 .accept_self_signed(false)
169 .allow_insecure(true)
170 .follow_redirects(true)
171 .http_version(SyntheticsTestOptionsHTTPVersion::HTTP2)
172 .min_failure_duration(10)
173 .min_location_failed(1)
174 .monitor_name("Example-Synthetic".to_string())
175 .monitor_priority(5)
176 .retry(SyntheticsTestOptionsRetry::new().count(3).interval(10.0 as f64))
177 .tick_every(60),
178 SyntheticsAPITestType::API,
179 )
180 .subtype(SyntheticsTestDetailsSubType::HTTP)
181 .tags(vec!["testing:api".to_string()]);
182 let configuration = datadog::Configuration::new();
183 let api = SyntheticsAPI::with_config(configuration);
184 let resp = api.create_synthetics_api_test(body).await;
185 if let Ok(value) = resp {
186 println!("{:#?}", value);
187 } else {
188 println!("{:#?}", resp.unwrap_err());
189 }
190}
More examples
examples/v1_synthetics_CreateSyntheticsAPITest_960766374.rs (line 164)
39async fn main() {
40 let body =
41 SyntheticsAPITest::new(
42 SyntheticsAPITestConfig::new()
43 .assertions(
44 vec![
45 SyntheticsAssertion::SyntheticsAssertionTarget(
46 Box::new(
47 SyntheticsAssertionTarget::new(
48 SyntheticsAssertionOperator::IS,
49 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
50 "text/html".to_string(),
51 ),
52 SyntheticsAssertionType::HEADER,
53 ).property("{{ PROPERTY }}".to_string()),
54 ),
55 ),
56 SyntheticsAssertion::SyntheticsAssertionTarget(
57 Box::new(
58 SyntheticsAssertionTarget::new(
59 SyntheticsAssertionOperator::LESS_THAN,
60 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueNumber(
61 2000.0 as f64,
62 ),
63 SyntheticsAssertionType::RESPONSE_TIME,
64 ),
65 ),
66 ),
67 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
68 Box::new(
69 SyntheticsAssertionJSONPathTarget::new(
70 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
71 SyntheticsAssertionType::BODY,
72 ).target(
73 SyntheticsAssertionJSONPathTargetTarget::new()
74 .json_path("topKey".to_string())
75 .operator("isNot".to_string())
76 .target_value(
77 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
78 "0".to_string(),
79 ),
80 ),
81 ),
82 ),
83 ),
84 SyntheticsAssertion::SyntheticsAssertionJSONSchemaTarget(
85 Box::new(
86 SyntheticsAssertionJSONSchemaTarget::new(
87 SyntheticsAssertionJSONSchemaOperator::VALIDATES_JSON_SCHEMA,
88 SyntheticsAssertionType::BODY,
89 ).target(
90 SyntheticsAssertionJSONSchemaTargetTarget::new()
91 .json_schema(
92 r#"{"type": "object", "properties":{"slideshow":{"type":"object"}}}"#.to_string(),
93 )
94 .meta_schema(SyntheticsAssertionJSONSchemaMetaSchema::DRAFT_07),
95 ),
96 ),
97 ),
98 SyntheticsAssertion::SyntheticsAssertionXPathTarget(
99 Box::new(
100 SyntheticsAssertionXPathTarget::new(
101 SyntheticsAssertionXPathOperator::VALIDATES_X_PATH,
102 SyntheticsAssertionType::BODY,
103 ).target(
104 SyntheticsAssertionXPathTargetTarget::new()
105 .operator("contains".to_string())
106 .target_value(
107 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
108 "0".to_string(),
109 ),
110 )
111 .x_path("target-xpath".to_string()),
112 ),
113 ),
114 )
115 ],
116 )
117 .config_variables(
118 vec![
119 SyntheticsConfigVariable::new("PROPERTY".to_string(), SyntheticsConfigVariableType::TEXT)
120 .example("content-type".to_string())
121 .pattern("content-type".to_string())
122 ],
123 )
124 .request(
125 SyntheticsTestRequest::new()
126 .basic_auth(
127 SyntheticsBasicAuth::SyntheticsBasicAuthOauthROP(
128 Box::new(
129 SyntheticsBasicAuthOauthROP::new(
130 "https://datadog-token.com".to_string(),
131 "oauth-password".to_string(),
132 SyntheticsBasicAuthOauthTokenApiAuthentication::BODY,
133 SyntheticsBasicAuthOauthROPType::OAUTH_ROP,
134 "oauth-usermame".to_string(),
135 )
136 .audience("audience".to_string())
137 .client_id("client-id".to_string())
138 .client_secret("client-secret".to_string())
139 .resource("resource".to_string())
140 .scope("yoyo".to_string()),
141 ),
142 ),
143 )
144 .certificate(
145 SyntheticsTestRequestCertificate::new()
146 .cert(
147 SyntheticsTestRequestCertificateItem::new()
148 .content("cert-content".to_string())
149 .filename("cert-filename".to_string())
150 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
151 )
152 .key(
153 SyntheticsTestRequestCertificateItem::new()
154 .content("key-content".to_string())
155 .filename("key-filename".to_string())
156 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
157 ),
158 )
159 .headers(BTreeMap::from([("unique".to_string(), "examplesynthetic".to_string())]))
160 .method("GET".to_string())
161 .proxy(
162 SyntheticsTestRequestProxy::new(
163 "https://datadoghq.com".to_string(),
164 ).headers(BTreeMap::from([])),
165 )
166 .timeout(10.0 as f64)
167 .url("https://datadoghq.com".to_string()),
168 ),
169 vec!["aws:us-east-2".to_string()],
170 "BDD test payload: synthetics_api_http_test_payload.json".to_string(),
171 "Example-Synthetic".to_string(),
172 SyntheticsTestOptions::new()
173 .accept_self_signed(false)
174 .allow_insecure(true)
175 .follow_redirects(true)
176 .min_failure_duration(10)
177 .min_location_failed(1)
178 .monitor_name("Example-Synthetic".to_string())
179 .monitor_priority(5)
180 .retry(SyntheticsTestOptionsRetry::new().count(3).interval(10.0 as f64))
181 .tick_every(60),
182 SyntheticsAPITestType::API,
183 )
184 .subtype(SyntheticsTestDetailsSubType::HTTP)
185 .tags(vec!["testing:api".to_string()]);
186 let configuration = datadog::Configuration::new();
187 let api = SyntheticsAPI::with_config(configuration);
188 let resp = api.create_synthetics_api_test(body).await;
189 if let Ok(value) = resp {
190 println!("{:#?}", value);
191 } else {
192 println!("{:#?}", resp.unwrap_err());
193 }
194}
examples/v1_synthetics_CreateSyntheticsAPITest_1487281163.rs (line 207)
46async fn main() {
47 let body =
48 SyntheticsAPITest::new(
49 SyntheticsAPITestConfig::new()
50 .assertions(
51 vec![
52 SyntheticsAssertion::SyntheticsAssertionTarget(
53 Box::new(
54 SyntheticsAssertionTarget::new(
55 SyntheticsAssertionOperator::IS,
56 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
57 "text/html".to_string(),
58 ),
59 SyntheticsAssertionType::HEADER,
60 ).property("{{ PROPERTY }}".to_string()),
61 ),
62 ),
63 SyntheticsAssertion::SyntheticsAssertionTarget(
64 Box::new(
65 SyntheticsAssertionTarget::new(
66 SyntheticsAssertionOperator::LESS_THAN,
67 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueNumber(
68 2000.0 as f64,
69 ),
70 SyntheticsAssertionType::RESPONSE_TIME,
71 ).timings_scope(SyntheticsAssertionTimingsScope::WITHOUT_DNS),
72 ),
73 ),
74 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
75 Box::new(
76 SyntheticsAssertionJSONPathTarget::new(
77 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
78 SyntheticsAssertionType::BODY,
79 ).target(
80 SyntheticsAssertionJSONPathTargetTarget::new()
81 .json_path("topKey".to_string())
82 .operator("isNot".to_string())
83 .target_value(
84 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
85 "0".to_string(),
86 ),
87 ),
88 ),
89 ),
90 ),
91 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
92 Box::new(
93 SyntheticsAssertionJSONPathTarget::new(
94 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
95 SyntheticsAssertionType::BODY,
96 ).target(
97 SyntheticsAssertionJSONPathTargetTarget::new()
98 .elements_operator("atLeastOneElementMatches".to_string())
99 .json_path("topKey".to_string())
100 .operator("isNot".to_string())
101 .target_value(
102 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
103 "0".to_string(),
104 ),
105 ),
106 ),
107 ),
108 ),
109 SyntheticsAssertion::SyntheticsAssertionJSONSchemaTarget(
110 Box::new(
111 SyntheticsAssertionJSONSchemaTarget::new(
112 SyntheticsAssertionJSONSchemaOperator::VALIDATES_JSON_SCHEMA,
113 SyntheticsAssertionType::BODY,
114 ).target(
115 SyntheticsAssertionJSONSchemaTargetTarget::new()
116 .json_schema(
117 r#"{"type": "object", "properties":{"slideshow":{"type":"object"}}}"#.to_string(),
118 )
119 .meta_schema(SyntheticsAssertionJSONSchemaMetaSchema::DRAFT_07),
120 ),
121 ),
122 ),
123 SyntheticsAssertion::SyntheticsAssertionXPathTarget(
124 Box::new(
125 SyntheticsAssertionXPathTarget::new(
126 SyntheticsAssertionXPathOperator::VALIDATES_X_PATH,
127 SyntheticsAssertionType::BODY,
128 ).target(
129 SyntheticsAssertionXPathTargetTarget::new()
130 .operator("contains".to_string())
131 .target_value(
132 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
133 "0".to_string(),
134 ),
135 )
136 .x_path("target-xpath".to_string()),
137 ),
138 ),
139 ),
140 SyntheticsAssertion::SyntheticsAssertionBodyHashTarget(
141 Box::new(
142 SyntheticsAssertionBodyHashTarget::new(
143 SyntheticsAssertionBodyHashOperator::MD5,
144 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
145 "a".to_string(),
146 ),
147 SyntheticsAssertionBodyHashType::BODY_HASH,
148 ),
149 ),
150 ),
151 SyntheticsAssertion::SyntheticsAssertionJavascript(
152 Box::new(
153 SyntheticsAssertionJavascript::new(
154 "const hello = 'world';".to_string(),
155 SyntheticsAssertionJavascriptType::JAVASCRIPT,
156 ),
157 ),
158 )
159 ],
160 )
161 .config_variables(
162 vec![
163 SyntheticsConfigVariable::new("PROPERTY".to_string(), SyntheticsConfigVariableType::TEXT)
164 .example("content-type".to_string())
165 .pattern("content-type".to_string())
166 ],
167 )
168 .request(
169 SyntheticsTestRequest::new()
170 .basic_auth(
171 SyntheticsBasicAuth::SyntheticsBasicAuthOauthClient(
172 Box::new(
173 SyntheticsBasicAuthOauthClient::new(
174 "https://datadog-token.com".to_string(),
175 "client-id".to_string(),
176 "client-secret".to_string(),
177 SyntheticsBasicAuthOauthTokenApiAuthentication::HEADER,
178 SyntheticsBasicAuthOauthClientType::OAUTH_CLIENT,
179 )
180 .audience("audience".to_string())
181 .resource("resource".to_string())
182 .scope("yoyo".to_string()),
183 ),
184 ),
185 )
186 .certificate(
187 SyntheticsTestRequestCertificate::new()
188 .cert(
189 SyntheticsTestRequestCertificateItem::new()
190 .content("cert-content".to_string())
191 .filename("cert-filename".to_string())
192 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
193 )
194 .key(
195 SyntheticsTestRequestCertificateItem::new()
196 .content("key-content".to_string())
197 .filename("key-filename".to_string())
198 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
199 ),
200 )
201 .headers(BTreeMap::from([("unique".to_string(), "examplesynthetic".to_string())]))
202 .method("GET".to_string())
203 .persist_cookies(true)
204 .proxy(
205 SyntheticsTestRequestProxy::new(
206 "https://datadoghq.com".to_string(),
207 ).headers(BTreeMap::from([])),
208 )
209 .timeout(10.0 as f64)
210 .url("https://datadoghq.com".to_string()),
211 )
212 .variables_from_script(r#"dd.variable.set("FOO", "foo")"#.to_string()),
213 vec!["aws:us-east-2".to_string()],
214 "BDD test payload: synthetics_api_http_test_payload.json".to_string(),
215 "Example-Synthetic".to_string(),
216 SyntheticsTestOptions::new()
217 .accept_self_signed(false)
218 .allow_insecure(true)
219 .follow_redirects(true)
220 .http_version(SyntheticsTestOptionsHTTPVersion::HTTP2)
221 .min_failure_duration(10)
222 .min_location_failed(1)
223 .monitor_name("Example-Synthetic".to_string())
224 .monitor_priority(5)
225 .retry(SyntheticsTestOptionsRetry::new().count(3).interval(10.0 as f64))
226 .tick_every(60),
227 SyntheticsAPITestType::API,
228 )
229 .subtype(SyntheticsTestDetailsSubType::HTTP)
230 .tags(vec!["testing:api".to_string()]);
231 let configuration = datadog::Configuration::new();
232 let api = SyntheticsAPI::with_config(configuration);
233 let resp = api.create_synthetics_api_test(body).await;
234 if let Ok(value) = resp {
235 println!("{:#?}", value);
236 } else {
237 println!("{:#?}", resp.unwrap_err());
238 }
239}
examples/v1_synthetics_CreateSyntheticsAPITest_1987645492.rs (line 206)
45async fn main() {
46 let body =
47 SyntheticsAPITest::new(
48 SyntheticsAPITestConfig::new()
49 .assertions(
50 vec![
51 SyntheticsAssertion::SyntheticsAssertionTarget(
52 Box::new(
53 SyntheticsAssertionTarget::new(
54 SyntheticsAssertionOperator::IS,
55 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
56 "text/html".to_string(),
57 ),
58 SyntheticsAssertionType::HEADER,
59 ).property("{{ PROPERTY }}".to_string()),
60 ),
61 ),
62 SyntheticsAssertion::SyntheticsAssertionTarget(
63 Box::new(
64 SyntheticsAssertionTarget::new(
65 SyntheticsAssertionOperator::LESS_THAN,
66 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueNumber(
67 2000.0 as f64,
68 ),
69 SyntheticsAssertionType::RESPONSE_TIME,
70 ).timings_scope(SyntheticsAssertionTimingsScope::WITHOUT_DNS),
71 ),
72 ),
73 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
74 Box::new(
75 SyntheticsAssertionJSONPathTarget::new(
76 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
77 SyntheticsAssertionType::BODY,
78 ).target(
79 SyntheticsAssertionJSONPathTargetTarget::new()
80 .json_path("topKey".to_string())
81 .operator("isNot".to_string())
82 .target_value(
83 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
84 "0".to_string(),
85 ),
86 ),
87 ),
88 ),
89 ),
90 SyntheticsAssertion::SyntheticsAssertionJSONPathTarget(
91 Box::new(
92 SyntheticsAssertionJSONPathTarget::new(
93 SyntheticsAssertionJSONPathOperator::VALIDATES_JSON_PATH,
94 SyntheticsAssertionType::BODY,
95 ).target(
96 SyntheticsAssertionJSONPathTargetTarget::new()
97 .elements_operator("atLeastOneElementMatches".to_string())
98 .json_path("topKey".to_string())
99 .operator("isNot".to_string())
100 .target_value(
101 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
102 "0".to_string(),
103 ),
104 ),
105 ),
106 ),
107 ),
108 SyntheticsAssertion::SyntheticsAssertionJSONSchemaTarget(
109 Box::new(
110 SyntheticsAssertionJSONSchemaTarget::new(
111 SyntheticsAssertionJSONSchemaOperator::VALIDATES_JSON_SCHEMA,
112 SyntheticsAssertionType::BODY,
113 ).target(
114 SyntheticsAssertionJSONSchemaTargetTarget::new()
115 .json_schema(
116 r#"{"type": "object", "properties":{"slideshow":{"type":"object"}}}"#.to_string(),
117 )
118 .meta_schema(SyntheticsAssertionJSONSchemaMetaSchema::DRAFT_07),
119 ),
120 ),
121 ),
122 SyntheticsAssertion::SyntheticsAssertionXPathTarget(
123 Box::new(
124 SyntheticsAssertionXPathTarget::new(
125 SyntheticsAssertionXPathOperator::VALIDATES_X_PATH,
126 SyntheticsAssertionType::BODY,
127 ).target(
128 SyntheticsAssertionXPathTargetTarget::new()
129 .operator("contains".to_string())
130 .target_value(
131 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
132 "0".to_string(),
133 ),
134 )
135 .x_path("target-xpath".to_string()),
136 ),
137 ),
138 ),
139 SyntheticsAssertion::SyntheticsAssertionBodyHashTarget(
140 Box::new(
141 SyntheticsAssertionBodyHashTarget::new(
142 SyntheticsAssertionBodyHashOperator::MD5,
143 SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueString(
144 "a".to_string(),
145 ),
146 SyntheticsAssertionBodyHashType::BODY_HASH,
147 ),
148 ),
149 ),
150 SyntheticsAssertion::SyntheticsAssertionJavascript(
151 Box::new(
152 SyntheticsAssertionJavascript::new(
153 "const hello = 'world';".to_string(),
154 SyntheticsAssertionJavascriptType::JAVASCRIPT,
155 ),
156 ),
157 )
158 ],
159 )
160 .config_variables(
161 vec![
162 SyntheticsConfigVariable::new("PROPERTY".to_string(), SyntheticsConfigVariableType::TEXT)
163 .example("content-type".to_string())
164 .pattern("content-type".to_string())
165 ],
166 )
167 .request(
168 SyntheticsTestRequest::new()
169 .basic_auth(
170 SyntheticsBasicAuth::SyntheticsBasicAuthOauthClient(
171 Box::new(
172 SyntheticsBasicAuthOauthClient::new(
173 "https://datadog-token.com".to_string(),
174 "client-id".to_string(),
175 "client-secret".to_string(),
176 SyntheticsBasicAuthOauthTokenApiAuthentication::HEADER,
177 SyntheticsBasicAuthOauthClientType::OAUTH_CLIENT,
178 )
179 .audience("audience".to_string())
180 .resource("resource".to_string())
181 .scope("yoyo".to_string()),
182 ),
183 ),
184 )
185 .certificate(
186 SyntheticsTestRequestCertificate::new()
187 .cert(
188 SyntheticsTestRequestCertificateItem::new()
189 .content("cert-content".to_string())
190 .filename("cert-filename".to_string())
191 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
192 )
193 .key(
194 SyntheticsTestRequestCertificateItem::new()
195 .content("key-content".to_string())
196 .filename("key-filename".to_string())
197 .updated_at("2020-10-16T09:23:24.857Z".to_string()),
198 ),
199 )
200 .headers(BTreeMap::from([("unique".to_string(), "examplesynthetic".to_string())]))
201 .method("GET".to_string())
202 .persist_cookies(true)
203 .proxy(
204 SyntheticsTestRequestProxy::new(
205 "https://datadoghq.com".to_string(),
206 ).headers(BTreeMap::from([])),
207 )
208 .timeout(10.0 as f64)
209 .url("https://datadoghq.com".to_string()),
210 )
211 .variables_from_script(r#"dd.variable.set("FOO", "foo")"#.to_string()),
212 vec!["aws:us-east-2".to_string()],
213 "BDD test payload: synthetics_api_http_test_payload.json".to_string(),
214 "Example-Synthetic".to_string(),
215 SyntheticsTestOptions::new()
216 .accept_self_signed(false)
217 .allow_insecure(true)
218 .follow_redirects(true)
219 .http_version(SyntheticsTestOptionsHTTPVersion::HTTP2)
220 .min_failure_duration(10)
221 .min_location_failed(1)
222 .monitor_name("Example-Synthetic".to_string())
223 .monitor_priority(5)
224 .retry(SyntheticsTestOptionsRetry::new().count(3).interval(10.0 as f64))
225 .tick_every(60),
226 SyntheticsAPITestType::API,
227 )
228 .subtype(SyntheticsTestDetailsSubType::HTTP)
229 .tags(vec!["testing:api".to_string()]);
230 let configuration = datadog::Configuration::new();
231 let api = SyntheticsAPI::with_config(configuration);
232 let resp = api.create_synthetics_api_test(body).await;
233 if let Ok(value) = resp {
234 println!("{:#?}", value);
235 } else {
236 println!("{:#?}", resp.unwrap_err());
237 }
238}
pub fn additional_properties(self, value: BTreeMap<String, Value>) -> Self
Trait Implementations§
Source§impl Clone for SyntheticsTestRequestProxy
impl Clone for SyntheticsTestRequestProxy
Source§fn clone(&self) -> SyntheticsTestRequestProxy
fn clone(&self) -> SyntheticsTestRequestProxy
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for SyntheticsTestRequestProxy
impl Debug for SyntheticsTestRequestProxy
Source§impl<'de> Deserialize<'de> for SyntheticsTestRequestProxy
impl<'de> Deserialize<'de> for SyntheticsTestRequestProxy
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl StructuralPartialEq for SyntheticsTestRequestProxy
Auto Trait Implementations§
impl Freeze for SyntheticsTestRequestProxy
impl RefUnwindSafe for SyntheticsTestRequestProxy
impl Send for SyntheticsTestRequestProxy
impl Sync for SyntheticsTestRequestProxy
impl Unpin for SyntheticsTestRequestProxy
impl UnwindSafe for SyntheticsTestRequestProxy
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more