This is an automated email from the ASF dual-hosted git repository.
zrhoffman 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 d69709f Fix POST /profileparameters validation error message (#5210)
d69709f is described below
commit d69709fcf17558f4d56deca540e33e9334f7b1b3
Author: Rawlin Peters <[email protected]>
AuthorDate: Wed Oct 28 10:57:22 2020 -0600
Fix POST /profileparameters validation error message (#5210)
* Fix POST /profileparameters validation error message
It should say "profileId" and "parameterId" to make it clear the IDs are
missing, not the names.
* Add API test
---
CHANGELOG.md | 1 +
.../testing/api/v3/profile_parameters_test.go | 46 ++++++++++++----------
.../profileparameter/profile_parameters.go | 4 +-
3 files changed, 28 insertions(+), 23 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dac0f8d..0fdce22 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@ The format is based on [Keep a
Changelog](http://keepachangelog.com/en/1.0.0/).
### Fixed
- Fixed an issue where the jobs and servers table in Traffic Portal would not
clear a column's filter when it's hidden
- Fixed an issue with Traffic Router failing to authenticate if secrets are
changed
+- Fixed validation error message for Traffic Ops `POST
/api/x/profileparameters` route
### Added
- Added If-Match and If-Unmodified-Since Support in Server and Clients.
diff --git a/traffic_ops/testing/api/v3/profile_parameters_test.go
b/traffic_ops/testing/api/v3/profile_parameters_test.go
index d62cf9f..a55b258 100644
--- a/traffic_ops/testing/api/v3/profile_parameters_test.go
+++ b/traffic_ops/testing/api/v3/profile_parameters_test.go
@@ -19,7 +19,7 @@ import (
"fmt"
"net/http"
"sort"
- "sync"
+ "strings"
"testing"
"time"
@@ -34,6 +34,7 @@ func TestProfileParameters(t *testing.T) {
SortTestProfileParameters(t)
GetTestProfileParametersIMS(t)
GetTestProfileParameters(t)
+ InvalidCreateTestProfileParameters(t)
})
}
@@ -58,13 +59,13 @@ func GetTestProfileParametersIMS(t *testing.T) {
func CreateTestProfileParameters(t *testing.T) {
firstProfile := testData.Profiles[0]
- profileResp, _, err := TOSession.GetProfileByName(firstProfile.Name)
+ profileResp, _, err :=
TOSession.GetProfileByNameWithHdr(firstProfile.Name, nil)
if err != nil {
t.Errorf("cannot GET Profile by name: %v - %v",
firstProfile.Name, err)
}
firstParameter := testData.Parameters[0]
- paramResp, _, err := TOSession.GetParameterByName(firstParameter.Name)
+ paramResp, _, err :=
TOSession.GetParameterByNameWithHdr(firstParameter.Name, nil)
if err != nil {
t.Errorf("cannot GET Parameter by name: %v - %v",
firstParameter.Name, err)
}
@@ -84,6 +85,24 @@ func CreateTestProfileParameters(t *testing.T) {
}
+func InvalidCreateTestProfileParameters(t *testing.T) {
+ pp := tc.ProfileParameter{
+ ProfileID: 0,
+ ParameterID: 0,
+ }
+ _, _, err := TOSession.CreateProfileParameter(pp)
+ if err == nil {
+ t.Fatalf("creating invalid profile parameter - expected: error,
actual: nil")
+ }
+ if !strings.Contains(err.Error(), "profileId") {
+ t.Errorf("expected: error message to contain 'profileId',
actual: %v", err)
+ }
+ if !strings.Contains(err.Error(), "parameterId") {
+ t.Errorf("expected: error message to contain 'parameterId',
actual: %v", err)
+ }
+
+}
+
func SortTestProfileParameters(t *testing.T) {
var header http.Header
var sortedList []string
@@ -107,28 +126,13 @@ func GetTestProfileParameters(t *testing.T) {
for _, pp := range testData.ProfileParameters {
queryParams := fmt.Sprintf(queryParamFormat, pp.ProfileID,
pp.ParameterID)
- resp, _, err :=
TOSession.GetProfileParameterByQueryParams(queryParams)
+ resp, _, err :=
TOSession.GetProfileParameterByQueryParamsWithHdr(queryParams, nil)
if err != nil {
t.Errorf("cannot GET Parameter by name: %v - %v", err,
resp)
}
}
}
-func DeleteTestProfileParametersParallel(t *testing.T) {
-
- var wg sync.WaitGroup
- for _, pp := range testData.ProfileParameters {
-
- wg.Add(1)
- go func() {
- defer wg.Done()
- DeleteTestProfileParameter(t, pp)
- }()
-
- }
- wg.Wait()
-}
-
func DeleteTestProfileParameters(t *testing.T) {
for _, pp := range testData.ProfileParameters {
@@ -140,7 +144,7 @@ func DeleteTestProfileParameter(t *testing.T, pp
tc.ProfileParameter) {
queryParams := fmt.Sprintf(queryParamFormat, pp.ProfileID,
pp.ParameterID)
// Retrieve the PtofileParameter by profile so we can get the id for
the Update
- resp, _, err := TOSession.GetProfileParameterByQueryParams(queryParams)
+ resp, _, err :=
TOSession.GetProfileParameterByQueryParamsWithHdr(queryParams, nil)
if err != nil {
t.Errorf("cannot GET Parameter by profile: %v - %v",
pp.Profile, err)
}
@@ -153,7 +157,7 @@ func DeleteTestProfileParameter(t *testing.T, pp
tc.ProfileParameter) {
}
// Retrieve the Parameter to see if it got deleted
- pps, _, err :=
TOSession.GetProfileParameterByQueryParams(queryParams)
+ pps, _, err :=
TOSession.GetProfileParameterByQueryParamsWithHdr(queryParams, nil)
if err != nil {
t.Errorf("error deleting Parameter name: %s",
err.Error())
}
diff --git
a/traffic_ops/traffic_ops_golang/profileparameter/profile_parameters.go
b/traffic_ops/traffic_ops_golang/profileparameter/profile_parameters.go
index aa557ac..eb92015 100644
--- a/traffic_ops/traffic_ops_golang/profileparameter/profile_parameters.go
+++ b/traffic_ops/traffic_ops_golang/profileparameter/profile_parameters.go
@@ -102,8 +102,8 @@ func (pp *TOProfileParameter) SetKeys(keys
map[string]interface{}) {
func (pp *TOProfileParameter) Validate() error {
errs := validation.Errors{
- "profile": validation.Validate(pp.ProfileID,
validation.Required),
- "parameter": validation.Validate(pp.ParameterID,
validation.Required),
+ "profileId": validation.Validate(pp.ProfileID,
validation.Required),
+ "parameterId": validation.Validate(pp.ParameterID,
validation.Required),
}
return util.JoinErrs(tovalidate.ToErrors(errs))