2135: bug(auth): Make API keys accept Null descriptions r=curquiza a=ManyTheFish

Fix #2116


Co-authored-by: ManyTheFish <many@meilisearch.com>
This commit is contained in:
bors[bot] 2022-02-03 15:26:11 +00:00 committed by GitHub
commit c24b1e5250
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 7 deletions

View File

@ -20,13 +20,14 @@ pub struct Key {
impl Key { impl Key {
pub fn create_from_value(value: Value) -> Result<Self> { pub fn create_from_value(value: Value) -> Result<Self> {
let description = value let description = match value.get("description") {
.get("description") Some(Value::Null) => None,
.map(|des| { Some(des) => Some(
from_value(des.clone()) from_value(des.clone())
.map_err(|_| AuthControllerError::InvalidApiKeyDescription(des.clone())) .map_err(|_| AuthControllerError::InvalidApiKeyDescription(des.clone()))?,
}) ),
.transpose()?; None => None,
};
let id = generate_id(); let id = generate_id();

View File

@ -1,6 +1,6 @@
use crate::common::Server; use crate::common::Server;
use assert_json_diff::assert_json_include; use assert_json_diff::assert_json_include;
use serde_json::json; use serde_json::{json, Value};
use std::{thread, time}; use std::{thread, time};
#[actix_rt::test] #[actix_rt::test]
@ -155,6 +155,41 @@ async fn add_valid_api_key_no_description() {
assert_eq!(code, 201); assert_eq!(code, 201);
} }
#[actix_rt::test]
async fn add_valid_api_key_null_description() {
let mut server = Server::new_auth().await;
server.use_api_key("MASTER_KEY");
let content = json!({
"description": Value::Null,
"indexes": ["products"],
"actions": [
"documents.add"
],
"expiresAt": "2050-11-13T00:00:00"
});
let (response, code) = server.add_api_key(content).await;
assert!(response["key"].is_string());
assert!(response["expiresAt"].is_string());
assert!(response["createdAt"].is_string());
assert!(response["updatedAt"].is_string());
let expected_response = json!({
"actions": [
"documents.add"
],
"indexes": [
"products"
],
"expiresAt": "2050-11-13T00:00:00Z"
});
assert_json_include!(actual: response, expected: expected_response);
assert_eq!(code, 201);
}
#[actix_rt::test] #[actix_rt::test]
async fn error_add_api_key_no_header() { async fn error_add_api_key_no_header() {
let server = Server::new_auth().await; let server = Server::new_auth().await;