Skip to main content

max / makenotwork

1.4 KB · 49 lines History Blame Raw
1 //! Stripe disconnect workflow tests.
2
3 use crate::harness::TestHarness;
4
5 #[tokio::test]
6 async fn stripe_disconnect_requires_auth() {
7 let mut h = TestHarness::new().await;
8
9 let resp = h.client.delete("/api/users/me/stripe").await;
10 assert_eq!(
11 resp.status, 403,
12 "Unauthenticated stripe disconnect should be rejected: {} {}",
13 resp.status, resp.text
14 );
15 }
16
17 #[tokio::test]
18 async fn stripe_disconnect_succeeds() {
19 let mut h = TestHarness::new().await;
20 let _user_id = h
21 .signup("stripedisc", "stripedisc@test.com", "password123")
22 .await;
23
24 // User has no Stripe account connected, but disconnect should still succeed gracefully
25 let resp = h.client.delete("/api/users/me/stripe").await;
26 assert_eq!(
27 resp.status, 204,
28 "Stripe disconnect should succeed: {} {}",
29 resp.status, resp.text
30 );
31 }
32
33 #[tokio::test]
34 async fn stripe_disconnect_idempotent() {
35 let mut h = TestHarness::new().await;
36 let _user_id = h
37 .signup("stripetwice", "stripetwice@test.com", "password123")
38 .await;
39
40 // Disconnect twice, second call should also succeed
41 h.client.delete("/api/users/me/stripe").await;
42 let resp = h.client.delete("/api/users/me/stripe").await;
43 assert_eq!(
44 resp.status, 204,
45 "Second stripe disconnect should also succeed: {} {}",
46 resp.status, resp.text
47 );
48 }
49