test: Add tests for HTTP verbs & POSTing data
This commit is contained in:
		
							parent
							
								
									b71b44a672
								
							
						
					
					
						commit
						569e10e509
					
				
					 1 changed files with 94 additions and 0 deletions
				
			
		
							
								
								
									
										94
									
								
								src/tests.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								src/tests.rs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,94 @@
 | 
			
		|||
use super::*;
 | 
			
		||||
use serde_json::{Value, json};
 | 
			
		||||
 | 
			
		||||
// These tests check whether the correct HTTP method is used in the
 | 
			
		||||
// requests. httpbin will return 405-statuses for incorrect methods.
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn test_http_get() {
 | 
			
		||||
    let resp = Request::new(Method::Get, "https://httpbin.org/get")
 | 
			
		||||
        .expect("failed to create request")
 | 
			
		||||
        .send()
 | 
			
		||||
        .expect("failed to send request");
 | 
			
		||||
 | 
			
		||||
    assert_eq!(200, resp.status, "response status should be 200 OK");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn test_http_delete() {
 | 
			
		||||
    let resp = Request::new(Method::Delete, "https://httpbin.org/delete")
 | 
			
		||||
        .expect("failed to create request")
 | 
			
		||||
        .send().expect("failed to send request");
 | 
			
		||||
 | 
			
		||||
    assert_eq!(200, resp.status, "response status should be 200 OK");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn test_http_put() {
 | 
			
		||||
    let resp = Request::new(Method::Put, "https://httpbin.org/put")
 | 
			
		||||
        .expect("failed to create request")
 | 
			
		||||
        .send().expect("failed to send request");
 | 
			
		||||
 | 
			
		||||
    assert_eq!(200, resp.status, "response status should be 200 OK");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn test_http_patch() {
 | 
			
		||||
    let resp = Request::new(Method::Patch, "https://httpbin.org/patch")
 | 
			
		||||
        .expect("failed to create request")
 | 
			
		||||
        .send().expect("failed to send request");
 | 
			
		||||
 | 
			
		||||
    assert_eq!(200, resp.status, "response status should be 200 OK");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn test_http_post() {
 | 
			
		||||
    let body = "test body";
 | 
			
		||||
    let response = Request::new(Method::Post, "https://httpbin.org/post")
 | 
			
		||||
        .expect("failed to create request")
 | 
			
		||||
        .user_agent("crimp test suite").expect("failed to set user-agent")
 | 
			
		||||
        .body("text/plain", &body.as_bytes())
 | 
			
		||||
        .send().expect("failed to send request")
 | 
			
		||||
        .as_json::<Value>().expect("failed to deserialize response");
 | 
			
		||||
 | 
			
		||||
    let data = response.body;
 | 
			
		||||
 | 
			
		||||
    assert_eq!(200, response.status, "response status should be 200 OK");
 | 
			
		||||
 | 
			
		||||
    assert_eq!(data.get("data").unwrap(), &json!("test body"),
 | 
			
		||||
               "test body should have been POSTed");
 | 
			
		||||
 | 
			
		||||
    assert_eq!(
 | 
			
		||||
        data.get("headers").unwrap().get("Content-Type").unwrap(),
 | 
			
		||||
        &json!("text/plain"),
 | 
			
		||||
        "Content-Type should be `text/plain`",
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn test_http_post_json() {
 | 
			
		||||
    let body = json!({
 | 
			
		||||
        "purpose": "testing!"
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    let response = Request::new(Method::Post, "https://httpbin.org/post")
 | 
			
		||||
        .expect("failed to create request")
 | 
			
		||||
        .user_agent("crimp test suite").expect("failed to set user-agent")
 | 
			
		||||
        .json(&body).expect("request serialization failed")
 | 
			
		||||
        .send().expect("failed to send request")
 | 
			
		||||
        .as_json::<Value>().expect("failed to deserialize response");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    let data = response.body;
 | 
			
		||||
 | 
			
		||||
    assert_eq!(200, response.status, "response status should be 200 OK");
 | 
			
		||||
 | 
			
		||||
    assert_eq!(data.get("json").unwrap(), &body,
 | 
			
		||||
               "test body should have been POSTed");
 | 
			
		||||
 | 
			
		||||
    assert_eq!(
 | 
			
		||||
        data.get("headers").unwrap().get("Content-Type").unwrap(),
 | 
			
		||||
        &json!("application/json"),
 | 
			
		||||
        "Content-Type should be `application/json`",
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue