This is an automated email from the ASF dual-hosted git repository.

rawlin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new 4ab262f2b1 Refactor Server Checks Tests (#6922)
4ab262f2b1 is described below

commit 4ab262f2b108b8ea01e0a4ff01ca14ffc17ab224
Author: Eric Holguin <[email protected]>
AuthorDate: Thu Jun 30 11:33:22 2022 -0600

    Refactor Server Checks Tests (#6922)
    
    * Refactor server checks tests
    
    * add key to field
---
 traffic_ops/testing/api/v3/serverchecks_test.go | 225 ++++++++--------
 traffic_ops/testing/api/v4/serverchecks_test.go | 324 ++++++++++--------------
 2 files changed, 261 insertions(+), 288 deletions(-)

diff --git a/traffic_ops/testing/api/v3/serverchecks_test.go 
b/traffic_ops/testing/api/v3/serverchecks_test.go
index 64327316cc..e017f76ff1 100644
--- a/traffic_ops/testing/api/v3/serverchecks_test.go
+++ b/traffic_ops/testing/api/v3/serverchecks_test.go
@@ -16,130 +16,153 @@ package v3
 */
 
 import (
+       "encoding/json"
+       "net/http"
        "testing"
-       "time"
 
        "github.com/apache/trafficcontrol/lib/go-tc"
-       "github.com/apache/trafficcontrol/lib/go-util"
+       "github.com/apache/trafficcontrol/traffic_ops/testing/api/assert"
+       "github.com/apache/trafficcontrol/traffic_ops/testing/api/utils"
+       "github.com/apache/trafficcontrol/traffic_ops/toclientlib"
 )
 
 func TestServerChecks(t *testing.T) {
        WithObjs(t, []TCObj{CDNs, Types, Parameters, Profiles, Statuses, 
Divisions, Regions, PhysLocations, CacheGroups, Servers, ServerCheckExtensions, 
ServerChecks}, func() {
-               CreateTestInvalidServerChecks(t)
-               UpdateTestServerChecks(t)
-               GetTestServerChecks(t)
-       })
-}
-
-func CreateTestServerChecks(t *testing.T) {
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
 
-       for _, servercheck := range testData.Serverchecks {
-               resp, _, err := TOSession.InsertServerCheckStatus(servercheck)
-               t.Logf("Response: %v host_name %v check %v", 
*servercheck.HostName, *servercheck.Name, resp)
-               if err != nil {
-                       t.Errorf("could not CREATE servercheck: %v", err)
+               extensionSession := utils.CreateV3Session(t, 
Config.TrafficOps.URL, Config.TrafficOps.Users.Extension, 
Config.TrafficOps.UserPassword, Config.Default.Session.TimeoutInSecs)
+
+               methodTests := utils.V3TestCase{
+                       "GET": {
+                               "OK when VALID request": {
+                                       ClientSession: extensionSession,
+                                       Expectations: 
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK), 
utils.ResponseLengthGreaterOrEqual(1),
+                                               
validateServerCheckFields("atlanta-edge-01", map[string]int{"ORT": 13})),
+                               },
+                       },
+                       "POST": {
+                               "OK when UPDATING EXISTING SERVER CHECK": {
+                                       ClientSession: extensionSession,
+                                       RequestBody: map[string]interface{}{
+                                               "servercheck_short_name": "ILO",
+                                               "host_name":              
"atlanta-edge-01",
+                                               "value":                  0,
+                                       },
+                                       Expectations: 
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK),
+                                               
validateServerCheckCreateFields("atlanta-edge-01", map[string]int{"ORT": 13, 
"ILO": 0})),
+                               },
+                               "BAD REQUEST when NO SERVER ID": {
+                                       ClientSession: extensionSession,
+                                       RequestBody: map[string]interface{}{
+                                               "id":                     nil,
+                                               "servercheck_short_name": "ILO",
+                                               "value":                  1,
+                                       },
+                                       Expectations: 
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+                               },
+                               "BAD REQUEST when INVALID SERVER ID": {
+                                       ClientSession: extensionSession,
+                                       RequestBody: map[string]interface{}{
+                                               "host_name":              
"atlanta-edge-01",
+                                               "id":                     -1,
+                                               "servercheck_short_name": "ILO",
+                                               "value":                  1,
+                                       },
+                                       Expectations: 
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+                               },
+                               "BAD REQUEST when INVALID SERVERCHECK SHORT 
NAME": {
+                                       ClientSession: extensionSession,
+                                       RequestBody: map[string]interface{}{
+                                               "host_name":              
"atlanta-edge-01",
+                                               "servercheck_short_name": 
"BOGUS",
+                                               "value":                  1,
+                                       },
+                                       Expectations: 
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+                               },
+                               "FORBIDDEN when NON EXTENSION USER": {
+                                       ClientSession: TOSession,
+                                       RequestBody: map[string]interface{}{
+                                               "host_name":              
"atlanta-edge-01",
+                                               "id":                     
GetServerID(t, "atlanta-edge-01")(),
+                                               "servercheck_short_name": 
"TEST",
+                                               "value":                  1,
+                                       },
+                                       Expectations: 
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusForbidden)),
+                               },
+                       },
                }
