Version 0.2.0

Changes:
- forbid to overwrite secrets of other users
- add some logs of success
- add validation on code (length 50)
- use same limiter for POST requests
This commit is contained in:
2026-08-17 21:13:15 +00:03
parent 6ee80f1c8f
commit 094112af97
17 changed files with 185 additions and 38 deletions

View File

@@ -0,0 +1,53 @@
package db_test
import (
"context"
"database/sql"
"errors"
"path/filepath"
"testing"
"github.com/kanootoko/codevault/internal/db"
)
func openTestDB(t *testing.T) *sql.DB {
t.Helper()
sqlDB, err := db.Open(filepath.Join(t.TempDir(), "test.db"))
if err != nil {
t.Fatalf("could not open test db: %v", err)
}
t.Cleanup(func() { _ = sqlDB.Close() })
return sqlDB
}
func TestSecretsRepository_SetOwnership(t *testing.T) {
ctx := context.Background()
secrets := db.NewSecretsRepository(openTestDB(t))
if err := secrets.Set(ctx, "code1", "value1", "alice"); err != nil {
t.Fatalf("alice's initial set failed: %v", err)
}
if err := secrets.Set(ctx, "code1", "value2", "alice"); err != nil {
t.Fatalf("alice's overwrite failed: %v", err)
}
value, err := secrets.Get(ctx, "code1")
if err != nil {
t.Fatalf("get failed: %v", err)
}
if value != "value2" {
t.Fatalf("expected value2, got %q", value)
}
err = secrets.Set(ctx, "code1", "value3", "bob")
if !errors.Is(err, db.ErrForbidden) {
t.Fatalf("expected ErrForbidden for bob, got %v", err)
}
value, err = secrets.Get(ctx, "code1")
if err != nil {
t.Fatalf("get failed: %v", err)
}
if value != "value2" {
t.Fatalf("expected value to remain value2 after forbidden write, got %q", value)
}
}