mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-09-04 19:56:30 +00:00
Merge pull request #5780 from meilisearch/fix-api-keys
Fix api key action inconsistencies
This commit is contained in:
@ -233,9 +233,6 @@ pub enum Action {
|
|||||||
#[serde(rename = "*")]
|
#[serde(rename = "*")]
|
||||||
#[deserr(rename = "*")]
|
#[deserr(rename = "*")]
|
||||||
All = 0,
|
All = 0,
|
||||||
#[serde(rename = "*.get")]
|
|
||||||
#[deserr(rename = "*.get")]
|
|
||||||
AllGet,
|
|
||||||
#[serde(rename = "search")]
|
#[serde(rename = "search")]
|
||||||
#[deserr(rename = "search")]
|
#[deserr(rename = "search")]
|
||||||
Search,
|
Search,
|
||||||
@ -365,6 +362,9 @@ pub enum Action {
|
|||||||
#[serde(rename = "chatsSettings.update")]
|
#[serde(rename = "chatsSettings.update")]
|
||||||
#[deserr(rename = "chatsSettings.update")]
|
#[deserr(rename = "chatsSettings.update")]
|
||||||
ChatsSettingsUpdate,
|
ChatsSettingsUpdate,
|
||||||
|
#[serde(rename = "*.get")]
|
||||||
|
#[deserr(rename = "*.get")]
|
||||||
|
AllGet,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Action {
|
impl Action {
|
||||||
@ -403,6 +403,7 @@ impl Action {
|
|||||||
METRICS_GET => Some(Self::MetricsGet),
|
METRICS_GET => Some(Self::MetricsGet),
|
||||||
DUMPS_ALL => Some(Self::DumpsAll),
|
DUMPS_ALL => Some(Self::DumpsAll),
|
||||||
DUMPS_CREATE => Some(Self::DumpsCreate),
|
DUMPS_CREATE => Some(Self::DumpsCreate),
|
||||||
|
SNAPSHOTS_ALL => Some(Self::SnapshotsAll),
|
||||||
SNAPSHOTS_CREATE => Some(Self::SnapshotsCreate),
|
SNAPSHOTS_CREATE => Some(Self::SnapshotsCreate),
|
||||||
VERSION => Some(Self::Version),
|
VERSION => Some(Self::Version),
|
||||||
KEYS_CREATE => Some(Self::KeysAdd),
|
KEYS_CREATE => Some(Self::KeysAdd),
|
||||||
@ -411,8 +412,10 @@ impl Action {
|
|||||||
KEYS_DELETE => Some(Self::KeysDelete),
|
KEYS_DELETE => Some(Self::KeysDelete),
|
||||||
EXPERIMENTAL_FEATURES_GET => Some(Self::ExperimentalFeaturesGet),
|
EXPERIMENTAL_FEATURES_GET => Some(Self::ExperimentalFeaturesGet),
|
||||||
EXPERIMENTAL_FEATURES_UPDATE => Some(Self::ExperimentalFeaturesUpdate),
|
EXPERIMENTAL_FEATURES_UPDATE => Some(Self::ExperimentalFeaturesUpdate),
|
||||||
|
EXPORT => Some(Self::Export),
|
||||||
NETWORK_GET => Some(Self::NetworkGet),
|
NETWORK_GET => Some(Self::NetworkGet),
|
||||||
NETWORK_UPDATE => Some(Self::NetworkUpdate),
|
NETWORK_UPDATE => Some(Self::NetworkUpdate),
|
||||||
|
ALL_GET => Some(Self::AllGet),
|
||||||
_otherwise => None,
|
_otherwise => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -497,6 +500,7 @@ pub mod actions {
|
|||||||
pub const METRICS_GET: u8 = MetricsGet.repr();
|
pub const METRICS_GET: u8 = MetricsGet.repr();
|
||||||
pub const DUMPS_ALL: u8 = DumpsAll.repr();
|
pub const DUMPS_ALL: u8 = DumpsAll.repr();
|
||||||
pub const DUMPS_CREATE: u8 = DumpsCreate.repr();
|
pub const DUMPS_CREATE: u8 = DumpsCreate.repr();
|
||||||
|
pub const SNAPSHOTS_ALL: u8 = SnapshotsAll.repr();
|
||||||
pub const SNAPSHOTS_CREATE: u8 = SnapshotsCreate.repr();
|
pub const SNAPSHOTS_CREATE: u8 = SnapshotsCreate.repr();
|
||||||
pub const VERSION: u8 = Version.repr();
|
pub const VERSION: u8 = Version.repr();
|
||||||
pub const KEYS_CREATE: u8 = KeysAdd.repr();
|
pub const KEYS_CREATE: u8 = KeysAdd.repr();
|
||||||
@ -519,3 +523,68 @@ pub mod actions {
|
|||||||
pub const CHATS_SETTINGS_GET: u8 = ChatsSettingsGet.repr();
|
pub const CHATS_SETTINGS_GET: u8 = ChatsSettingsGet.repr();
|
||||||
pub const CHATS_SETTINGS_UPDATE: u8 = ChatsSettingsUpdate.repr();
|
pub const CHATS_SETTINGS_UPDATE: u8 = ChatsSettingsUpdate.repr();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
pub(crate) mod test {
|
||||||
|
use super::actions::*;
|
||||||
|
use super::Action::*;
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_action_repr_and_constants() {
|
||||||
|
assert!(All.repr() == 0 && ALL == 0);
|
||||||
|
assert!(Search.repr() == 1 && SEARCH == 1);
|
||||||
|
assert!(DocumentsAll.repr() == 2 && DOCUMENTS_ALL == 2);
|
||||||
|
assert!(DocumentsAdd.repr() == 3 && DOCUMENTS_ADD == 3);
|
||||||
|
assert!(DocumentsGet.repr() == 4 && DOCUMENTS_GET == 4);
|
||||||
|
assert!(DocumentsDelete.repr() == 5 && DOCUMENTS_DELETE == 5);
|
||||||
|
assert!(IndexesAll.repr() == 6 && INDEXES_ALL == 6);
|
||||||
|
assert!(IndexesAdd.repr() == 7 && INDEXES_CREATE == 7);
|
||||||
|
assert!(IndexesGet.repr() == 8 && INDEXES_GET == 8);
|
||||||
|
assert!(IndexesUpdate.repr() == 9 && INDEXES_UPDATE == 9);
|
||||||
|
assert!(IndexesDelete.repr() == 10 && INDEXES_DELETE == 10);
|
||||||
|
assert!(IndexesSwap.repr() == 11 && INDEXES_SWAP == 11);
|
||||||
|
assert!(TasksAll.repr() == 12 && TASKS_ALL == 12);
|
||||||
|
assert!(TasksCancel.repr() == 13 && TASKS_CANCEL == 13);
|
||||||
|
assert!(TasksDelete.repr() == 14 && TASKS_DELETE == 14);
|
||||||
|
assert!(TasksGet.repr() == 15 && TASKS_GET == 15);
|
||||||
|
assert!(SettingsAll.repr() == 16 && SETTINGS_ALL == 16);
|
||||||
|
assert!(SettingsGet.repr() == 17 && SETTINGS_GET == 17);
|
||||||
|
assert!(SettingsUpdate.repr() == 18 && SETTINGS_UPDATE == 18);
|
||||||
|
assert!(StatsAll.repr() == 19 && STATS_ALL == 19);
|
||||||
|
assert!(StatsGet.repr() == 20 && STATS_GET == 20);
|
||||||
|
assert!(MetricsAll.repr() == 21 && METRICS_ALL == 21);
|
||||||
|
assert!(MetricsGet.repr() == 22 && METRICS_GET == 22);
|
||||||
|
assert!(DumpsAll.repr() == 23 && DUMPS_ALL == 23);
|
||||||
|
assert!(DumpsCreate.repr() == 24 && DUMPS_CREATE == 24);
|
||||||
|
assert!(SnapshotsAll.repr() == 25 && SNAPSHOTS_ALL == 25);
|
||||||
|
assert!(SnapshotsCreate.repr() == 26 && SNAPSHOTS_CREATE == 26);
|
||||||
|
assert!(Version.repr() == 27 && VERSION == 27);
|
||||||
|
assert!(KeysAdd.repr() == 28 && KEYS_CREATE == 28);
|
||||||
|
assert!(KeysGet.repr() == 29 && KEYS_GET == 29);
|
||||||
|
assert!(KeysUpdate.repr() == 30 && KEYS_UPDATE == 30);
|
||||||
|
assert!(KeysDelete.repr() == 31 && KEYS_DELETE == 31);
|
||||||
|
assert!(ExperimentalFeaturesGet.repr() == 32 && EXPERIMENTAL_FEATURES_GET == 32);
|
||||||
|
assert!(ExperimentalFeaturesUpdate.repr() == 33 && EXPERIMENTAL_FEATURES_UPDATE == 33);
|
||||||
|
assert!(Export.repr() == 34 && EXPORT == 34);
|
||||||
|
assert!(NetworkGet.repr() == 35 && NETWORK_GET == 35);
|
||||||
|
assert!(NetworkUpdate.repr() == 36 && NETWORK_UPDATE == 36);
|
||||||
|
assert!(ChatCompletions.repr() == 37 && CHAT_COMPLETIONS == 37);
|
||||||
|
assert!(ChatsAll.repr() == 38 && CHATS_ALL == 38);
|
||||||
|
assert!(ChatsGet.repr() == 39 && CHATS_GET == 39);
|
||||||
|
assert!(ChatsDelete.repr() == 40 && CHATS_DELETE == 40);
|
||||||
|
assert!(ChatsSettingsAll.repr() == 41 && CHATS_SETTINGS_ALL == 41);
|
||||||
|
assert!(ChatsSettingsGet.repr() == 42 && CHATS_SETTINGS_GET == 42);
|
||||||
|
assert!(ChatsSettingsUpdate.repr() == 43 && CHATS_SETTINGS_UPDATE == 43);
|
||||||
|
assert!(AllGet.repr() == 44 && ALL_GET == 44);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_from_repr() {
|
||||||
|
for action in enum_iterator::all::<Action>() {
|
||||||
|
let repr = action.repr();
|
||||||
|
let action_from_repr = Action::from_repr(repr);
|
||||||
|
assert_eq!(Some(action), action_from_repr, "Failed for action: {:?}", action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -421,7 +421,7 @@ async fn error_add_api_key_invalid_parameters_actions() {
|
|||||||
meili_snap::snapshot!(code, @"400 Bad Request");
|
meili_snap::snapshot!(code, @"400 Bad Request");
|
||||||
meili_snap::snapshot!(meili_snap::json_string!(response, { ".createdAt" => "[ignored]", ".updatedAt" => "[ignored]" }), @r#"
|
meili_snap::snapshot!(meili_snap::json_string!(response, { ".createdAt" => "[ignored]", ".updatedAt" => "[ignored]" }), @r#"
|
||||||
{
|
{
|
||||||
"message": "Unknown value `doc.add` at `.actions[0]`: expected one of `*`, `*.get`, `search`, `documents.*`, `documents.add`, `documents.get`, `documents.delete`, `indexes.*`, `indexes.create`, `indexes.get`, `indexes.update`, `indexes.delete`, `indexes.swap`, `tasks.*`, `tasks.cancel`, `tasks.delete`, `tasks.get`, `settings.*`, `settings.get`, `settings.update`, `stats.*`, `stats.get`, `metrics.*`, `metrics.get`, `dumps.*`, `dumps.create`, `snapshots.*`, `snapshots.create`, `version`, `keys.create`, `keys.get`, `keys.update`, `keys.delete`, `experimental.get`, `experimental.update`, `export`, `network.get`, `network.update`, `chatCompletions`, `chats.*`, `chats.get`, `chats.delete`, `chatsSettings.*`, `chatsSettings.get`, `chatsSettings.update`",
|
"message": "Unknown value `doc.add` at `.actions[0]`: expected one of `*`, `search`, `documents.*`, `documents.add`, `documents.get`, `documents.delete`, `indexes.*`, `indexes.create`, `indexes.get`, `indexes.update`, `indexes.delete`, `indexes.swap`, `tasks.*`, `tasks.cancel`, `tasks.delete`, `tasks.get`, `settings.*`, `settings.get`, `settings.update`, `stats.*`, `stats.get`, `metrics.*`, `metrics.get`, `dumps.*`, `dumps.create`, `snapshots.*`, `snapshots.create`, `version`, `keys.create`, `keys.get`, `keys.update`, `keys.delete`, `experimental.get`, `experimental.update`, `export`, `network.get`, `network.update`, `chatCompletions`, `chats.*`, `chats.get`, `chats.delete`, `chatsSettings.*`, `chatsSettings.get`, `chatsSettings.update`, `*.get`",
|
||||||
"code": "invalid_api_key_actions",
|
"code": "invalid_api_key_actions",
|
||||||
"type": "invalid_request",
|
"type": "invalid_request",
|
||||||
"link": "https://docs.meilisearch.com/errors#invalid_api_key_actions"
|
"link": "https://docs.meilisearch.com/errors#invalid_api_key_actions"
|
||||||
|
@ -93,7 +93,7 @@ async fn create_api_key_bad_actions() {
|
|||||||
snapshot!(code, @"400 Bad Request");
|
snapshot!(code, @"400 Bad Request");
|
||||||
snapshot!(json_string!(response), @r#"
|
snapshot!(json_string!(response), @r#"
|
||||||
{
|
{
|
||||||
"message": "Unknown value `doggo` at `.actions[0]`: expected one of `*`, `*.get`, `search`, `documents.*`, `documents.add`, `documents.get`, `documents.delete`, `indexes.*`, `indexes.create`, `indexes.get`, `indexes.update`, `indexes.delete`, `indexes.swap`, `tasks.*`, `tasks.cancel`, `tasks.delete`, `tasks.get`, `settings.*`, `settings.get`, `settings.update`, `stats.*`, `stats.get`, `metrics.*`, `metrics.get`, `dumps.*`, `dumps.create`, `snapshots.*`, `snapshots.create`, `version`, `keys.create`, `keys.get`, `keys.update`, `keys.delete`, `experimental.get`, `experimental.update`, `export`, `network.get`, `network.update`, `chatCompletions`, `chats.*`, `chats.get`, `chats.delete`, `chatsSettings.*`, `chatsSettings.get`, `chatsSettings.update`",
|
"message": "Unknown value `doggo` at `.actions[0]`: expected one of `*`, `search`, `documents.*`, `documents.add`, `documents.get`, `documents.delete`, `indexes.*`, `indexes.create`, `indexes.get`, `indexes.update`, `indexes.delete`, `indexes.swap`, `tasks.*`, `tasks.cancel`, `tasks.delete`, `tasks.get`, `settings.*`, `settings.get`, `settings.update`, `stats.*`, `stats.get`, `metrics.*`, `metrics.get`, `dumps.*`, `dumps.create`, `snapshots.*`, `snapshots.create`, `version`, `keys.create`, `keys.get`, `keys.update`, `keys.delete`, `experimental.get`, `experimental.update`, `export`, `network.get`, `network.update`, `chatCompletions`, `chats.*`, `chats.get`, `chats.delete`, `chatsSettings.*`, `chatsSettings.get`, `chatsSettings.update`, `*.get`",
|
||||||
"code": "invalid_api_key_actions",
|
"code": "invalid_api_key_actions",
|
||||||
"type": "invalid_request",
|
"type": "invalid_request",
|
||||||
"link": "https://docs.meilisearch.com/errors#invalid_api_key_actions"
|
"link": "https://docs.meilisearch.com/errors#invalid_api_key_actions"
|
||||||
|
Reference in New Issue
Block a user