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

pdesai pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/incubator-openwhisk-wskdeploy.git


The following commit(s) were added to refs/heads/master by this push:
     new 715f562  Display error message for each missing wskprop value. (#800)
715f562 is described below

commit 715f5628d720c5060c2dd5b563e50f6e7900e070
Author: Matt Rutkowski <mrutk...@us.ibm.com>
AuthorDate: Tue Mar 13 21:45:24 2018 -0500

    Display error message for each missing wskprop value. (#800)
    
    * Display error message for each missing wskprop value.
    
    * Add method to append to an error detail message and use.
    
    * Add test for AUTHKEY detection by validation method.
    
    * Add test for APIHOST and NAMESPACE detection.
    
    * Cleanup new unit test.
    
    * Cleanup new unit test.
    
    * Cleanup new unit test.
---
 deployers/manifestreader.go   |  2 +-
 deployers/servicedeployer.go  |  1 +
 deployers/whiskclient.go      | 20 ++++++++++++++------
 deployers/whiskclient_test.go | 35 +++++++++++++++++++++++++++++++++++
 wskderrors/wskdeployerror.go  | 10 ++++++++++
 wskenv/environment.go         |  4 ++--
 6 files changed, 63 insertions(+), 9 deletions(-)

diff --git a/deployers/manifestreader.go b/deployers/manifestreader.go
index e9e8271..fa54116 100644
--- a/deployers/manifestreader.go
+++ b/deployers/manifestreader.go
@@ -278,7 +278,7 @@ func (reader *ManifestReader) SetSequences(actions 
[]utils.ActionRecord) error {
                // If the sequence action exists in actions, return error
                _, exists := 
reader.serviceDeployer.Deployment.Packages[seqAction.Packagename].Actions[seqAction.Action.Name]
                if exists == true {
-                       // TODO(): i18n of error message (or create a new named 
error)
+                       // TODO(798): i18n of error message (or create a new 
named error)
                        err := errors.New("Sequence action's name [" +
                                seqAction.Action.Name + "] is already used by 
an action.")
                        return 
wskderrors.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
diff --git a/deployers/servicedeployer.go b/deployers/servicedeployer.go
index dfffb85..7fa8abe 100644
--- a/deployers/servicedeployer.go
+++ b/deployers/servicedeployer.go
@@ -403,6 +403,7 @@ func (deployer *ServiceDeployer) DeployDependencies() error 
{
                                }
 
                                if len(dependentPackages) > 1 {
+                                       // TODO(799) i18n
                                        errMessage := "GitHub dependency " + 
depName + " has multiple packages in manifest file: " +
                                                strings.Join(dependentPackages, 
", ") + ". " +
                                                "One GitHub dependency can only 
be associated with single package in manifest file." +
diff --git a/deployers/whiskclient.go b/deployers/whiskclient.go
index be5fcf6..7f60359 100644
--- a/deployers/whiskclient.go
+++ b/deployers/whiskclient.go
@@ -288,22 +288,30 @@ func NewWhiskConfig(proppath string, deploymentPath 
string, manifestPath string,
 
 func validateClientConfig(credential PropertyValue, apiHost PropertyValue, 
namespace PropertyValue) error {
 
-       // Display error message based upon which config value was missing
+       // Display error message for each config value found missing
        if len(credential.Value) == 0 || len(apiHost.Value) == 0 || 
len(namespace.Value) == 0 {
-               var errmsg string
+
+               var errorMsg string = ""
                if len(credential.Value) == 0 {
-                       errmsg = 
wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_AUTHKEY)
+                       errorMsg = wskderrors.AppendDetailToErrorMessage(
+                               errorMsg, 
wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_AUTHKEY), 1)
                }
 
                if len(apiHost.Value) == 0 {
-                       errmsg = 
wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_APIHOST)
+                       errorMsg = wskderrors.AppendDetailToErrorMessage(
+                               errorMsg, 
wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_APIHOST), 1)
+
                }
 
                if len(namespace.Value) == 0 {
-                       errmsg = 
wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_NAMESPACE)
+                       errorMsg = wskderrors.AppendDetailToErrorMessage(
+                               errorMsg, 
wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_NAMESPACE), 1)
+
                }
 
-               return wskderrors.NewWhiskClientInvalidConfigError(errmsg)
+               if len(errorMsg) > 0 {
+                       return 
wskderrors.NewWhiskClientInvalidConfigError(errorMsg)
+               }
        }
 
        // Show caller what final values we used for credential, apihost and 
