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

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


The following commit(s) were added to refs/heads/master by this push:
     new 97df3fe  Fixing typo (copy/paste error) and adding raw test case (#230)
97df3fe is described below

commit 97df3fe4db276fcb7fd9258cb74f47b2975a0b77
Author: Priti Desai <[email protected]>
AuthorDate: Tue Mar 26 06:48:47 2019 -0700

    Fixing typo (copy/paste error) and adding raw test case (#230)
    
    * fixing typo and refactoring __ow_body
    
    * adding test
    
    * fixing space issues
---
 .../runtimes/javascript/platform/platform.js       | 61 +++++++++--------
 .../javascript/tests/webactionraw/README.md        | 76 ++++++++++++++++++++++
 .../javascript/tests/webactionraw/build.yaml.tmpl  | 26 ++++++++
 .../tests/webactionraw/data-init-run.json          | 20 ++++++
 .../javascript/tests/webactionraw/data-init.json   |  8 +++
 .../javascript/tests/webactionraw/data-run.json    | 11 ++++
 .../webactionraw/payload-knative-init-run.http     | 25 +++++++
 .../tests/webactionraw/payload-openwhisk-init.http | 13 ++++
 .../tests/webactionraw/payload-openwhisk-run.http  | 16 +++++
 .../tests/webactionraw/service.yaml.tmpl           | 12 ++++
 10 files changed, 240 insertions(+), 28 deletions(-)

diff --git a/knative-build/runtimes/javascript/platform/platform.js 
b/knative-build/runtimes/javascript/platform/platform.js
index 9307c84..acc73bb 100644
--- a/knative-build/runtimes/javascript/platform/platform.js
+++ b/knative-build/runtimes/javascript/platform/platform.js
@@ -34,7 +34,7 @@ function preProcessInitData(env, initdata, valuedata, 
activationdata) {
         var binary = (typeof env.__OW_ACTION_BINARY === 'undefined') ? false : 
env.__OW_ACTION_BINARY.toLowerCase() === "true";
         // TODO: deault to empty?
         var actionName = (typeof env.__OW_ACTION_NAME === 'undefined') ? "" : 
env.__OW_ACTION_NAME;
-        var raw = (typeof env.__OW_ACTION_RAW === 'undefined') ? false : 
env.__OW_ACTION_BINARY.toLowerCase() === "true";
+        var raw = (typeof env.__OW_ACTION_RAW === 'undefined') ? false : 
env.__OW_ACTION_RAW.toLowerCase() === "true";
 
         DEBUG.dumpObject(actionName, "Action name");
         DEBUG.dumpObject(main, "Action main");
@@ -59,7 +59,7 @@ function preProcessInitData(env, initdata, valuedata, 
activationdata) {
             }
             if (initdata.raw && typeof initdata.raw === 'boolean') {
                 // TODO: Throw error if RAW is not 'true' or 'false'
-                binary = initdata.raw;
+                raw = initdata.raw;
             }
         }
 
@@ -130,10 +130,15 @@ function preProcessHTTPContext(req, valueData) {
 
     try {
         if (valueData.raw) {
-            if (typeof body === "string" && body !== undefined) {
-                valueData.__ow_body = body;
+            if (typeof req.body.value === "string" && req.body.value !== 
undefined) {
+                valueData.__ow_body = req.body.value;
             } else {
-                // TODO: delete main, binary, raw, and code from the body 
before sending it as action argument
+                const body = Object.assign({}, req.body.value);
+                // delete main, binary, raw, and code from the body before 
sending it as an action argument
+                delete body.main;
+                delete body.code;
+                delete body.binary;
+                delete body.raw;
                 var bodyStr = JSON.stringify(body);
                 var bodyBase64 = Buffer.from(bodyStr).toString("base64");
                 valueData.__ow_body = bodyBase64;
@@ -287,30 +292,30 @@ function PlatformFactory(id, svc, cfg) {
     };
 
     this.registerHandlers = function(app, platform) {
-            var httpMethods = process.env.__OW_HTTP_METHODS;
-            // default to "[post]" HTTP method if not defined
-            if (typeof httpMethods === "undefined" || 
!Array.isArray(httpMethods)) {
-                console.error("__OW_HTTP_METHODS is undefined; defaulting to 
'[post]' ...");
-                httpMethods = [http_method.post];
+        var httpMethods = process.env.__OW_HTTP_METHODS;
+        // default to "[post]" HTTP method if not defined
+        if (typeof httpMethods === "undefined" || !Array.isArray(httpMethods)) 
{
+            console.error("__OW_HTTP_METHODS is undefined; defaulting to 
'[post]' ...");
+            httpMethods = [http_method.post];
+        }
+        httpMethods.forEach(function (method) {
+            switch (method.toUpperCase()) {
+                case http_method.get:
+                    app.get('/', platform.run);
+                    break;
+                case http_method.post:
+                    app.post('/', platform.run);
+                    break;
+                case http_method.put:
+                    app.put('/', platform.run);
+                    break;
+                case http_method.delete:
+                    app.delete('/', platform.run);
+                    break;
+                default:
+                    console.error("Environment variable '__OW_HTTP_METHODS' 
has an unrecognized value (" + method + ").");
             }
-            httpMethods.forEach(function (method) {
-                switch (method.toUpperCase()) {
-                    case http_method.get:
-                        app.get('/', platform.run);
-                        break;
-                    case http_method.post:
-                        app.post('/', platform.run);
-                        break;
-                    case http_method.put:
-                        app.put('/', platform.run);
-                        break;
-                    case http_method.delete:
-                        app.delete('/', platform.run);
-                        break;
-                    default:
-                        console.error("Environment variable 
'__OW_HTTP_METHODS' has an unrecognized value (" + method + ").");
-                }
-            });
+        });
     }
 };
 
diff --git a/knative-build/runtimes/javascript/tests/webactionraw/README.md 
b/knative-build/runtimes/javascript/tests/webactionraw/README.md
new file mode 100644
index 0000000..dbe1d95
--- /dev/null
+++ b/knative-build/runtimes/javascript/tests/webactionraw/README.md
@@ -0,0 +1,76 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Raw Web Action Test for OpenWhisk NodeJS Runtime using Knative
+
+## Running the test using the `curl` command
+
+Depending on the value you set in 
[buildtemplate.yaml](../../buildtemplate.yaml) for the 
```OW_RUNTIME_PLATFORM``` parameter, you will need to invoke different 
endpoints to execute the test.
+
+### Running with OW_RUNTIME_PLATFORM set to "knative"
+
+#### Invoke / endpoint on the Service
+
+```
+curl -H "Host: nodejs-web-action-raw.default.example.com" -X POST 
http://localhost/
+{
+   "response":{
+      "__ow_body":"eyJuYW1lIjoiSm9lIn0=",
+      "__ow_query":{
+      },
+      "__ow_user":"",
+      "__ow_method":"POST",
+      "__ow_headers":{
+         "host":"localhost",
+         "user-agent":"curl/7.54.0",
+         "accept":"*/*",
+         "content-type":"application/json",
+         "content-length":"394"
+      },
+      "__ow_path":""
+   }
+}
+```
+
+### Running with OW_RUNTIME_PLATFORM set to "openwhisk"
+
+#### Initialize the runtime
+
+Initialize the runtime with the function and other configuration data using 
the ```/init``` endpoint.
+
+```
+curl -H "Host: nodejs-web-aciton-raw.default.example.com" -d "@data-init.json" 
-H "Content-Type: application/json" http://localhost/init
+
+{"OK":true}
+```
+
+#### Run the function
+
+Execute the function using the ```/run``` endpoint.
+
+```
+curl -H "Host: nodejs-web-action-raw.default.example.com" -d "@data-run.json" 
-H "Content-Type: application/json" -X POST http://localhost/run
+{
+   "response":{
+      "name":"Joe"
+   }
+}
+```
+
+**Note**: OpenWhisk controller plays an important role in handling web actions 
and that's why lacking `__ow_*` parameters from the response.
diff --git 
a/knative-build/runtimes/javascript/tests/webactionraw/build.yaml.tmpl 
b/knative-build/runtimes/javascript/tests/webactionraw/build.yaml.tmpl
new file mode 100644
index 0000000..b850d96
--- /dev/null
+++ b/knative-build/runtimes/javascript/tests/webactionraw/build.yaml.tmpl
@@ -0,0 +1,26 @@
+apiVersion: build.knative.dev/v1alpha1
+kind: Build
+metadata:
+  name: nodejs-10-web-action-raw
+spec:
+  serviceAccountName: openwhisk-runtime-builder
+  source:
+    git:
+      url: "https://github.com/apache/incubator-openwhisk-devtools.git";
+  revision: "master"
+  template:
+    name: openwhisk-nodejs-runtime
+    arguments:
+      - name: TARGET_IMAGE_NAME
+        value: "docker.io/${DOCKER_USERNAME}/nodejs-10-web-action-raw"
+      - name: DOCKERFILE
+        value: "./knative-build/runtimes/javascript/Dockerfile"
+      - name: OW_RUNTIME_DEBUG
+        value: "true"
+      - name: OW_ACTION_NAME
+        value: "nodejs-web-action-raw"
+      - name: OW_ACTION_CODE
+        value : "function main(params) { return { response: params }; }"
+      - name: OW_ACTION_RAW
+        value: "true"
+
diff --git 
a/knative-build/runtimes/javascript/tests/webactionraw/data-init-run.json 
b/knative-build/runtimes/javascript/tests/webactionraw/data-init-run.json
new file mode 100644
index 0000000..87082e5
--- /dev/null
+++ b/knative-build/runtimes/javascript/tests/webactionraw/data-init-run.json
@@ -0,0 +1,20 @@
+{
+  "init": {
+    "name" : "nodejs-web-action-raw",
+    "main" : "main",
+    "binary": false,
+    "code" : "function main(params) { return { response: params }; }",
+    "raw": true
+  },
+  "activation": {
+    "namespace": "default",
+    "action_name": "nodejs-web-action-raw",
+    "api_host": "",
+    "api_key": "",
+    "activation_id": "",
+    "deadline": "4102498800000"
+  },
+  "value": {
+    "name": "Joe"
+  }
+}
diff --git 
a/knative-build/runtimes/javascript/tests/webactionraw/data-init.json 
b/knative-build/runtimes/javascript/tests/webactionraw/data-init.json
new file mode 100644
index 0000000..09fcbd6
--- /dev/null
+++ b/knative-build/runtimes/javascript/tests/webactionraw/data-init.json
@@ -0,0 +1,8 @@
+{
+    "value": {
+        "name" : "nodejs-web-action-raw",
+        "main" : "main",
+        "binary": false,
+        "code" : "function main(params) { return { response: params }; }"
+    }
+}
diff --git a/knative-build/runtimes/javascript/tests/webactionraw/data-run.json 
b/knative-build/runtimes/javascript/tests/webactionraw/data-run.json
new file mode 100644
index 0000000..f020547
--- /dev/null
+++ b/knative-build/runtimes/javascript/tests/webactionraw/data-run.json
@@ -0,0 +1,11 @@
+{ 
+    "value": {
+        "name": "Joe"
+    },
+    "namespace": "default",
+    "action_name": "nodejs-web-action-raw",
+    "api_host": "",
+    "api_key": "",
+    "activation_id": "",
+    "deadline": "4102498800000"
+}
diff --git 
a/knative-build/runtimes/javascript/tests/webactionraw/payload-knative-init-run.http
 
b/knative-build/runtimes/javascript/tests/webactionraw/payload-knative-init-run.http
new file mode 100644
index 0000000..b8c3bb7
--- /dev/null
+++ 
b/knative-build/runtimes/javascript/tests/webactionraw/payload-knative-init-run.http
@@ -0,0 +1,25 @@
+POST http://localhost:8080/ HTTP/1.1
+content-type: application/json
+
+{
+  "init": {
+    "name" : "nodejs-web-action-raw",
+    "main" : "main",
+    "binary": false,
+    "code" : "function main(params) { return { response: params }; }",
+    "raw": true
+  },
+  "activation": {
+    "namespace": "default",
+    "action_name": "nodejs-web-action-raw",
+    "api_host": "",
+    "api_key": "",
+    "activation_id": "",
+    "deadline": "4102498800000"
+  },
+  "value": {
+    "name": "Joe"
+  }
+}
+
+###
diff --git 
a/knative-build/runtimes/javascript/tests/webactionraw/payload-openwhisk-init.http
 
b/knative-build/runtimes/javascript/tests/webactionraw/payload-openwhisk-init.http
new file mode 100644
index 0000000..bc64d95
--- /dev/null
+++ 
b/knative-build/runtimes/javascript/tests/webactionraw/payload-openwhisk-init.http
@@ -0,0 +1,13 @@
+POST http://localhost:8080/init HTTP/1.1
+content-type: application/json
+
+{
+  "value": {
+    "name" : "nodejs-web-action-raw",
+    "main" : "main",
+    "binary": false,
+    "code" : "function main(params) { return { response: params }; }"
+  }
+}
+
+###
diff --git 
a/knative-build/runtimes/javascript/tests/webactionraw/payload-openwhisk-run.http
 
b/knative-build/runtimes/javascript/tests/webactionraw/payload-openwhisk-run.http
new file mode 100644
index 0000000..4baff6b
--- /dev/null
+++ 
b/knative-build/runtimes/javascript/tests/webactionraw/payload-openwhisk-run.http
@@ -0,0 +1,16 @@
+POST http://localhost:8080/run HTTP/1.1
+content-type: application/json
+
+{
+  "value": {
+    "name" : "Joe"
+  },
+  "namespace": "default",
+  "action_name": "nodejs-web-action-raw",
+  "api_host": "",
+  "api_key": "",
+  "activation_id": "",
+  "deadline": "4102498800000"
+}
+
+###
diff --git 
a/knative-build/runtimes/javascript/tests/webactionraw/service.yaml.tmpl 
b/knative-build/runtimes/javascript/tests/webactionraw/service.yaml.tmpl
new file mode 100644
index 0000000..73c9ffb
--- /dev/null
+++ b/knative-build/runtimes/javascript/tests/webactionraw/service.yaml.tmpl
@@ -0,0 +1,12 @@
+apiVersion: serving.knative.dev/v1alpha1
+kind: Service
+metadata:
+  name: nodejs-web-action-raw
+  namespace: default
+spec:
+  runLatest:
+    configuration:
+      revisionTemplate:
+        spec:
+          container:
+            image: docker.io/${DOCKER_USERNAME}/nodejs-10-web-action-raw

Reply via email to