Skip to content

xd009642/wiremocket

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wiremocket

Build Status Latest Version License:MIT docs.rs

'wiremocket' provides mocking so you can perform black-box testing of Rust applications that interact with websocket APIs. It's heavily inspired by wiremock-rs and is an experimentation of how it could look like in a similar API. For a relevant wiremock issue look here.

There's still some work to do, but this is very nearly at an initial version!

How to install

cargo add wiremocket --dev

Getting started

Here is an example of a wiremocket mock which makes sure all text messages are valid json:

use serde_json::json;
use tokio_tungstenite::connect_async;
use tracing_test::traced_test;
use tungstenite::Message;
use wiremocket::prelude::*;

#[tokio::test]
async fn only_json_matcher() {
    let server = MockServer::start().await;

    server
        .register(Mock::given(ValidJsonMatcher).expect(1..))
        .await;

    let (mut stream, response) = connect_async(server.uri()).await.unwrap();

    let val = json!({"hello": "world"});

    stream.send(Message::text(val.to_string())).await.unwrap();

    stream.send(Message::Close(None)).await.unwrap();

    std::mem::drop(stream);

    server.verify().await;
}

More advanced matching based on the stream of messages and more advanced response stream generation are also possible. Please check the docs for more details!

About

No description, website, or topics provided.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages