Skip to content

Commit d39f258

Browse files
committed
fix: return null for missing settings without 404
1 parent 728c00e commit d39f258

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

aw-server/src/endpoints/settings.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use rocket::State;
55
use std::collections::HashMap;
66
use std::sync::MutexGuard;
77

8-
use aw_datastore::Datastore;
8+
use aw_datastore::{Datastore, DatastoreError};
99

1010
use crate::endpoints::HttpErrorJson;
1111

@@ -57,6 +57,7 @@ pub fn setting_get(
5757

5858
match datastore.get_key_value(&setting_key) {
5959
Ok(value) => Ok(Json(serde_json::from_str(&value).unwrap())),
60+
Err(DatastoreError::NoSuchKey(_)) => Ok(Json(serde_json::from_str("null").unwrap())),
6061
Err(err) => Err(err.into()),
6162
}
6263
}

aw-server/tests/api.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ mod api_tests {
513513
}
514514

515515
#[test]
516-
fn test_getting_not_found_value() {
516+
fn test_get_unset_setting() {
517517
let server = setup_testserver();
518518
let client = Client::untracked(server).expect("valid instance");
519519

@@ -523,7 +523,8 @@ mod api_tests {
523523
.get(format!("/api/0/settings/{}", key))
524524
.header(Header::new("Host", "127.0.0.1:5600"))
525525
.dispatch();
526-
assert_eq!(res.status(), rocket::http::Status::NotFound);
526+
assert_eq!(res.status(), rocket::http::Status::Ok);
527+
assert_eq!(res.into_string().unwrap(), "null")
527528
}
528529

529530
#[test]
@@ -664,7 +665,8 @@ mod api_tests {
664665
.get("/api/0/settings/test_key")
665666
.header(Header::new("Host", "127.0.0.1:5600"))
666667
.dispatch();
667-
assert_eq!(res.status(), rocket::http::Status::NotFound);
668+
assert_eq!(res.status(), rocket::http::Status::Ok);
669+
assert_eq!(res.into_string().unwrap(), "null");
668670
}
669671

670672
#[test]

0 commit comments

Comments
 (0)