MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / callback_server_rejects_wrong_origin

Function callback_server_rejects_wrong_origin

crates/openshell-cli/src/auth.rs:590–633  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

588
589 #[tokio::test]
590 async fn callback_server_rejects_wrong_origin() {
591 let listener = TcpListener::bind("127.0.0.1:0").await.unwrap();
592 let addr = listener.local_addr().unwrap();
593 let (tx, rx) = oneshot::channel();
594
595 tokio::spawn(run_callback_server(
596 listener,
597 tx,
598 "ABC-1234".to_string(),
599 TEST_GATEWAY.to_string(),
600 ));
601
602 let mut stream = tokio::net::TcpStream::connect(addr).await.unwrap();
603 let body = r#"{"token":"jwt","code":"ABC-1234"}"#;
604 let request = format!(
605 "POST /callback HTTP/1.1\r\n\
606 Host: 127.0.0.1\r\n\
607 Origin: https://evil.example.com\r\n\
608 Content-Type: application/json\r\n\
609 Content-Length: {}\r\n\r\n\
610 {}",
611 body.len(),
612 body,
613 );
614 stream.write_all(request.as_bytes()).await.unwrap();
615
616 let mut buf = vec![0u8; 4096];
617 let n = stream.read(&mut buf).await.unwrap();
618 let response = String::from_utf8_lossy(&buf[..n]);
619 assert!(
620 response.contains("403 Forbidden"),
621 "wrong origin should return 403:\n{response}"
622 );
623 assert!(
624 response.contains("origin not allowed"),
625 "should explain the error:\n{response}"
626 );
627
628 // Token channel should not receive a value.
629 assert!(
630 rx.await.is_err(),
631 "token channel should not receive a value with wrong origin"
632 );
633 }
634
635 #[tokio::test]
636 async fn callback_server_rejects_missing_origin() {

Callers

nothing calls this directly

Calls 4

run_callback_serverFunction · 0.85
connectFunction · 0.85
spawnFunction · 0.50
readMethod · 0.45

Tested by

no test coverage detected