@@ -1251,165 +1251,6 @@ func TestMutationResolver_UpdateMe(t *testing.T) {
12511251 })
12521252}
12531253
1254- func TestMutationResolver_DeleteMe (t * testing.T ) {
1255- t .Run ("success" , func (t * testing.T ) {
1256- entClient := testhelper .NewEntSqliteClient (t )
1257-
1258- // Setup database with proper groups and scopes
1259- _ , err := setup .Setup (context .Background (), entClient )
1260- require .NoError (t , err )
1261-
1262- // Get the new-user group (which has me:delete scope)
1263- newUserGroup , err := entClient .Group .Query ().Where (group .NameEQ (useraccount .NewUserGroupSlug )).Only (context .Background ())
1264- require .NoError (t , err )
1265-
1266- // Create a test user in new-user group
1267- user , err := entClient .User .Create ().
1268- SetName ("testuser" ).
1269- 1270- SetGroup (newUserGroup ).
1271- Save (context .Background ())
1272- require .NoError (t , err )
1273-
1274- resolver := & Resolver {
1275- ent : entClient ,
1276- auth : & mockAuthStorage {},
1277- }
1278-
1279- // Create test server with scope directive
1280- cfg := Config {
1281- Resolvers : resolver ,
1282- Directives : DirectiveRoot {Scope : directive .ScopeDirective },
1283- }
1284- srv := handler .New (NewExecutableSchema (cfg ))
1285- srv .AddTransport (transport.POST {})
1286- c := client .New (srv )
1287-
1288- // Execute mutation
1289- var resp struct {
1290- DeleteMe bool
1291- }
1292- err = c .Post (`mutation { deleteMe }` , & resp , func (bd * client.Request ) {
1293- bd .HTTP = bd .HTTP .WithContext (auth .WithUser (bd .HTTP .Context (), auth.TokenInfo {
1294- UserID : user .ID ,
1295- Scopes : []string {"me:delete" },
1296- }))
1297- })
1298-
1299- // Verify response
1300- require .NoError (t , err )
1301- require .True (t , resp .DeleteMe )
1302-
1303- // Verify user was actually deleted
1304- _ , err = entClient .User .Get (context .Background (), user .ID )
1305- require .Error (t , err )
1306- require .True (t , ent .IsNotFound (err ))
1307- })
1308-
1309- t .Run ("unauthenticated" , func (t * testing.T ) {
1310- entClient := testhelper .NewEntSqliteClient (t )
1311- resolver := & Resolver {
1312- ent : entClient ,
1313- auth : & mockAuthStorage {},
1314- }
1315-
1316- // Create test server with scope directive
1317- cfg := Config {
1318- Resolvers : resolver ,
1319- Directives : DirectiveRoot {Scope : directive .ScopeDirective },
1320- }
1321- srv := handler .New (NewExecutableSchema (cfg ))
1322- srv .AddTransport (transport.POST {})
1323- c := client .New (srv )
1324-
1325- // Execute mutation with no auth context
1326- var resp struct {
1327- DeleteMe bool
1328- }
1329- err := c .Post (`mutation { deleteMe }` , & resp )
1330-
1331- // Verify error
1332- require .Error (t , err )
1333- require .Contains (t , err .Error (), defs .ErrUnauthorized .Error ())
1334- })
1335-
1336- t .Run ("insufficient scope" , func (t * testing.T ) {
1337- entClient := testhelper .NewEntSqliteClient (t )
1338-
1339- resolver := & Resolver {
1340- ent : entClient ,
1341- auth : & mockAuthStorage {},
1342- }
1343-
1344- // Create test server with scope directive
1345- cfg := Config {
1346- Resolvers : resolver ,
1347- Directives : DirectiveRoot {Scope : directive .ScopeDirective },
1348- }
1349- srv := handler .New (NewExecutableSchema (cfg ))
1350- srv .AddTransport (transport.POST {})
1351- c := client .New (srv )
1352-
1353- // Create context with authenticated user but wrong scope
1354- ctx := auth .WithUser (context .Background (), auth.TokenInfo {
1355- UserID : 1 ,
1356- Scopes : []string {"user:read" },
1357- })
1358-
1359- // Execute mutation
1360- var resp struct {
1361- DeleteMe bool
1362- }
1363- err := c .Post (`mutation { deleteMe }` , & resp , func (bd * client.Request ) {
1364- bd .HTTP = bd .HTTP .WithContext (ctx )
1365- })
1366-
1367- // Verify error
1368- require .Error (t , err )
1369- require .Contains (t , err .Error (), defs .NewErrNoSufficientScope ("me:delete" ).Error ())
1370- })
1371-
1372- t .Run ("user not found" , func (t * testing.T ) {
1373- entClient := testhelper .NewEntSqliteClient (t )
1374-
1375- // Setup database with proper groups and scopes
1376- _ , err := setup .Setup (context .Background (), entClient )
1377- require .NoError (t , err )
1378-
1379- resolver := & Resolver {
1380- ent : entClient ,
1381- auth : & mockAuthStorage {},
1382- }
1383-
1384- // Create test server with scope directive
1385- cfg := Config {
1386- Resolvers : resolver ,
1387- Directives : DirectiveRoot {Scope : directive .ScopeDirective },
1388- }
1389- srv := handler .New (NewExecutableSchema (cfg ))
1390- srv .AddTransport (transport.POST {})
1391- c := client .New (srv )
1392-
1393- // Create context with authenticated user but non-existent user ID
1394- ctx := auth .WithUser (context .Background (), auth.TokenInfo {
1395- UserID : 999 , // Non-existent user ID
1396- Scopes : []string {"me:delete" },
1397- })
1398-
1399- // Execute mutation
1400- var resp struct {
1401- DeleteMe bool
1402- }
1403- err = c .Post (`mutation { deleteMe }` , & resp , func (bd * client.Request ) {
1404- bd .HTTP = bd .HTTP .WithContext (ctx )
1405- })
1406-
1407- // Verify error
1408- require .Error (t , err )
1409- require .Contains (t , err .Error (), useraccount .ErrUserNotFound .Error ())
1410- })
1411- }
1412-
14131254func TestMutationResolver_VerifyRegistration (t * testing.T ) {
14141255 t .Run ("success" , func (t * testing.T ) {
14151256 entClient := testhelper .NewEntSqliteClient (t )
0 commit comments