Skip to content

Commit

Permalink
feat(refacto): added examples
Browse files Browse the repository at this point in the history
  • Loading branch information
StanGirard committed Apr 14, 2023
1 parent 4b29337 commit 899deb3
Show file tree
Hide file tree
Showing 2 changed files with 124 additions and 0 deletions.
44 changes: 44 additions & 0 deletions plugins/commons/yatas.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,47 @@ func CheckMacroTest[A, B, C, D any](wg *sync.WaitGroup, config *Config, test fun

return test
}

type CheckFunc func(interface{}) Result

type Resource interface {
GetID() string
}

type CheckDefinition struct {
Title string
Description string
Categories []string
ConditionFn func(Resource) bool
SuccessMessage string
FailureMessage string
}

func CheckResources(checkConfig CheckConfig, resources []Resource, checkDefinitions []CheckDefinition) {
for _, checkDefinition := range checkDefinitions {
if !checkConfig.ConfigYatas.CheckExclude(checkDefinition.Title) && checkConfig.ConfigYatas.CheckInclude(checkDefinition.Title) {
check := createCheck(checkDefinition)
for _, resource := range resources {
result := checkResource(resource, checkDefinition.ConditionFn, checkDefinition.SuccessMessage, checkDefinition.FailureMessage)
check.AddResult(result)
}
checkConfig.Queue <- check
}
}
}

func createCheck(checkDefinition CheckDefinition) Check {
var check Check
check.InitCheck(checkDefinition.Description, checkDefinition.Description, checkDefinition.Title, checkDefinition.Categories)
return check
}

func checkResource(resource Resource, conditionFn func(Resource) bool, successMessage, failureMessage string) Result {
if conditionFn(resource) {
message := successMessage + " - Resource " + resource.GetID()
return Result{Status: "OK", Message: message, ResourceID: resource.GetID()}
} else {
message := failureMessage + " - Resource " + resource.GetID()
return Result{Status: "FAIL", Message: message, ResourceID: resource.GetID()}
}
}
80 changes: 80 additions & 0 deletions plugins/commons/yatas_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -224,3 +224,83 @@ func TestCheckMacroTest(t *testing.T) {
wrappedTest(1, 2, 3, 4)
wg.Wait()
}

// MockResource to be used for testing
type MockResource struct {
ID string
}

func (m *MockResource) GetID() string {
return m.ID
}

func TestCreateCheck(t *testing.T) {
checkDefinition := CheckDefinition{
Title: "AWS_TEST_001",
Description: "Test check",
Categories: []string{"Test"},
ConditionFn: nil,
SuccessMessage: "Test check succeeded",
FailureMessage: "Test check failed",
}

check := createCheck(checkDefinition)

if check.Description != checkDefinition.Description {
t.Errorf("Expected Description: %v, got: %v", checkDefinition.Description, check.Description)
}

if check.Id != checkDefinition.Title {
t.Errorf("Expected Title: %v, got: %v", checkDefinition.Title, check.Id)
}

for i, tag := range check.Categories {
if tag != checkDefinition.Categories[i] {
t.Errorf("Expected Tag: %v, got: %v", checkDefinition.Categories[i], tag)
}
}
}

func TestCheckResource(t *testing.T) {
resource := &MockResource{ID: "test-resource-id"}
conditionFn := func(r Resource) bool {
return r.GetID() == "test-resource-id"
}
successMessage := "Resource check succeeded"
failureMessage := "Resource check failed"

result := checkResource(resource, conditionFn, successMessage, failureMessage)

if result.Status != "OK" {
t.Errorf("Expected Status: OK, got: %v", result.Status)
}

expectedMessage := successMessage + " - Resource " + resource.GetID()
if result.Message != expectedMessage {
t.Errorf("Expected Message: %v, got: %v", expectedMessage, result.Message)
}

if result.ResourceID != resource.GetID() {
t.Errorf("Expected ResourceID: %v, got: %v", resource.GetID(), result.ResourceID)
}

// Test failing condition
conditionFn = func(r Resource) bool {
return r.GetID() != "test-resource-id"
}

result = checkResource(resource, conditionFn, successMessage, failureMessage)

if result.Status != "FAIL" {
t.Errorf("Expected Status: FAIL, got: %v", result.Status)
}

expectedMessage = failureMessage + " - Resource " + resource.GetID()
if result.Message != expectedMessage {
t.Errorf("Expected Message: %v, got: %v", expectedMessage, result.Message)
}

if result.ResourceID != resource.GetID() {
t.Errorf("Expected ResourceID: %v, got: %v", resource.GetID(), result.ResourceID)
}
}

0 comments on commit 899deb3

Please sign in to comment.