package acl_test // DEPRECATED TEST FILE // import ( // "os" // "path/filepath" // "testing" // "git.oblat.lv/alex/triggerssmith/internal/acl" // "git.oblat.lv/alex/triggerssmith/internal/user" // "gorm.io/driver/sqlite" // "gorm.io/gorm" // ) // func openTestDB(t *testing.T) *gorm.DB { // t.Helper() // // Путь к файлу базы // dbPath := filepath.Join("testdata", "test.db") // // Удаляем старую базу, если есть // os.Remove(dbPath) // db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{}) // if err != nil { // t.Fatalf("failed to open test db: %v", err) // } // // Миграция таблицы User для связи с ACL // if err := db.AutoMigrate(&user.User{}); err != nil { // t.Fatalf("failed to migrate User: %v", err) // } // return db // } // func TestACLService_CRUD(t *testing.T) { // db := openTestDB(t) // // Создаём сервис ACL // svc, err := acl.NewService(db) // if err != nil { // t.Fatalf("failed to create ACL service: %v", err) // } // if err := svc.Init(); err != nil { // t.Fatalf("failed to init ACL service: %v", err) // } // // Создаём роли // if err := svc.CreateRole("admin"); err != nil { // t.Fatalf("CreateRole failed: %v", err) // } // if err := svc.CreateRole("guest"); err != nil { // t.Fatalf("CreateRole failed: %v", err) // } // roles, err := svc.GetRoles() // if err != nil { // t.Fatalf("GetRoles failed: %v", err) // } // if len(roles) != 2 { // t.Fatalf("expected 2 roles, got %d", len(roles)) // } // // Создаём ресурсы // if err := svc.CreateResource("*"); err != nil { // t.Fatalf("CreateResource failed: %v", err) // } // if err := svc.CreateResource("html.view.*"); err != nil { // t.Fatalf("CreateResource failed: %v", err) // } // resources, err := svc.GetPermissions() // if err != nil { // t.Fatalf("GetPermissions failed: %v", err) // } // if len(resources) != 2 { // t.Fatalf("expected 2 resources, got %d", len(resources)) // } // // 1. Создаём сервис user // store, err := user.NewGormUserStore(db) // if err != nil { // t.Fatalf("failed to create user store: %v", err) // } // userSvc, err := user.NewService(store) // if err != nil { // t.Fatalf("failed to create user service: %v", err) // } // // 2. Инициализируем // if err := userSvc.Init(); err != nil { // t.Fatalf("failed to init user service: %v", err) // } // user := &user.User{ // Username: "testuser", // Email: "testuser@example.com", // Password: "secret", // } // u := user // // 3. Создаём пользователя через сервис // err = userSvc.Create(user) // if err != nil { // t.Fatalf("failed to create user: %v", err) // } // // Привязываем роль к пользователю // adminRoleID := roles[0].ID // if err := svc.AssignRoleToUser(adminRoleID, uint(u.ID)); err != nil { // t.Fatalf("AssignRoleToUser failed: %v", err) // } // userRoles, err := svc.GetUserRoles(uint(u.ID)) // if err != nil { // t.Fatalf("GetUserRoles failed: %v", err) // } // if len(userRoles) != 1 || userRoles[0].ID != adminRoleID { // t.Fatalf("expected user to have admin role") // } // // Привязываем ресурсы к роли // for _, res := range resources { // if err := svc.AssignResourceToRole(adminRoleID, res.ID); err != nil { // t.Fatalf("AssignResourceToRole failed: %v", err) // } // } // roleResources, err := svc.GetRoleResources(adminRoleID) // if err != nil { // t.Fatalf("GetRoleResources failed: %v", err) // } // if len(roleResources) != 2 { // t.Fatalf("expected role to have 2 resources") // } // // Удаляем ресурс из роли // if err := svc.RemoveResourceFromRole(adminRoleID, resources[0].ID); err != nil { // t.Fatalf("RemoveResourceFromRole failed: %v", err) // } // roleResources, _ = svc.GetRoleResources(adminRoleID) // if len(roleResources) != 1 { // t.Fatalf("expected 1 resource after removal") // } // // Удаляем роль у пользователя // if err := svc.RemoveRoleFromUser(adminRoleID, uint(u.ID)); err != nil { // t.Fatalf("RemoveRoleFromUser failed: %v", err) // } // userRoles, _ = svc.GetUserRoles(uint(u.ID)) // if len(userRoles) != 0 { // t.Fatalf("expected user to have 0 roles after removal") // } // }