-       }
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
-}
-
-func CreateTestInvalidServerChecks(t *testing.T) {
-       toReqTimeout := time.Second * 
time.Duration(Config.Default.Session.TimeoutInSecs)
 
-       _, _, err := TOSession.InsertServerCheckStatus(testData.Serverchecks[0])
-       if err == nil {
-               t.Error("expected to receive error with non extension user")
-       }
-
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
-
-       invalidServerCheck := tc.ServercheckRequestNullable{
-               Name:     util.StrPtr("BOGUS"),
-               Value:    util.IntPtr(1),
-               ID:       util.IntPtr(-1),
-               HostName: util.StrPtr("bogus_hostname"),
-       }
-
-       // Attempt to create a ServerCheck with invalid server ID
-       _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck)
-       if err == nil {
-               t.Error("expected to receive error with invalid id")
-       }
-
-       invalidServerCheck.ID = nil
-       // Attempt to create a ServerCheck with invalid host name
-       _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck)
-       if err == nil {
-               t.Error("expected to receive error with invalid host name")
-       }
-
-       // get valid name to get past host check
-       invalidServerCheck.Name = testData.Serverchecks[0].Name
-
-       // Attempt to create a ServerCheck with invalid servercheck name
-       _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck)
-       if err == nil {
-               t.Error("expected to receive error with invalid servercheck 
name")
-       }
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
+               for method, testCases := range methodTests {
+                       t.Run(method, func(t *testing.T) {
+                               for name, testCase := range testCases {
+                                       serverCheck := 
tc.ServercheckRequestNullable{}
+
+                                       if testCase.RequestBody != nil {
+                                               dat, err := 
json.Marshal(testCase.RequestBody)
+                                               assert.NoError(t, err, "Error 
occurred when marshalling request body: %v", err)
+                                               err = json.Unmarshal(dat, 
&serverCheck)
+                                               assert.NoError(t, err, "Error 
occurred when unmarshalling request body: %v", err)
+                                       }
+
+                                       switch method {
+                                       case "GET":
+                                               t.Run(name, func(t *testing.T) {
+                                                       resp, alerts, reqInf, 
err := testCase.ClientSession.GetServersChecks()
+                                                       for _, check := range 
testCase.Expectations {
+                                                               check(t, 
reqInf, resp, alerts, err)
+                                                       }
+                                               })
+                                       case "POST":
+                                               t.Run(name, func(t *testing.T) {
+                                                       _, reqInf, err := 
testCase.ClientSession.InsertServerCheckStatus(serverCheck)
+                                                       for _, check := range 
testCase.Expectations {
+                                                               check(t, 
reqInf, nil, tc.Alerts{}, err)
+                                                       }
+                                               })
+                                       }
+                               }
+                       })
+               }
+       })
 }
 
