File tree Expand file tree Collapse file tree 3 files changed +51
-1
lines changed
packages/crates-io-msw/handlers Expand file tree Collapse file tree 3 files changed +51
-1
lines changed Original file line number Diff line number Diff line change 11import createToken from './api-tokens/create.js' ;
2+ import deleteToken from './api-tokens/delete.js' ;
23import listTokens from './api-tokens/list.js' ;
34
4- export default [ createToken , listTokens ] ;
5+ export default [ createToken , listTokens , deleteToken ] ;
Original file line number Diff line number Diff line change 1+ import { http , HttpResponse } from 'msw' ;
2+
3+ import { db } from '../../index.js' ;
4+ import { getSession } from '../../utils/session.js' ;
5+
6+ export default http . delete ( '/api/v1/me/tokens/:tokenId' , async ( { params } ) => {
7+ let { user } = getSession ( ) ;
8+ if ( ! user ) {
9+ return HttpResponse . json ( { errors : [ { detail : 'must be logged in to perform that action' } ] } , { status : 403 } ) ;
10+ }
11+
12+ let { tokenId } = params ;
13+ db . apiToken . delete ( {
14+ where : {
15+ id : { equals : parseInt ( tokenId ) } ,
16+ user : { id : { equals : user . id } } ,
17+ } ,
18+ } ) ;
19+
20+ return HttpResponse . json ( { } ) ;
21+ } ) ;
Original file line number Diff line number Diff line change 1+ import { assert , test } from 'vitest' ;
2+
3+ import { db } from '../../index.js' ;
4+
5+ test ( 'revokes an API token' , async function ( ) {
6+ let user = db . user . create ( ) ;
7+ db . mswSession . create ( { user } ) ;
8+
9+ let token = db . apiToken . create ( { user } ) ;
10+
11+ let response = await fetch ( `/api/v1/me/tokens/${ token . id } ` , { method : 'DELETE' } ) ;
12+ assert . strictEqual ( response . status , 200 ) ;
13+ assert . deepEqual ( await response . json ( ) , { } ) ;
14+
15+ let tokens = db . apiToken . findMany ( { } ) ;
16+ assert . strictEqual ( tokens . length , 0 ) ;
17+ } ) ;
18+
19+ test ( 'returns an error if unauthenticated' , async function ( ) {
20+ let user = db . user . create ( ) ;
21+ let token = db . apiToken . create ( { user } ) ;
22+
23+ let response = await fetch ( `/api/v1/me/tokens/${ token . id } ` , { method : 'DELETE' } ) ;
24+ assert . strictEqual ( response . status , 403 ) ;
25+ assert . deepEqual ( await response . json ( ) , {
26+ errors : [ { detail : 'must be logged in to perform that action' } ] ,
27+ } ) ;
28+ } ) ;
You can’t perform that action at this time.
0 commit comments