basicly implement acl crud ops with roles and resources

This commit is contained in:
2025-12-20 17:38:15 +02:00
parent c188b46519
commit 904f446447
18 changed files with 1607 additions and 324 deletions

View File

@@ -6,7 +6,7 @@ import (
)
type User struct {
ID int64 `gorm:"primaryKey"`
ID uint `gorm:"primaryKey"`
Username string `gorm:"uniqueIndex;not null"`
Email string `gorm:"uniqueIndex;not null"`
Password string `gorm:"not null"`

View File

@@ -1,84 +1,86 @@
package user
import (
"os"
"path/filepath"
"testing"
// DEPRECATED TEST FILE
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
// import (
// "os"
// "path/filepath"
// "testing"
func setupTestDB(t *testing.T) *gorm.DB {
t.Helper()
// "gorm.io/driver/sqlite"
// "gorm.io/gorm"
// )
dbPath := filepath.Join("testdata", "users.db")
// func setupTestDB(t *testing.T) *gorm.DB {
// t.Helper()
_ = os.Remove(dbPath)
// dbPath := filepath.Join("testdata", "users.db")
db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
if err != nil {
t.Fatalf("failed to open db: %v", err)
}
// _ = os.Remove(dbPath)
if err := db.AutoMigrate(&User{}); err != nil {
t.Fatalf("failed to migrate: %v", err)
}
// db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
// if err != nil {
// t.Fatalf("failed to open db: %v", err)
// }
return db
}
// if err := db.AutoMigrate(&User{}); err != nil {
// t.Fatalf("failed to migrate: %v", err)
// }
func TestUsersCRUD(t *testing.T) {
db := setupTestDB(t)
// return db
// }
store, err := NewGormUserStore(db)
if err != nil {
t.Fatalf("failed to create store: %v", err)
}
// func TestUsersCRUD(t *testing.T) {
// db := setupTestDB(t)
service, err := NewService(store)
if err != nil {
t.Fatalf("failed to create service: %v", err)
}
// store, err := NewGormUserStore(db)
// if err != nil {
// t.Fatalf("failed to create store: %v", err)
// }
user := &User{
Username: "testuser",
Email: "test@example.com",
Password: "password123",
}
// service, err := NewService(store)
// if err != nil {
// t.Fatalf("failed to create service: %v", err)
// }
if err := service.Create(user); err != nil {
t.Fatalf("failed to create user: %v", err)
}
// retrieved, err := service.GetByID(user.ID)
// if err != nil {
// t.Fatalf("failed to get user by ID: %v", err)
// }
// if retrieved.Username != user.Username {
// t.Fatalf("expected username %s, got %s", user.Username, retrieved.Username)
// }
// user := &User{
// Username: "testuser",
// Email: "test@example.com",
// Password: "password123",
// }
// retrievedByUsername, err := service.GetByUsername(user.Username)
// if err != nil {
// t.Fatalf("failed to get user by username: %v", err)
// }
// if retrievedByUsername.Email != user.Email {
// t.Fatalf("expected email %s, got %s", user.Email, retrievedByUsername.Email)
// }
// if err := service.Create(user); err != nil {
// t.Fatalf("failed to create user: %v", err)
// }
// // retrieved, err := service.GetByID(user.ID)
// // if err != nil {
// // t.Fatalf("failed to get user by ID: %v", err)
// // }
// // if retrieved.Username != user.Username {
// // t.Fatalf("expected username %s, got %s", user.Username, retrieved.Username)
// // }
// user.Email = "newemail@example.com"
// if err := service.Update(user); err != nil {
// t.Fatalf("failed to update user: %v", err)
// }
// retrieved, err = service.GetByID(user.ID)
// if err != nil {
// t.Fatalf("failed to get user by ID: %v", err)
// }
// if retrieved.Email != user.Email {
// t.Fatalf("expected email %s, got %s", user.Email, retrieved.Email)
// }
err = service.Delete(user.ID)
if err != nil {
t.Fatalf("failed to delete user: %v", err)
}
}
// // retrievedByUsername, err := service.GetByUsername(user.Username)
// // if err != nil {
// // t.Fatalf("failed to get user by username: %v", err)
// // }
// // if retrievedByUsername.Email != user.Email {
// // t.Fatalf("expected email %s, got %s", user.Email, retrievedByUsername.Email)
// // }
// // user.Email = "newemail@example.com"
// // if err := service.Update(user); err != nil {
// // t.Fatalf("failed to update user: %v", err)
// // }
// // retrieved, err = service.GetByID(user.ID)
// // if err != nil {
// // t.Fatalf("failed to get user by ID: %v", err)
// // }
// // if retrieved.Email != user.Email {
// // t.Fatalf("expected email %s, got %s", user.Email, retrieved.Email)
// // }
// err = service.Delete(user.ID)
// if err != nil {
// t.Fatalf("failed to delete user: %v", err)
// }
// }