namespace
diff --git a/deployers/whiskclient_test.go b/deployers/whiskclient_test.go
index dc45e95..f27f991 100644
--- a/deployers/whiskclient_test.go
+++ b/deployers/whiskclient_test.go
@@ -22,6 +22,8 @@ package deployers
 import (
        "github.com/apache/incubator-openwhisk-client-go/whisk"
        "github.com/apache/incubator-openwhisk-wskdeploy/utils"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
        "github.com/stretchr/testify/assert"
        "testing"
 )
@@ -47,6 +49,11 @@ const (
        WSKPROPS_CERT = "test_cert_file"
 )
 
+func init() {
+       // Setup "trace" flag for unit tests based upon "go test" -v flag
+       utils.Flags.Trace = wskprint.DetectGoTestVerbose()
+}
+
 func initializeFlags() {
        utils.Flags.Auth = ""
        utils.Flags.Namespace = ""
@@ -247,3 +254,31 @@ func TestNewWhiskConfigWithDeploymentAndManifestFile(t 
*testing.T) {
        assert.Equal(t, config.Namespace, DEPLOYMENT_NAMESPACE, "Failed to get 
namespace from deployment file")
        assert.True(t, config.Insecure, "Config should set insecure to true")
 }
+
+// Test for the following error messages if corresponding config. values' 
validation fails
+// wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_AUTHKEY)
+// wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_APIHOST)
+// wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_NAMESPACE)
+func TestValidateClientConfig(t *testing.T) {
+
+       ASSERT_ERROR_DETECT_AUTHKEY := "Validation did not detect missing 
AUTHKEY"
+       ASSERT_ERROR_DETECT_APIHOST := "Validation did not detect missing 
APIHOST"
+       ASSERT_ERROR_DETECT_NAMESPACE := "Validation did not detect missing 
NAMESPACE"
+
+       // test missing values for all 3 primary keys
+       credential.Value = ""
+       apiHost.Value = ""
+       namespace.Value = ""
+       err := validateClientConfig(credential, apiHost, namespace)
+
+       if err != nil {
+               // Verify all 3 missing config. values are accounted for in the 
error message
+               assert.Contains(t, err.Error(), 
wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_AUTHKEY), ASSERT_ERROR_DETECT_AUTHKEY)
+               assert.Contains(t, err.Error(), 
wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_APIHOST), ASSERT_ERROR_DETECT_APIHOST)
+               assert.Contains(t, err.Error(), 
wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_NAMESPACE), 
ASSERT_ERROR_DETECT_NAMESPACE)
+       } else {
+               assert.Error(t, err, ASSERT_ERROR_DETECT_AUTHKEY)
+       }
+
+       // TODO() test remainder of validateClientConfig() processing
+}
diff --git a/wskderrors/wskdeployerror.go b/wskderrors/wskdeployerror.go
index e3c87c7..baa3956 100644
--- a/wskderrors/wskdeployerror.go
+++ b/wskderrors/wskdeployerror.go
@@ -454,3 +454,13 @@ func IsCustomError(err error) bool {
        }
        return false
 }
+
+func AppendDetailToErrorMessage(detail string, add string, location int) 
string {
+
+       if len(detail) == 0 {
+               detail = "\n"
+       }
+       _, fname, lineNum, _ := runtime.Caller(location)
+       detail += fmt.Sprintf("  >> %s [%v]: %s", filepath.Base(fname), 
lineNum, add)
+       return detail
+}
diff --git a/wskenv/environment.go b/wskenv/environment.go
index 643d815..360c9ef 100644
--- a/wskenv/environment.go
+++ b/wskenv/environment.go
@@ -72,7 +72,7 @@ func InterpolateStringWithEnvVar(key interface{}) interface{} 
{
                                } else if strings.Contains(keystr, "$"+substr) {
                                        thisValue = os.Getenv(substr)
                                        if thisValue == "" {
-                                               // TODO() i18n
+                                               // TODO(797) i18n
                                                
wskprint.PrintlnOpenWhiskWarning("Missing Environment Variable " + substr + ".")
                                        }
                                        keystr = strings.Replace(keystr, 
"$"+substr, thisValue, -1)
@@ -81,7 +81,7 @@ func InterpolateStringWithEnvVar(key interface{}) interface{} 
{
                                } else if strings.Contains(keystr, 
"${"+substr+"}") {
                                        thisValue = os.Getenv(substr)
                                        if thisValue == "" {
-                                               // TODO() i18n
+                                               // TODO(797) i18n
                                                
wskprint.PrintlnOpenWhiskWarning("Missing Environment Variable " + substr + ".")
                                        }
                                        keystr = strings.Replace(keystr, 
"${"+substr+"}", thisValue, -1)

-- 
To stop receiving notification emails like this one, please contact
pde...@apache.org.

Reply via email to