mirror of
https://github.com/onepanelio/onepanel.git
synced 2025-09-27 01:56:03 +08:00
update: updated tests to have method calls for particular cases. Added more tests.
This commit is contained in:
@@ -2,6 +2,7 @@ package v1
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"github.com/onepanelio/core/pkg/util"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"google.golang.org/grpc/codes"
|
||||
@@ -85,19 +86,19 @@ templates:
|
||||
optional: true
|
||||
`
|
||||
|
||||
// Test_GetWorkflowTemplateDB_Empty attempts to get a WorkflowTemplate when there isn't one.
|
||||
// testClientGetWorkflowTemplateDBEmpty attempts to get a WorkflowTemplate when there isn't one.
|
||||
// this should fail.
|
||||
func Test_GetWorkflowTemplateDB_Empty(t *testing.T) {
|
||||
func testClientGetWorkflowTemplateDBEmpty(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
_, err := c.GetWorkflowTemplateDB("test", "test")
|
||||
_, err := c.getWorkflowTemplateDB("test", "test")
|
||||
assert.Equal(t, sql.ErrNoRows, err)
|
||||
}
|
||||
|
||||
// Test_GetWorkflowTemplateDB_Exists gets a WorkflowTemplate when there is one
|
||||
// testClientGetWorkflowTemplateDBExists gets a WorkflowTemplate when there is one
|
||||
// this should succeed
|
||||
func Test_GetWorkflowTemplateDB_Exists(t *testing.T) {
|
||||
func testClientGetWorkflowTemplateDBExists(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
@@ -108,34 +109,18 @@ func Test_GetWorkflowTemplateDB_Exists(t *testing.T) {
|
||||
_, err := c.CreateWorkflowTemplate("onepanel", workflowTemplate)
|
||||
assert.Nil(t, err)
|
||||
|
||||
_, err = c.GetWorkflowTemplateDB("onepanel", "test")
|
||||
_, err = c.getWorkflowTemplateDB("onepanel", "test")
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
|
||||
// Test_GetWorkflowTemplateDB_InsertSameName attempts to insert a WorkflowTemplate with the same name
|
||||
// this should fail
|
||||
func Test_GetWorkflowTemplateDB_InsertSameName(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
workflowTemplate := &WorkflowTemplate{
|
||||
Name: "test",
|
||||
Manifest: defaultWorkflowTemplate,
|
||||
}
|
||||
_, err := c.CreateWorkflowTemplate("onepanel", workflowTemplate)
|
||||
assert.Nil(t, err)
|
||||
|
||||
_, err = c.CreateWorkflowTemplate("onepanel", workflowTemplate)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
assert.IsType(t, &util.UserError{}, err)
|
||||
userErr := err.(*util.UserError)
|
||||
|
||||
assert.Equal(t, userErr.Code, codes.AlreadyExists)
|
||||
// TestClient_getWorkflowTemplateDB tests getting a workflow template from the database
|
||||
func TestClient_getWorkflowTemplateDB(t *testing.T) {
|
||||
testClientGetWorkflowTemplateDBEmpty(t)
|
||||
testClientGetWorkflowTemplateDBExists(t)
|
||||
}
|
||||
|
||||
// TestClient_CreateWorkflowTemplate_Success makes sure a correct workflow template is created correctly
|
||||
func TestClient_CreateWorkflowTemplate_Success(t *testing.T) {
|
||||
// testClientCreateWorkflowTemplateSuccess makes sure a correct workflow template is created correctly
|
||||
func testClientCreateWorkflowTemplateSuccess(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
@@ -149,11 +134,11 @@ func TestClient_CreateWorkflowTemplate_Success(t *testing.T) {
|
||||
assert.NotNil(t, wft.ArgoWorkflowTemplate)
|
||||
}
|
||||
|
||||
// TestClient_CreateWorkflowTemplate_Timestamp makes sure we can create mulitple
|
||||
// testClientCreateWorkflowTemplateTimestamp makes sure we can create mulitple
|
||||
// workflow templtate versions one after another with practically no time delay.
|
||||
// This handles an edge case where versions were set using second time precision and could fail in migrations
|
||||
// as they were created one after another.
|
||||
func TestClient_CreateWorkflowTemplate_Timestamp(t *testing.T) {
|
||||
func testClientCreateWorkflowTemplateTimestamp(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
@@ -174,3 +159,187 @@ func TestClient_CreateWorkflowTemplate_Timestamp(t *testing.T) {
|
||||
assert.Nil(t, err)
|
||||
assert.NotNil(t, wft.ArgoWorkflowTemplate)
|
||||
}
|
||||
|
||||
// testClientCreateWorkflowTemplateInsertSameName attempts to insert a WorkflowTemplate with the same name
|
||||
// this should fail
|
||||
func testClientCreateWorkflowTemplateInsertSameName(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
workflowTemplate := &WorkflowTemplate{
|
||||
Name: "test",
|
||||
Manifest: defaultWorkflowTemplate,
|
||||
}
|
||||
_, err := c.CreateWorkflowTemplate("onepanel", workflowTemplate)
|
||||
assert.Nil(t, err)
|
||||
|
||||
_, err = c.CreateWorkflowTemplate("onepanel", workflowTemplate)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
assert.IsType(t, &util.UserError{}, err)
|
||||
userErr := err.(*util.UserError)
|
||||
|
||||
assert.Equal(t, userErr.Code, codes.AlreadyExists)
|
||||
}
|
||||
|
||||
// TestClient_CreateWorkflowTemplate tests creating a workflow template
|
||||
func TestClient_CreateWorkflowTemplate(t *testing.T) {
|
||||
testClientCreateWorkflowTemplateInsertSameName(t)
|
||||
testClientCreateWorkflowTemplateSuccess(t)
|
||||
testClientCreateWorkflowTemplateTimestamp(t)
|
||||
}
|
||||
|
||||
// testClientPrivateGetWorkflowTemplateSuccess gets a workflow template with no error conditions encountered
|
||||
func testClientPrivateGetWorkflowTemplateSuccess(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
namespace := "onepanel"
|
||||
workflowTemplate := &WorkflowTemplate{
|
||||
Name: "test",
|
||||
Manifest: defaultWorkflowTemplate,
|
||||
}
|
||||
created, _ := c.CreateWorkflowTemplate(namespace, workflowTemplate)
|
||||
|
||||
wt, err := c.getWorkflowTemplate(namespace, created.UID, 0)
|
||||
assert.NotNil(t, wt)
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
|
||||
// testClientGetWorkflowTemplateSuccessVersion gets a workflow template for a specific version with no error conditions encountered
|
||||
func testClientPrivateGetWorkflowTemplateSuccessVersion(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
namespace := "onepanel"
|
||||
workflowTemplate := &WorkflowTemplate{
|
||||
Name: "test",
|
||||
Manifest: defaultWorkflowTemplate,
|
||||
}
|
||||
created, _ := c.CreateWorkflowTemplate(namespace, workflowTemplate)
|
||||
c.CreateWorkflowTemplateVersion(namespace, workflowTemplate)
|
||||
|
||||
wt, err := c.getWorkflowTemplate(namespace, created.UID, created.Version)
|
||||
assert.NotNil(t, wt)
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, created.Version, wt.Version)
|
||||
assert.Equal(t, created.Manifest, wt.Manifest)
|
||||
}
|
||||
|
||||
// testClientGetWorkflowTemplateNotFound attempts to get a not-found workflow template
|
||||
func testClientPrivateGetWorkflowTemplateNotFound(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
wt, err := c.getWorkflowTemplate("onepanel", "uid-not-found", 0)
|
||||
assert.Nil(t, wt)
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
|
||||
// Test_getWorkflowTemplate tests getting a workflow template
|
||||
func Test_getWorkflowTemplate(t *testing.T) {
|
||||
testClientPrivateGetWorkflowTemplateSuccess(t)
|
||||
testClientPrivateGetWorkflowTemplateNotFound(t)
|
||||
testClientPrivateGetWorkflowTemplateSuccessVersion(t)
|
||||
}
|
||||
|
||||
func TestClient_getWorkflowTemplateVersionDB(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
namespace := "onepanel"
|
||||
name := "test"
|
||||
workflowTemplate := &WorkflowTemplate{
|
||||
Name: name,
|
||||
Manifest: defaultWorkflowTemplate,
|
||||
}
|
||||
|
||||
original, _ := c.CreateWorkflowTemplate(namespace, workflowTemplate)
|
||||
|
||||
versionAsString := fmt.Sprintf("%v", original.Version)
|
||||
originalRes, err := c.getWorkflowTemplateVersionDB(namespace, name, versionAsString)
|
||||
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, original.Version, originalRes.Version)
|
||||
}
|
||||
|
||||
// testClientCreateWorkflowTemplateVersionNew makes sure you can successfully create a new workflow template version
|
||||
func testClientCreateWorkflowTemplateVersionNew(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
namespace := "onepanel"
|
||||
workflowTemplate := &WorkflowTemplate{
|
||||
Name: "test",
|
||||
Manifest: defaultWorkflowTemplate,
|
||||
}
|
||||
|
||||
c.CreateWorkflowTemplate(namespace, workflowTemplate)
|
||||
_, err := c.CreateWorkflowTemplateVersion(namespace, workflowTemplate)
|
||||
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
|
||||
// testClientCreateWorkflowTemplateVersionMarkOldNotLatest makes sure older versions are no longer marked as latest
|
||||
func testClientCreateWorkflowTemplateVersionMarkOldNotLatest(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
namespace := "onepanel"
|
||||
name := "test"
|
||||
workflowTemplate := &WorkflowTemplate{
|
||||
Name: name,
|
||||
Manifest: defaultWorkflowTemplate,
|
||||
}
|
||||
|
||||
original, _ := c.CreateWorkflowTemplate(namespace, workflowTemplate)
|
||||
originalVersionAsString := fmt.Sprintf("%v", original.Version)
|
||||
c.CreateWorkflowTemplateVersion(namespace, workflowTemplate)
|
||||
|
||||
updated, _ := c.getWorkflowTemplateVersionDB(namespace, name, originalVersionAsString)
|
||||
|
||||
assert.False(t, updated.IsLatest)
|
||||
}
|
||||
|
||||
// Test_getWorkflowTemplate_SuccessVersion tests cases for creating a workflow template version
|
||||
func TestClient_CreateWorkflowTemplateVersion(t *testing.T) {
|
||||
testClientCreateWorkflowTemplateVersionNew(t)
|
||||
testClientCreateWorkflowTemplateVersionMarkOldNotLatest(t)
|
||||
}
|
||||
|
||||
// testGetWorkflowTemplateSuccess gets a workflow template with no error conditions encountered
|
||||
func testClientGetWorkflowTemplateSuccess(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
namespace := "onepanel"
|
||||
workflowTemplate := &WorkflowTemplate{
|
||||
Name: "test",
|
||||
Manifest: defaultWorkflowTemplate,
|
||||
}
|
||||
created, _ := c.CreateWorkflowTemplate(namespace, workflowTemplate)
|
||||
|
||||
wt, err := c.GetWorkflowTemplate(namespace, created.UID, 0)
|
||||
assert.NotNil(t, wt)
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
|
||||
// testGetWorkflowTemplateNotFound attempts to get a not-found workflow template
|
||||
func testClientGetWorkflowTemplateNotFound(t *testing.T) {
|
||||
c := DefaultTestClient()
|
||||
clearDatabase(t)
|
||||
|
||||
wt, err := c.GetWorkflowTemplate("onepanel", "uid-not-found", 0)
|
||||
assert.Nil(t, wt)
|
||||
|
||||
userErr, ok := err.(*util.UserError)
|
||||
assert.True(t, ok)
|
||||
|
||||
assert.Equal(t, codes.NotFound, userErr.Code)
|
||||
}
|
||||
|
||||
func TestClient_GetWorkflowTemplate(t *testing.T) {
|
||||
testClientGetWorkflowTemplateSuccess(t)
|
||||
testClientGetWorkflowTemplateNotFound(t)
|
||||
}
|
||||
|
Reference in New Issue
Block a user