-func UpdateTestServerChecks(t *testing.T) {
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
-       for _, servercheck := range testData.Serverchecks {
-               *servercheck.Value--
-               resp, _, err := TOSession.InsertServerCheckStatus(servercheck)
-               t.Logf("Response: %v host_name %v check %v", 
*servercheck.HostName, *servercheck.Name, resp)
-               if err != nil {
-                       t.Errorf("could not update servercheck: %v", err)
+func validateServerCheckFields(hostName string, expectedChecks map[string]int) 
utils.CkReqFunc {
+       return func(t *testing.T, _ toclientlib.ReqInf, resp interface{}, _ 
tc.Alerts, _ error) {
+               assert.RequireNotNil(t, resp, "Expected Server Check response 
to not be nil.")
+               serverCheckResp := resp.([]tc.GenericServerCheck)
+               found := false
+               for _, serverCheck := range serverCheckResp {
+                       if hostName == serverCheck.HostName {
+                               found = true
+                               for name, value := range expectedChecks {
+                                       assert.RequireNotNil(t, 
serverCheck.Checks[name], "Expected Checks[%s] value to not be nil.", name)
+                                       assert.Equal(t, value, 
*serverCheck.Checks[name], "Expected Checks ILO Value to be %d, but got %s", 
value, *serverCheck.Checks[name])
+                               }
+                       }
                }
+               assert.Equal(t, true, found, "Expected to find hostname %s in 
response.", hostName)
        }
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
 }
 
-func GetTestServerChecks(t *testing.T) {
-       hostname := testData.Serverchecks[0].HostName
-       // Get server checks
-       serverChecksResp, alerts, _, err := TOSession.GetServersChecks()
-       if err != nil {
-               t.Fatalf("could not GET serverchecks: %v (alerts: %+v)", err, 
alerts)
+func validateServerCheckCreateFields(hostName string, expectedChecks 
map[string]int) utils.CkReqFunc {
+       return func(t *testing.T, _ toclientlib.ReqInf, resp interface{}, _ 
tc.Alerts, _ error) {
+               serverChecks, alerts, _, err := TOSession.GetServersChecks()
+               assert.RequireNoError(t, err, "Error getting Server Checks: %v 
- alerts: %+v", err, alerts)
+               assert.RequireGreaterOrEqual(t, len(serverChecks), 1, "Expected 
one Server Check returned Got: %d", len(serverChecks))
+               validateServerCheckFields(hostName, expectedChecks)(t, 
toclientlib.ReqInf{}, serverChecks, tc.Alerts{}, nil)
        }
-       found := false
-       for _, sc := range serverChecksResp {
-               if sc.HostName == *hostname {
-                       found = true
-
-                       if sc.Checks == nil {
-                               t.Errorf("server %s had no checks - expected it 
to have at least two", *hostname)
-                               break
-                       }
+}
 
-                       if ort, ok := sc.Checks["ORT"]; !ok {
-                               t.Error("no 'ORT' servercheck exists - expected 
it to exist")
-                       } else if ort == nil {
-                               t.Error("'null' returned for ORT value 
servercheck - expected pointer to 12")
-                       } else if *ort != 12 {
-                               t.Errorf("%v returned for ORT value servercheck 
- expected 12", *ort)
-                       }
+func CreateTestServerChecks(t *testing.T) {
+       extensionSession := utils.CreateV3Session(t, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword, 
Config.Default.Session.TimeoutInSecs)
 
-                       if ilo, ok := sc.Checks["ILO"]; !ok {
-                               t.Error("no 'ILO' servercheck exists - expected 
it to exist")
-                       } else if ilo == nil {
-                               t.Error("'null' returned for ILO value 
servercheck - expected pointer to 0")
-                       } else if *ilo != 0 {
-                               t.Errorf("%v returned for ILO value servercheck 
- expected 0", *ilo)
-                       }
-                       break
-               }
-       }
-       if !found {
-               t.Errorf("expected to find servercheck for host %v", hostname)
+       for _, servercheck := range testData.Serverchecks {
+               resp, _, err := 
extensionSession.InsertServerCheckStatus(servercheck)
+               assert.RequireNoError(t, err, "Could not insert Servercheck: %v 
- alerts: %+v", err, resp.Alerts)
        }
 }
 
 // Need to define no-op function as TCObj interface expects a delete function
 // There is no delete path for serverchecks
-func DeleteTestServerChecks(t *testing.T) {
+func DeleteTestServerChecks(*testing.T) {
        return
 }
diff --git a/traffic_ops/testing/api/v4/serverchecks_test.go 
b/traffic_ops/testing/api/v4/serverchecks_test.go
index 12fde42f65..1c971953e0 100644
--- a/traffic_ops/testing/api/v4/serverchecks_test.go
+++ b/traffic_ops/testing/api/v4/serverchecks_test.go
@@ -16,217 +16,167 @@ package v4
 */
 
 import (
+       "encoding/json"
+       "net/http"
+       "net/url"
        "strconv"
        "testing"
-       "time"
 
        "github.com/apache/trafficcontrol/lib/go-tc"
-       "github.com/apache/trafficcontrol/lib/go-util"
+       "github.com/apache/trafficcontrol/traffic_ops/testing/api/assert"
+       "github.com/apache/trafficcontrol/traffic_ops/testing/api/utils"
+       "github.com/apache/trafficcontrol/traffic_ops/toclientlib"
        client "github.com/apache/trafficcontrol/traffic_ops/v4-client"
 )
 
 func TestServerChecks(t *testing.T) {
        WithObjs(t, []TCObj{CDNs, Types, Parameters, Profiles, Statuses, 
Divisions, Regions, PhysLocations, CacheGroups, Servers, ServerCheckExtensions, 
ServerChecks}, func() {
-               CreateTestInvalidServerChecks(t)
-               UpdateTestServerChecks(t)
-               GetTestServerChecks(t)
-               GetTestServerChecksWithName(t)
-               GetTestServerChecksWithID(t)
-       })
-}
-
-func CreateTestServerChecks(t *testing.T) {
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
 
-       for _, servercheck := range testData.Serverchecks {
-               resp, _, err := TOSession.InsertServerCheckStatus(servercheck, 
client.RequestOptions{})
-               if err != nil {
-                       t.Errorf("could not insert Servercheck: %v - alerts: 
%+v", err, resp.Alerts)
+               extensionSession := utils.CreateV4Session(t, 
Config.TrafficOps.URL, Config.TrafficOps.Users.Extension, 
Config.TrafficOps.UserPassword, Config.Default.Session.TimeoutInSecs)
+
+               methodTests := utils.V4TestCase{
+                       "GET": {
+                               "OK when VALID request": {
+                                       ClientSession: extensionSession,
+                                       Expectations:  
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK), 
utils.ResponseLengthGreaterOrEqual(1)),
+                               },
+                               "OK when VALID HOSTNAME parameter": {
+                                       ClientSession: extensionSession,
+                                       RequestOpts:   
client.RequestOptions{QueryParameters: url.Values{"hostName": 
{"atlanta-edge-01"}}},
+                                       Expectations: 
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK), 
utils.ResponseHasLength(1),
+                                               
validateServerCheckFields(map[string]interface{}{"HostName": "atlanta-edge-01", 
"Checks": map[string]int{"ORT": 13}})),
+                               },
+                               "OK when VALID ID parameter": {
+                                       ClientSession: extensionSession,
+                                       RequestOpts:   
client.RequestOptions{QueryParameters: url.Values{"id": 
{strconv.Itoa(GetServerID(t, "atlanta-edge-01")())}}},
+                                       Expectations:  
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK), 
utils.ResponseHasLength(1)),
+                               },
+                       },
+                       "POST": {
+                               "OK when UPDATING EXISTING SERVER CHECK": {
+                                       ClientSession: extensionSession,
+                                       RequestBody: map[string]interface{}{
+                                               "servercheck_short_name": "ILO",
+                                               "host_name":              
"atlanta-edge-01",
+                                               "value":                  0,
+                                       },
+                                       Expectations: 
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK),
+                                               
validateServerCheckCreateFields("atlanta-edge-01", 
map[string]interface{}{"HostName": "atlanta-edge-01", "Checks": 
map[string]int{"ORT": 13, "ILO": 0}})),
+                               },
+                               "BAD REQUEST when NO SERVER ID": {
+                                       ClientSession: extensionSession,
+                                       RequestBody: map[string]interface{}{
+                                               "id":                     nil,
+                                               "servercheck_short_name": "ILO",
+                                               "value":                  1,
+                                       },
+                                       Expectations: 
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+                               },
+                               "BAD REQUEST when INVALID SERVER ID": {
+                                       ClientSession: extensionSession,
+                                       RequestBody: map[string]interface{}{
+                                               "host_name":              
"atlanta-edge-01",
+                                               "id":                     -1,
+                                               "servercheck_short_name": "ILO",
+                                               "value":                  1,
+                                       },
+                                       Expectations: 
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+                               },
+                               "BAD REQUEST when INVALID SERVERCHECK SHORT 
NAME": {
+                                       ClientSession: extensionSession,
+                                       RequestBody: map[string]interface{}{
+                                               "host_name":              
"atlanta-edge-01",
+                                               "servercheck_short_name": 
"BOGUS",
+                                               "value":                  1,
+                                       },
+                                       Expectations: 
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+                               },
+                               "FORBIDDEN when NON EXTENSION USER": {
+                                       ClientSession: TOSession,
+                                       RequestBody: map[string]interface{}{
+                                               "host_name":              
"atlanta-edge-01",
+                                               "id":                     
GetServerID(t, "atlanta-edge-01")(),
+                                               "servercheck_short_name": 
"TEST",
+                                               "value":                  1,
+                                       },
+                                       Expectations: 
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusForbidden)),
+                               },
+                       },
                }
-       }
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
-}
-
-func CreateTestInvalidServerChecks(t *testing.T) {
-       if len(testData.Serverchecks) < 1 {
-               t.Fatal("Need at least one Servercheck to test creating an 
invalid Servercheck")
-       }
-       toReqTimeout := time.Second * 
time.Duration(Config.Default.Session.TimeoutInSecs)
-
-       _, _, err := 
TOSession.InsertServerCheckStatus(testData.Serverchecks[0], 
client.RequestOptions{})
-       if err == nil {
-               t.Error("expected to receive error with non extension user")
-       }
-
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
-
-       invalidServerCheck := tc.ServercheckRequestNullable{
-               Name:     util.StrPtr("BOGUS"),
-               Value:    util.IntPtr(1),
-               ID:       util.IntPtr(-1),
-               HostName: util.StrPtr("bogus_hostname"),
-       }
 
-       // Attempt to create a ServerCheck with invalid server ID
-       _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck, 
client.RequestOptions{})
-       if err == nil {
-               t.Error("expected to receive error with invalid id")
-       }
-
-       invalidServerCheck.ID = nil
-       // Attempt to create a ServerCheck with invalid host name
-       _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck, 
client.RequestOptions{})
-       if err == nil {
-               t.Error("expected to receive error with invalid host name")
-       }
-
-       // get valid name to get past host check
-       invalidServerCheck.Name = testData.Serverchecks[0].Name
-
-       // Attempt to create a ServerCheck with invalid servercheck name
-       _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck, 
client.RequestOptions{})
-       if err == nil {
-               t.Error("expected to receive error with invalid servercheck 
name")
-       }
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
-}
-
-func UpdateTestServerChecks(t *testing.T) {
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
-       for _, servercheck := range testData.Serverchecks {
-               if servercheck.Value == nil {
-                       t.Error("Found servercheck in the testing data with 
null or undefined Value")
-                       continue
+               for method, testCases := range methodTests {
+                       t.Run(method, func(t *testing.T) {
+                               for name, testCase := range testCases {
+                                       serverCheck := 
tc.ServercheckRequestNullable{}
+
+                                       if testCase.RequestBody != nil {
+                                               dat, err := 
json.Marshal(testCase.RequestBody)
+                                               assert.NoError(t, err, "Error 
occurred when marshalling request body: %v", err)
+                                               err = json.Unmarshal(dat, 
&serverCheck)
+                                               assert.NoError(t, err, "Error 
occurred when unmarshalling request body: %v", err)
+                                       }
+
+                                       switch method {
+                                       case "GET":
+                                               t.Run(name, func(t *testing.T) {
+                                                       resp, reqInf, err := 
testCase.ClientSession.GetServersChecks(testCase.RequestOpts)
+                                                       for _, check := range 
testCase.Expectations {
+                                                               check(t, 
reqInf, resp.Response, resp.Alerts, err)
+                                                       }
+                                               })
+                                       case "POST":
+                                               t.Run(name, func(t *testing.T) {
+                                                       resp, reqInf, err := 
testCase.ClientSession.InsertServerCheckStatus(serverCheck, 
testCase.RequestOpts)
+                                                       for _, check := range 
testCase.Expectations {
+                                                               check(t, 
reqInf, nil, tc.Alerts{Alerts: resp.Alerts}, err)
+                                                       }
+                                               })
+                                       }
+                               }
+                       })
                }
-               *servercheck.Value--
-               resp, _, err := TOSession.InsertServerCheckStatus(servercheck, 
client.RequestOptions{})
-               if err != nil {
-                       if servercheck.Name != nil {
-                               t.Logf("Servercheck Name: %s", 
*servercheck.Name)
-                       }
-                       if servercheck.HostName != nil {
-                               t.Logf("Servercheck Host Name: %s", 
*servercheck.HostName)
-                       }
-                       t.Errorf("could not update servercheck: %v - alerts: 
%+v", err, resp.Alerts)
-               }
-       }
-       SwitchSession(toReqTimeout, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword, 
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
+       })
 }
 
-func GetTestServerChecks(t *testing.T) {
-       if len(testData.Serverchecks) < 1 {
-               t.Fatal("Need at least one Servercheck to test creating an 
getting Serverchecks")
-       }
-       if testData.Serverchecks[0].HostName == nil {
-               t.Fatal("Found a Servercheck in the testing data wih null or 
undefined Host Name")
-       }
-       hostname := *testData.Serverchecks[0].HostName
-
-       // Get server checks
-       serverChecksResp, _, err := 
TOSession.GetServersChecks(client.RequestOptions{})
-       if err != nil {
-               t.Fatalf("could not get Serverchecks: %v - alerts: %+v", err, 
serverChecksResp.Alerts)
-       }
-       found := false
-       for _, sc := range serverChecksResp.Response {
-               if sc.HostName == hostname {
-                       found = true
-
-                       if sc.Checks == nil {
-                               t.Errorf("server %s had no checks - expected it 
to have at least two", hostname)
-                               break
-                       }
-
-                       if ort, ok := sc.Checks["ORT"]; !ok {
-                               t.Error("no 'ORT' servercheck exists - expected 
it to exist")
-                       } else if ort == nil {
-                               t.Error("'null' returned for ORT value 
servercheck - expected pointer to 12")
-                       } else if *ort != 12 {
-                               t.Errorf("%d returned for ORT value servercheck 
- expected 12", *ort)
-                       }
-
-                       if ilo, ok := sc.Checks["ILO"]; !ok {
-                               t.Error("no 'ILO' servercheck exists - expected 
it to exist")
-                       } else if ilo == nil {
-                               t.Error("'null' returned for ILO value 
servercheck - expected pointer to 0")
-                       } else if *ilo != 0 {
-                               t.Errorf("%d returned for ILO value servercheck 
- expected 0", *ilo)
+func validateServerCheckFields(expectedResp map[string]interface{}) 
utils.CkReqFunc {
+       return func(t *testing.T, _ toclientlib.ReqInf, resp interface{}, _ 
tc.Alerts, _ error) {
+               assert.RequireNotNil(t, resp, "Expected Server Check response 
to not be nil.")
+               serverCheckResp := resp.([]tc.GenericServerCheck)
+               for field, expected := range expectedResp {
+                       for _, serverCheck := range serverCheckResp {
+                               switch field {
+                               case "HostName":
+                                       assert.Equal(t, expected, 
serverCheck.HostName, "Expected HostName to be %v, but got %s", expected, 
serverCheck.HostName)
+                               case "Checks":
+                                       for name, value := range 
expected.(map[string]int) {
+                                               assert.RequireNotNil(t, 
serverCheck.Checks[name], "Expected Checks[%s] value to not be nil.", name)
+                                               assert.Equal(t, value, 
*serverCheck.Checks[name], "Expected Checks ILO Value to be %d, but got %s", 
value, *serverCheck.Checks[name])
+                                       }
+                               default:
+                                       t.Errorf("Expected field: %v, does not 
exist in response", field)
+                               }
                        }
-                       break
                }
        }
-       if !found {
-               t.Errorf("expected to find servercheck for host %s", hostname)
-       }
 }
 
-func GetTestServerChecksWithName(t *testing.T) {
-       opts := client.NewRequestOptions()
-       opts.QueryParameters.Set("hostName", "atlanta-edge-01")
-
-       // Get server checks
-       scResp, _, err := TOSession.GetServersChecks(opts)
-       if len(scResp.Response) == 0 {
-               t.Fatal("no server checks in response, quitting")
-       }
-       if err != nil {
-               t.Fatalf("could not get Serverchecks filtered by name 
'atlanta-edge-01': %v - alerts: %+v", err, scResp.Alerts)
-       }
-
-       //Add unknown param key
-       opts.QueryParameters.Add("foo", "car")
-       // Get server checks
-       resp, _, err := TOSession.GetServersChecks(opts)
-       if len(resp.Response) == 0 {
-               t.Fatal("no server checks in response, quitting")
-       }
-       if err != nil {
-               t.Fatalf("could not get Serverchecks filtered by server Host 
Name '%s': %v - alerts: %+v", resp.Response[0].HostName, err, resp.Alerts)
-       }
-
-       if len(scResp.Response) != len(resp.Response) {
-               t.Fatalf("expected: Both response lengths should be equal, got: 
first resp: %d - second resp: %d", len(scResp.Response), len(resp.Response))
+func validateServerCheckCreateFields(hostName string, expectedResp 
map[string]interface{}) utils.CkReqFunc {
+       return func(t *testing.T, _ toclientlib.ReqInf, resp interface{}, _ 
tc.Alerts, _ error) {
+               opts := client.NewRequestOptions()
+               opts.QueryParameters.Set("hostName", hostName)
+               serverChecks, _, err := TOSession.GetServersChecks(opts)
+               assert.RequireNoError(t, err, "Error getting Server Checks: %v 
- alerts: %+v", err, serverChecks.Alerts)
+               assert.RequireEqual(t, 1, len(serverChecks.Response), "Expected 
one Server Check returned Got: %d", len(serverChecks.Response))
+               validateServerCheckFields(expectedResp)(t, 
toclientlib.ReqInf{}, serverChecks.Response, tc.Alerts{}, nil)
        }
 }
 
-func GetTestServerChecksWithID(t *testing.T) {
-       serverChecksResp, _, err := 
TOSession.GetServersChecks(client.RequestOptions{})
-       if err != nil {
-               t.Errorf("Unexpected error getting Serverchecks: %v - alerts: 
%+v", err, serverChecksResp.Alerts)
-       }
-       if len(serverChecksResp.Response) == 0 {
-               t.Fatal("no server checks in response, quitting")
-       }
-       if serverChecksResp.Response[0].ID == 0 {
-               t.Fatal("ID of the response server is nil, quitting")
-       }
-       id := serverChecksResp.Response[0].ID
-
-       opts := client.NewRequestOptions()
-       opts.QueryParameters.Set("id", strconv.Itoa(id))
-
-       // Get server checks
-       scResp, _, err := TOSession.GetServersChecks(opts)
-       if len(scResp.Response) == 0 {
-               t.Fatal("no server checks in response, quitting")
-       }
-       if err != nil {
-               t.Fatalf("could not get Serverchecks by ID %d: %v - alerts: 
%+v", scResp.Response[0].ID, err, scResp.Alerts)
-       }
-
-       //Add unknown param key
-       opts.QueryParameters.Add("foo", "car")
-       // Get server checks
-       resp, _, err := TOSession.GetServersChecks(opts)
-       if len(resp.Response) == 0 {
-               t.Fatal("no server checks in response, quitting")
-       }
-       if err != nil {
-               t.Fatalf("could not get Serverchecks filtered by ID %d with 
extraneous 'foo' parameter: %v - alerts: %+v", resp.Response[0].ID, err, 
resp.Alerts)
-       }
+func CreateTestServerChecks(t *testing.T) {
+       extensionSession := utils.CreateV4Session(t, Config.TrafficOps.URL, 
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword, 
Config.Default.Session.TimeoutInSecs)
 
-       if len(scResp.Response) != len(resp.Response) {
-               t.Fatalf("expected: Both response lengths should be equal, got: 
first resp:%v-second resp:%v", len(scResp.Response), len(resp.Response))
+       for _, servercheck := range testData.Serverchecks {
+               resp, _, err := 
extensionSession.InsertServerCheckStatus(servercheck, client.RequestOptions{})
+               assert.RequireNoError(t, err, "Could not insert Servercheck: %v 
- alerts: %+v", err, resp.Alerts)
        }
 }
 

Reply via email to