MCPcopy Create free account
hub / github.com/actix/examples / test_workflow

Function test_workflow

auth/redis-session/src/main.rs:110–280  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

108
109 #[actix_web::test]
110 async fn test_workflow() {
111 let private_key = actix_web::cookie::Key::generate();
112 let store = RedisSessionStore::new("redis://127.0.0.1:6379")
113 .await
114 .unwrap();
115
116 let srv = actix_test::start(move || {
117 App::new()
118 .wrap(
119 SessionMiddleware::builder(store.clone(), private_key.clone())
120 .cookie_name("test-session".to_owned())
121 .build(),
122 )
123 .wrap(middleware::Logger::default())
124 .service(resource("/").route(get().to(index)))
125 .service(resource("/do_something").route(post().to(do_something)))
126 .service(resource("/login").route(post().to(login)))
127 .service(resource("/logout").route(post().to(logout)))
128 });
129
130 // Step 1: GET index
131 // - set-cookie actix-session should NOT be in response (session data is empty)
132 // - response should be: {"counter": 0, "user_id": None}
133 let request = srv.get("/").send();
134 let mut resp_1 = request.await.unwrap();
135 assert!(resp_1.cookies().unwrap().is_empty());
136 let result_1 = resp_1.json::<IndexResponse>().await.unwrap();
137 assert_eq!(
138 result_1,
139 IndexResponse {
140 user_id: None,
141 counter: 0
142 }
143 );
144
145 // Step 2: POST to do_something, including session cookie #1 in request
146 // - adds new session state in redis: {"counter": 1}
147 // - response should be: {"counter": 1, "user_id": None}
148 let req_3 = srv.post("/do_something").send();
149 let mut resp_3 = req_3.await.unwrap();
150 let cookie_1 = resp_3
151 .cookies()
152 .unwrap()
153 .clone()
154 .into_iter()
155 .find(|c| c.name() == "test-session")
156 .unwrap();
157 let result_3 = resp_3.json::<IndexResponse>().await.unwrap();
158 assert_eq!(
159 result_3,
160 IndexResponse {
161 user_id: None,
162 counter: 1
163 }
164 );
165
166 // Step 3: POST again to do_something, including session cookie #1 in request
167 // - updates session state in redis: {"counter": 2}

Callers

nothing calls this directly

Calls 3

postFunction · 0.85
getMethod · 0.80
nameMethod · 0.45

Tested by

no test coverage detected