Skip to content

Commit b8b78c7

Browse files
committed
EndpointScope: Implement Serialize trait
1 parent 977bf9c commit b8b78c7

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/models/token/scopes.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ use diesel::serialize::{self, IsNull, Output, ToSql};
55
use diesel::sql_types::Text;
66
use std::io::Write;
77

8-
#[derive(Clone, Copy, Debug, PartialEq, Eq, AsExpression)]
8+
#[derive(Clone, Copy, Debug, PartialEq, Eq, AsExpression, Serialize)]
99
#[diesel(sql_type = Text)]
10+
#[serde(rename_all = "kebab-case")]
1011
pub enum EndpointScope {
1112
PublishNew,
1213
PublishUpdate,
@@ -125,6 +126,18 @@ impl CrateScope {
125126
mod tests {
126127
use super::*;
127128

129+
#[test]
130+
fn endpoint_scope_serialization() {
131+
fn assert(scope: EndpointScope, expected: &str) {
132+
assert_ok_eq!(serde_json::to_string(&scope), expected);
133+
}
134+
135+
assert(EndpointScope::ChangeOwners, "\"change-owners\"");
136+
assert(EndpointScope::PublishNew, "\"publish-new\"");
137+
assert(EndpointScope::PublishUpdate, "\"publish-update\"");
138+
assert(EndpointScope::Yank, "\"yank\"");
139+
}
140+
128141
#[test]
129142
fn crate_scope_validation() {
130143
assert_ok!(CrateScope::try_from("foo"));

0 commit comments

Comments
 (0)