Skip to content

Commit

Permalink
test: Redo tests for the CheckHealth function
Browse files Browse the repository at this point in the history
  • Loading branch information
Dobefu committed Jan 18, 2025
1 parent f4eb03d commit 7b5fd32
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 15 deletions.
24 changes: 20 additions & 4 deletions cmd/check_health/main.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
package check_health

import (
"errors"
"fmt"

"github.com/Dobefu/csb/cmd/cs_sdk"
"github.com/Dobefu/csb/cmd/database"
)

var databaseConnect = database.Connect
var csSdkRequest = cs_sdk.Request

func Main() error {
var err error

Expand All @@ -26,15 +30,21 @@ func Main() error {
}

func checkDatabase() error {
return database.Connect()
err := databaseConnect()

if err != nil {
return err
}

return nil
}

func checkCsSdk() error {
var resp map[string]interface{}
var err error

// Create a temporary label in Contentstack, to test the management token.
resp, err = cs_sdk.Request(
resp, err = csSdkRequest(
"labels",
"POST",
map[string]interface{}{
Expand All @@ -49,9 +59,15 @@ func checkCsSdk() error {
return err
}

label, hasLabel := resp["label"]

if !hasLabel {
return errors.New("response has no label")
}

// Delete the temporary label in Contentstack.
_, err = cs_sdk.Request(
fmt.Sprintf("labels/%s", resp["label"].(map[string]interface{})["uid"]),
_, err = csSdkRequest(
fmt.Sprintf("labels/%s", label.(map[string]interface{})["uid"]),
"DELETE",
nil,
true,
Expand Down
73 changes: 62 additions & 11 deletions cmd/check_health/main_test.go
Original file line number Diff line number Diff line change
@@ -1,32 +1,83 @@
package check_health

import (
"os"
"errors"
"testing"

"github.com/Dobefu/csb/cmd/cs_sdk"
"github.com/Dobefu/csb/cmd/database"
"github.com/Dobefu/csb/cmd/init_env"
"github.com/stretchr/testify/assert"
)

var err error

func TestMain(t *testing.T) {
var err error
databaseConnect = func() error { return nil }
csSdkRequest = func(path string, method string, body map[string]interface{}, useManagementToken bool) (map[string]interface{}, error) {
return map[string]interface{}{
"label": map[string]interface{}{
"uid": "dummy label"},
}, nil
}

err = Main()
assert.NotEqual(t, nil, err)
defer func() { databaseConnect = database.Connect }()
defer func() { csSdkRequest = cs_sdk.Request }()

init_env.Main("../../.env.test")
err = database.Connect()
err = Main()
assert.Equal(t, nil, err)
}

func TestMainErrNoDatabase(t *testing.T) {
databaseConnect = func() error { return errors.New("no database") }
csSdkRequest = func(path string, method string, body map[string]interface{}, useManagementToken bool) (map[string]interface{}, error) {
return map[string]interface{}{}, nil
}

defer func() { databaseConnect = database.Connect }()
defer func() { csSdkRequest = cs_sdk.Request }()

err = Main()
assert.Equal(t, nil, err)
assert.NotEqual(t, nil, err)
}

func TestMainErrNoLabel(t *testing.T) {
databaseConnect = func() error { return nil }
csSdkRequest = func(path string, method string, body map[string]interface{}, useManagementToken bool) (map[string]interface{}, error) {
return map[string]interface{}{}, nil
}

oldApiKey := os.Getenv("CS_API_KEY")
os.Setenv("CS_API_KEY", "bogus")
defer func() { databaseConnect = database.Connect }()
defer func() { csSdkRequest = cs_sdk.Request }()

err = Main()
assert.NotEqual(t, nil, err)
}

func TestCheckCsSdkErrLabelCreate(t *testing.T) {
csSdkRequest = func(path string, method string, body map[string]interface{}, useManagementToken bool) (map[string]interface{}, error) {
return nil, errors.New("cannot connect")
}

defer func() { csSdkRequest = cs_sdk.Request }()

err = checkCsSdk()
assert.NotEqual(t, nil, err)
}

func TestCheckCsSdkErrLabelDelete(t *testing.T) {
csSdkRequest = func(path string, method string, body map[string]interface{}, useManagementToken bool) (map[string]interface{}, error) {
if method == "DELETE" {
return nil, errors.New("cannot connect")
}

return map[string]interface{}{
"label": map[string]interface{}{
"uid": "dummy label"},
}, nil
}

os.Setenv("CS_API_KEY", oldApiKey)
defer func() { csSdkRequest = cs_sdk.Request }()

err = checkCsSdk()
assert.NotEqual(t, nil, err)
}

0 comments on commit 7b5fd32

Please sign in to comment.