Skip to content

Commit e17d7a0

Browse files
committed
hot fix
1 parent b65ed25 commit e17d7a0

File tree

6 files changed

+70
-28
lines changed

6 files changed

+70
-28
lines changed

atcoder-problems-backend/src/bin/run_server.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,13 @@ async fn main() {
1616
let pg_pool = sql_client::initialize_pool(&database_url)
1717
.await
1818
.expect("Failed to initialize the connection pool");
19-
let github = GithubClient::new(&client_id, &client_secret, "https://api.github.com")
20-
.expect("Failed to create github client");
19+
let github = GithubClient::new(
20+
&client_id,
21+
&client_secret,
22+
"https://github.com",
23+
"https://api.github.com",
24+
)
25+
.expect("Failed to create github client");
2126
run_server(pg_pool, github, port)
2227
.await
2328
.expect("Failed to run server");

atcoder-problems-backend/src/server/middleware/github_auth.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,20 @@ pub struct GithubClient {
2626
client_id: String,
2727
client_secret: String,
2828
base_url: String,
29+
api_base_url: String,
2930
}
3031

3132
impl GithubClient {
32-
pub fn new(client_id: &str, client_secret: &str, base_url: &str) -> Result<Self> {
33+
pub fn new(
34+
client_id: &str,
35+
client_secret: &str,
36+
base_url: &str,
37+
api_base_url: &str,
38+
) -> Result<Self> {
3339
Ok(Self {
3440
client: Client::builder().user_agent("AtCoder Problems").build()?,
3541
base_url: base_url.to_string(),
42+
api_base_url: api_base_url.to_string(),
3643
client_id: client_id.to_string(),
3744
client_secret: client_secret.to_string(),
3845
})
@@ -61,7 +68,7 @@ impl GithubClient {
6168

6269
pub async fn verify_user(&self, access_token: &str) -> Result<GithubToken> {
6370
let token_header = format!("token {}", access_token);
64-
let url = format!("{}/user", self.base_url);
71+
let url = format!("{}/user", self.api_base_url);
6572
let response: GithubToken = self
6673
.client
6774
.get(url)

atcoder-problems-backend/tests/test_server_e2e_problem_list.rs

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,16 @@ async fn setup() -> u16 {
2323
#[actix_web::test]
2424
async fn test_list() {
2525
let port = setup().await;
26-
let mock_server = utils::start_mock_github_server(VALID_TOKEN, GithubToken { id: 0 });
26+
let mock_server = utils::start_mock_github_server(VALID_TOKEN);
2727
let mock_server_base_url = mock_server.base_url();
28+
let mock_api_server = utils::start_mock_github_api_server(VALID_TOKEN, GithubToken { id: 0 });
29+
let mock_api_server_base_url = mock_api_server.base_url();
2830
let server = actix_web::rt::spawn(async move {
2931
let pg_pool = sql_client::initialize_pool(utils::get_sql_url_from_env())
3032
.await
3133
.unwrap();
32-
let github = GithubClient::new("", "", &mock_server_base_url).unwrap();
34+
let github =
35+
GithubClient::new("", "", &mock_server_base_url, &mock_api_server_base_url).unwrap();
3336
actix_web::HttpServer::new(move || {
3437
actix_web::App::new()
3538
.wrap(GithubAuthentication::new(github.clone()))
@@ -194,13 +197,16 @@ async fn test_list() {
194197
#[actix_web::test]
195198
async fn test_invalid_token() {
196199
let port = setup().await;
197-
let mock_server = utils::start_mock_github_server(VALID_TOKEN, GithubToken { id: 0 });
200+
let mock_server = utils::start_mock_github_server(VALID_TOKEN);
198201
let mock_server_base_url = mock_server.base_url();
202+
let mock_api_server = utils::start_mock_github_api_server(VALID_TOKEN, GithubToken { id: 0 });
203+
let mock_api_server_base_url = mock_api_server.base_url();
199204
let server = actix_web::rt::spawn(async move {
200205
let pg_pool = sql_client::initialize_pool(utils::get_sql_url_from_env())
201206
.await
202207
.unwrap();
203-
let github = GithubClient::new("", "", &mock_server_base_url).unwrap();
208+
let github =
209+
GithubClient::new("", "", &mock_server_base_url, &mock_api_server_base_url).unwrap();
204210
actix_web::HttpServer::new(move || {
205211
actix_web::App::new()
206212
.wrap(GithubAuthentication::new(github.clone()))
@@ -239,13 +245,16 @@ async fn test_invalid_token() {
239245
#[actix_web::test]
240246
async fn test_list_item() {
241247
let port = setup().await;
242-
let mock_server = utils::start_mock_github_server(VALID_TOKEN, GithubToken { id: 0 });
248+
let mock_server = utils::start_mock_github_server(VALID_TOKEN);
243249
let mock_server_base_url = mock_server.base_url();
250+
let mock_api_server = utils::start_mock_github_api_server(VALID_TOKEN, GithubToken { id: 0 });
251+
let mock_api_server_base_url = mock_api_server.base_url();
244252
let server = actix_web::rt::spawn(async move {
245253
let pg_pool = sql_client::initialize_pool(utils::get_sql_url_from_env())
246254
.await
247255
.unwrap();
248-
let github = GithubClient::new("", "", &mock_server_base_url).unwrap();
256+
let github =
257+
GithubClient::new("", "", &mock_server_base_url, &mock_api_server_base_url).unwrap();
249258
actix_web::HttpServer::new(move || {
250259
actix_web::App::new()
251260
.wrap(GithubAuthentication::new(github.clone()))
@@ -386,13 +395,16 @@ async fn test_list_item() {
386395
#[actix_web::test]
387396
async fn test_list_delete() {
388397
let port = setup().await;
389-
let mock_server = utils::start_mock_github_server(VALID_TOKEN, GithubToken { id: 0 });
398+
let mock_server = utils::start_mock_github_server(VALID_TOKEN);
390399
let mock_server_base_url = mock_server.base_url();
400+
let mock_api_server = utils::start_mock_github_api_server(VALID_TOKEN, GithubToken { id: 0 });
401+
let mock_api_server_base_url = mock_api_server.base_url();
391402
let server = actix_web::rt::spawn(async move {
392403
let pg_pool = sql_client::initialize_pool(utils::get_sql_url_from_env())
393404
.await
394405
.unwrap();
395-
let github = GithubClient::new("", "", &mock_server_base_url).unwrap();
406+
let github =
407+
GithubClient::new("", "", &mock_server_base_url, &mock_api_server_base_url).unwrap();
396408
actix_web::HttpServer::new(move || {
397409
actix_web::App::new()
398410
.wrap(GithubAuthentication::new(github.clone()))
@@ -474,13 +486,16 @@ async fn test_list_delete() {
474486
#[actix_web::test]
475487
async fn test_register_twice() {
476488
let port = setup().await;
477-
let mock_server = utils::start_mock_github_server(VALID_TOKEN, GithubToken { id: 0 });
489+
let mock_server = utils::start_mock_github_server(VALID_TOKEN);
478490
let mock_server_base_url = mock_server.base_url();
491+
let mock_api_server = utils::start_mock_github_api_server(VALID_TOKEN, GithubToken { id: 0 });
492+
let mock_api_server_base_url = mock_api_server.base_url();
479493
let server = actix_web::rt::spawn(async move {
480494
let pg_pool = sql_client::initialize_pool(utils::get_sql_url_from_env())
481495
.await
482496
.unwrap();
483-
let github = GithubClient::new("", "", &mock_server_base_url).unwrap();
497+
let github =
498+
GithubClient::new("", "", &mock_server_base_url, &mock_api_server_base_url).unwrap();
484499
actix_web::HttpServer::new(move || {
485500
actix_web::App::new()
486501
.wrap(GithubAuthentication::new(github.clone()))

atcoder-problems-backend/tests/test_server_e2e_progress_reset.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,16 @@ fn url(path: &str, port: u16) -> String {
2121
async fn test_progress_reset() {
2222
let token = "access_token";
2323
let port = setup().await;
24-
let mock_server = utils::start_mock_github_server(token, GithubToken { id: 0 });
24+
let mock_server = utils::start_mock_github_server(token);
2525
let mock_server_base_url = mock_server.base_url();
26+
let mock_api_server = utils::start_mock_github_api_server(token, GithubToken { id: 0 });
27+
let mock_api_server_base_url = mock_api_server.base_url();
2628
let server = actix_web::rt::spawn(async move {
2729
let pg_pool = sql_client::initialize_pool(utils::get_sql_url_from_env())
2830
.await
2931
.unwrap();
30-
let github = GithubClient::new("", "", &mock_server_base_url).unwrap();
32+
let github =
33+
GithubClient::new("", "", &mock_server_base_url, &mock_api_server_base_url).unwrap();
3134
actix_web::HttpServer::new(move || {
3235
actix_web::App::new()
3336
.wrap(GithubAuthentication::new(github.clone()))

atcoder-problems-backend/tests/test_server_e2e_virtual_contest.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@ async fn setup() -> u16 {
2222
#[actix_web::test]
2323
async fn test_virtual_contest() {
2424
let port = setup().await;
25-
let mock_server = utils::start_mock_github_server(VALID_TOKEN, GithubToken { id: 0 });
25+
let mock_server = utils::start_mock_github_server(VALID_TOKEN);
2626
let mock_server_base_url = mock_server.base_url();
27+
let mock_api_server = utils::start_mock_github_api_server(VALID_TOKEN, GithubToken { id: 0 });
28+
let mock_api_server_base_url = mock_api_server.base_url();
2729
let server = actix_web::rt::spawn(async move {
2830
let pg_pool = sql_client::initialize_pool(utils::get_sql_url_from_env())
2931
.await
3032
.unwrap();
31-
let github = GithubClient::new("", "", &mock_server_base_url).unwrap();
33+
let github =
34+
GithubClient::new("", "", &mock_server_base_url, &mock_api_server_base_url).unwrap();
3235
actix_web::HttpServer::new(move || {
3336
actix_web::App::new()
3437
.wrap(GithubAuthentication::new(github.clone()))
@@ -347,13 +350,16 @@ async fn test_virtual_contest() {
347350
#[actix_web::test]
348351
async fn test_virtual_contest_visibility() {
349352
let port = setup().await;
350-
let mock_server = utils::start_mock_github_server(VALID_TOKEN, GithubToken { id: 0 });
353+
let mock_server = utils::start_mock_github_server(VALID_TOKEN);
351354
let mock_server_base_url = mock_server.base_url();
355+
let mock_api_server = utils::start_mock_github_api_server(VALID_TOKEN, GithubToken { id: 0 });
356+
let mock_api_server_base_url = mock_api_server.base_url();
352357
let server = actix_web::rt::spawn(async move {
353358
let pg_pool = sql_client::initialize_pool(utils::get_sql_url_from_env())
354359
.await
355360
.unwrap();
356-
let github = GithubClient::new("", "", &mock_server_base_url).unwrap();
361+
let github =
362+
GithubClient::new("", "", &mock_server_base_url, &mock_api_server_base_url).unwrap();
357363
actix_web::HttpServer::new(move || {
358364
actix_web::App::new()
359365
.wrap(GithubAuthentication::new(github.clone()))

atcoder-problems-backend/tests/utils.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,8 @@ pub async fn initialize_and_connect_to_test_sql() -> PgPool {
2323
}
2424

2525
#[cfg(test)]
26-
pub fn start_mock_github_server(access_token: &str, token: GithubToken) -> MockServer {
26+
pub fn start_mock_github_server(access_token: &str) -> MockServer {
2727
let server = MockServer::start();
28-
let token_header = format!("token {}", access_token);
29-
server.mock(|when, then| {
30-
when.method("GET")
31-
.path("/user")
32-
.header("Authorization", &token_header);
33-
then.status(200).json_body_obj(&token);
34-
});
3528
let token = access_token.to_string();
3629
server.mock(|when, then| {
3730
when.method("POST").path("/login/oauth/access_token");
@@ -41,3 +34,16 @@ pub fn start_mock_github_server(access_token: &str, token: GithubToken) -> MockS
4134
});
4235
server
4336
}
37+
38+
#[cfg(test)]
39+
pub fn start_mock_github_api_server(access_token: &str, token: GithubToken) -> MockServer {
40+
let server = MockServer::start();
41+
let token_header = format!("token {}", access_token);
42+
server.mock(|when, then| {
43+
when.method("GET")
44+
.path("/user")
45+
.header("Authorization", &token_header);
46+
then.status(200).json_body_obj(&token);
47+
});
48+
server
49+
}

0 commit comments

Comments
 (0)