Skip to content

Commit a6c6c70

Browse files
committed
DELETE /tokens/current should revoke, not actually delete token
1 parent 51018aa commit a6c6c70

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

src/controllers/token.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,11 @@ pub fn revoke_current(req: &mut dyn RequestExt) -> EndpointResult {
116116
.api_token_id()
117117
.ok_or_else(|| bad_request("token not provided"))?;
118118
let conn = req.db_conn()?;
119-
diesel::delete({
119+
diesel::update({
120120
use self::api_tokens::dsl::*;
121121
api_tokens.filter(id.eq(api_token_id))
122122
})
123+
.set(api_tokens::revoked.eq(true))
123124
.execute(&*conn)?;
124125

125126
#[derive(Serialize)]

src/tests/token.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ fn revoke_current_token_success() {
280280

281281
// List tokens contains the token
282282
app.db(|conn| {
283-
let tokens = t!(ApiToken::belonging_to(user.as_model()).load::<ApiToken>(conn));
283+
let tokens: Vec<ApiToken> = assert_ok!(ApiToken::belonging_to(user.as_model()).load(conn));
284284
assert_eq!(tokens.len(), 1);
285285
assert_eq!(tokens[0].name, token.as_model().name);
286286
});
@@ -298,13 +298,22 @@ fn revoke_current_token_success() {
298298
});
299299
}
300300

301+
#[test]
302+
fn revoke_current_token_invalid() {
303+
let (_, _, user) = TestApp::init().with_user();
304+
305+
user.delete::<RevokedResponse>("/api/v1/tokens/current")
306+
.bad_with_status(StatusCode::BAD_REQUEST)
307+
.assert_error("token not provided");
308+
}
309+
301310
#[test]
302311
fn revoke_current_token_fail() {
303312
let (app, _, user, token) = TestApp::init().with_token();
304313

305314
// List tokens contains the token
306315
app.db(|conn| {
307-
let tokens = t!(ApiToken::belonging_to(user.as_model()).load::<ApiToken>(conn));
316+
let tokens: Vec<ApiToken> = assert_ok!(ApiToken::belonging_to(user.as_model()).load(conn));
308317
assert_eq!(tokens.len(), 1);
309318
assert_eq!(tokens[0].name, token.as_model().name);
310319
});

0 commit comments

Comments
 (0)