Function goose_eggs::valid_text[][src]

pub fn valid_text(html: &str, text: &str) -> bool
Expand description

Returns a bool indicating whether or not an arbitrary str (case sensitive) is found within the html.

Returns true if the expected str is found, otherwise returns false.

This function is case sensitive, if the text “foo” is specified it will only match “foo”, not “Foo” or “FOO”.

While you can invoke this function directly, it’s generally preferred to invoke validate_and_load_static_assets which in turn invokes this function.

Example

use goose::prelude::*;
use goose_eggs::valid_text;

task!(validate_text).set_on_start();

async fn validate_text(user: &mut GooseUser) -> GooseTaskResult {
    let mut goose = user.get("/").await?;

    match goose.response {
        Ok(response) => {
            // Copy the headers so we have them for logging if there are errors.
            let headers = &response.headers().clone();
            match response.text().await {
                Ok(html) => {
                    let text = r#"<code class="language-console">$ cargo new hello_world --bin"#;
                    if !valid_text(&html, text) {
                        return user.set_failure(
                            &format!("{}: text not found: {}", goose.request.raw.url, text),
                            &mut goose.request,
                            Some(headers),
                            Some(&html),
                        );
                    }
                }
                Err(e) => {
                    return user.set_failure(
                        &format!("{}: failed to parse page: {}", goose.request.raw.url, e),
                        &mut goose.request,
                        Some(headers),
                        None,
                    );
                }
            }
        }
        Err(e) => {
            return user.set_failure(
                &format!("{}: no response from server: {}", goose.request.raw.url, e),
                &mut goose.request,
                None,
                None,
            );
        }
    }

    Ok(())
}