Files
portainer/api/stacks/stackutils/stack_status_test.go

93 lines
2.7 KiB
Go

package stackutils
import (
"errors"
"testing"
portainer "github.com/portainer/portainer/api"
"github.com/stretchr/testify/require"
)
func TestPrepareStackStatusForDeployment(t *testing.T) {
t.Parallel()
stack := &portainer.Stack{
Status: portainer.StackStatusActive,
}
PrepareStackStatusForDeployment(stack)
require.Equal(t, portainer.StackStatusActive, stack.DeploymentStartStatus)
require.Equal(t, portainer.StackStatusDeploying, stack.Status)
require.Len(t, stack.DeploymentStatus, 1)
require.Equal(t, portainer.StackStatusDeploying, stack.DeploymentStatus[0].Status)
require.Positive(t, stack.DeploymentStatus[0].Time)
}
func TestUpdateStackStatusFromDeploymentResult(t *testing.T) {
t.Parallel()
t.Run("on error", func(t *testing.T) {
t.Parallel()
stack := &portainer.Stack{}
deployErr := errors.New("deployment failed")
UpdateStackStatusFromDeploymentResult(stack, deployErr)
require.Equal(t, portainer.StackStatusError, stack.Status)
require.Len(t, stack.DeploymentStatus, 1)
require.Equal(t, portainer.StackStatusError, stack.DeploymentStatus[0].Status)
require.Equal(t, deployErr.Error(), stack.DeploymentStatus[0].Message)
require.Positive(t, stack.DeploymentStatus[0].Time)
})
t.Run("on success", func(t *testing.T) {
t.Parallel()
stack := &portainer.Stack{}
UpdateStackStatusFromDeploymentResult(stack, nil)
require.Equal(t, portainer.StackStatusActive, stack.Status)
require.Len(t, stack.DeploymentStatus, 1)
require.Equal(t, portainer.StackStatusActive, stack.DeploymentStatus[0].Status)
require.Empty(t, stack.DeploymentStatus[0].Message)
require.Positive(t, stack.DeploymentStatus[0].Time)
})
}
func TestUpdateStackStatusFromUndeploymentResult(t *testing.T) {
t.Parallel()
t.Run("on error", func(t *testing.T) {
t.Parallel()
stack := &portainer.Stack{}
undeployErr := errors.New("undeployment failed")
UpdateStackStatusFromUndeploymentResult(stack, undeployErr)
require.Equal(t, portainer.StackStatusError, stack.Status)
require.Len(t, stack.DeploymentStatus, 1)
require.Equal(t, portainer.StackStatusError, stack.DeploymentStatus[0].Status)
require.Equal(t, undeployErr.Error(), stack.DeploymentStatus[0].Message)
require.Positive(t, stack.DeploymentStatus[0].Time)
})
t.Run("on success", func(t *testing.T) {
t.Parallel()
stack := &portainer.Stack{}
UpdateStackStatusFromUndeploymentResult(stack, nil)
require.Equal(t, portainer.StackStatusInactive, stack.Status)
require.Len(t, stack.DeploymentStatus, 1)
require.Equal(t, portainer.StackStatusInactive, stack.DeploymentStatus[0].Status)
require.Empty(t, stack.DeploymentStatus[0].Message)
require.Positive(t, stack.DeploymentStatus[0].Time)
})
}