test: add deployment rollback tests (closes #71) #78
74
internal/service/deploy/deploy_rollback_test.go
Normal file
74
internal/service/deploy/deploy_rollback_test.go
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
package deploy_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"database/sql"
|
||||||
|
"log/slog"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
|
"git.eeqj.de/sneak/upaas/internal/models"
|
||||||
|
"git.eeqj.de/sneak/upaas/internal/service/deploy"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestRollback_NoPreviousImage(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
svc := deploy.NewTestService(slog.Default())
|
||||||
|
app := &models.App{
|
||||||
|
ID: "app-rollback-1",
|
||||||
|
PreviousImageID: sql.NullString{},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := svc.Rollback(context.Background(), app)
|
||||||
|
assert.ErrorIs(t, err, deploy.ErrNoPreviousImage)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRollback_EmptyPreviousImage(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
svc := deploy.NewTestService(slog.Default())
|
||||||
|
app := &models.App{
|
||||||
|
ID: "app-rollback-2",
|
||||||
|
PreviousImageID: sql.NullString{String: "", Valid: true},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := svc.Rollback(context.Background(), app)
|
||||||
|
assert.ErrorIs(t, err, deploy.ErrNoPreviousImage)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRollback_DeploymentLocked(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
svc := deploy.NewTestService(slog.Default())
|
||||||
|
|
||||||
|
// Simulate a deploy holding the lock
|
||||||
|
assert.True(t, svc.TryLockApp("app-rollback-3"))
|
||||||
|
defer svc.UnlockApp("app-rollback-3")
|
||||||
|
|
||||||
|
app := &models.App{
|
||||||
|
ID: "app-rollback-3",
|
||||||
|
PreviousImageID: sql.NullString{String: "sha256:abc123", Valid: true},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := svc.Rollback(context.Background(), app)
|
||||||
|
assert.ErrorIs(t, err, deploy.ErrDeploymentInProgress)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRollback_LockedApp(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
svc := deploy.NewTestService(slog.Default())
|
||||||
|
|
||||||
|
assert.True(t, svc.TryLockApp("app-rollback-4"))
|
||||||
|
defer svc.UnlockApp("app-rollback-4")
|
||||||
|
|
||||||
|
app := &models.App{
|
||||||
|
ID: "app-rollback-4",
|
||||||
|
PreviousImageID: sql.NullString{String: "sha256:abc123", Valid: true},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := svc.Rollback(context.Background(), app)
|
||||||
|
assert.ErrorIs(t, err, deploy.ErrDeploymentInProgress)
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user