update: updated tests to have method calls for particular cases. Added more tests.

This commit is contained in:
Andrey Melnikov
2020-07-01 16:07:20 -07:00
parent c5d1ec9b1f
commit ed621633df
11 changed files with 491 additions and 84 deletions

View File

@@ -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)
}