summaryrefslogtreecommitdiffstats
path: root/test/afb-test
diff options
context:
space:
mode:
Diffstat (limited to 'test/afb-test')
-rw-r--r--test/afb-test/CMakeLists.txt21
-rw-r--r--test/afb-test/etc/CMakeLists.txt31
-rw-r--r--test/afb-test/etc/aft-persistence-test.json22
-rw-r--r--test/afb-test/tests/CMakeLists.txt31
-rw-r--r--test/afb-test/tests/persistence_APITest.lua129
-rw-r--r--test/afb-test/tests/persistence_BasicAPITest.lua108
6 files changed, 342 insertions, 0 deletions
diff --git a/test/afb-test/CMakeLists.txt b/test/afb-test/CMakeLists.txt
new file mode 100644
index 0000000..81ddf88
--- /dev/null
+++ b/test/afb-test/CMakeLists.txt
@@ -0,0 +1,21 @@
+###########################################################################
+# Copyright 2019 Konsulko Group
+#
+# author:Stoyan Bogdanov <stoyan.bogdanov@konsulko.com>
+#
+# Licensed 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.
+###########################################################################
+
+# Include any directory not starting with _
+# -----------------------------------------------------
+PROJECT_SUBDIRS_ADD(${PROJECT_SRC_DIR_PATTERN})
diff --git a/test/afb-test/etc/CMakeLists.txt b/test/afb-test/etc/CMakeLists.txt
new file mode 100644
index 0000000..1ee805b
--- /dev/null
+++ b/test/afb-test/etc/CMakeLists.txt
@@ -0,0 +1,31 @@
+###########################################################################
+# Copyright 2018 IoT.bzh
+#
+# author:Frédéric Marec <frederic.marec@iot.bzh>
+#
+# Licensed 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.
+###########################################################################
+
+##################################################
+# Data persistence test configuration files
+##################################################
+PROJECT_TARGET_ADD(afb-test-config)
+
+ file(GLOB CONF_FILES "*.json")
+
+ add_input_files("${CONF_FILES}")
+
+ SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
+ LABELS "TEST-CONFIG"
+ OUTPUT_NAME ${TARGET_NAME}
+ ) \ No newline at end of file
diff --git a/test/afb-test/etc/aft-persistence-test.json b/test/afb-test/etc/aft-persistence-test.json
new file mode 100644
index 0000000..35a58ac
--- /dev/null
+++ b/test/afb-test/etc/aft-persistence-test.json
@@ -0,0 +1,22 @@
+{
+ "id": "http://iot.bzh/download/public/schema/json/ctl-schema.json#",
+ "$schema": "http://iot.bzh/download/public/schema/json/ctl-schema.json#",
+ "metadata": {
+ "uid": "Test",
+ "version": "1.0",
+ "api": "aft-persistence",
+ "info": "AFB-test binding configuration file to test persistence api.",
+ "require": [
+ "persistence"
+ ]
+ },
+ "testVerb": {
+ "uid": "launch_all_tests",
+ "info": "Launch all the tests",
+ "action": "lua://AFT#_launch_test",
+ "args": {
+ "trace": "persistence",
+ "files": ["persistence_BasicAPITest.lua", "persistence_APITest.lua"]
+ }
+ }
+} \ No newline at end of file
diff --git a/test/afb-test/tests/CMakeLists.txt b/test/afb-test/tests/CMakeLists.txt
new file mode 100644
index 0000000..c03658a
--- /dev/null
+++ b/test/afb-test/tests/CMakeLists.txt
@@ -0,0 +1,31 @@
+###########################################################################
+# Copyright 2018 IoT.bzh
+#
+# author:Frédéric Marec <frederic.marec@iot.bzh>
+#
+# Licensed 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.
+###########################################################################
+
+
+##################################################
+# Data persistence Lua Scripts
+##################################################
+PROJECT_TARGET_ADD(test-files)
+
+ file(GLOB LUA_FILES "*.lua")
+ add_input_files("${LUA_FILES}")
+
+ SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
+ LABELS "TEST-DATA"
+ OUTPUT_NAME ${TARGET_NAME}
+ ) \ No newline at end of file
diff --git a/test/afb-test/tests/persistence_APITest.lua b/test/afb-test/tests/persistence_APITest.lua
new file mode 100644
index 0000000..2356869
--- /dev/null
+++ b/test/afb-test/tests/persistence_APITest.lua
@@ -0,0 +1,129 @@
+--[[
+ Copyright (C) 2019 "IoT.bzh"
+ Author Frédéric Marec <frederic.marec@iot.bzh>
+
+ Licensed 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.
+
+
+ NOTE: strict mode: every global variables should be prefixed by '_'
+--]]
+
+local testPrefix ="persistence_APITest_"
+local key_values0 = {"TESTinsert", "insert", "wrong_value", 3.1415926546, nil}
+local key_values1 = key_values0
+local key_values2 = key_values0
+
+local function formatize (arg)
+ return tostring(arg):gsub("[^a-zA-Z0-9_]", "_")
+end
+
+for _, key_value0 in pairs(key_values0) do
+ for _, key_value1 in pairs(key_values1) do
+
+ local arg1 = "key_"..formatize(key_value0).."_"
+ local arg2 = "value_"..formatize(key_value1)
+
+ -- This tests the 'insert' verb of the persistence API
+ local test_name_insert = testPrefix.."insert_with_verification_"..arg1..arg2
+ _AFT.describe(test_name_insert,function()
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value0, value= key_value1})
+ _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{key= key_value0, value= key_value1})
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+ end)
+
+ -- This tests the 'delete' verb of the persistence API
+ local test_name_deldete = testPrefix.."delete_with_verification_"..arg1..arg2
+ _AFT.describe(test_name_deldete,function()
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value0, value= key_value1})
+ _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{key= key_value0, value= key_value1})
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+ end)
+
+ for _, key_value2 in pairs(key_values2) do
+
+ local arg3 = "_updated_value_"..formatize(key_value2)
+
+ -- This tests the 'update' verb of the persistence API
+ local test_name_update = testPrefix.."update_with_verification_"..arg1..arg2..arg3
+ _AFT.describe(test_name_update,function()
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value0, value= key_value1})
+ _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{key= key_value0, value= key_value1})
+ _AFT.assertVerbStatusSuccess("persistence", "update", {key= key_value0, value= key_value2})
+ _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{key= key_value0, value= key_value2})
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+ _AFT.assertVerbResponseEqualsError("persistence","read", {key= key_value0},{key= key_value0, value= key_value2})
+ _AFT.assertVerbResponseEqualsError("persistence","read", {key= key_value0},{key= key_value0, value= key_value1})
+ end)
+
+ -- This tests 'multiple insert' of the persistence API
+ local test_name_multiple_insert = testPrefix.."multiple_insert_with_verification_"..arg1..arg2..arg3
+ _AFT.describe(test_name_multiple_insert,function()
+
+ if ((key_value0 == key_value2) or (key_value1 == key_value2) or (key_value0 == key_value1)
+ or ((key_value0 == key_value2) and (key_value1 == key_value2) and (key_value0 == key_value1)))
+ then
+ _AFT.assertVerbStatusSuccess("persistence", "update", {key= key_value2, value= key_value2})
+
+ if (key_value0 == key_value2)
+ then
+ _AFT.assertVerbStatusError("persistence", "insert", {key= key_value0, value= key_value0})
+ else
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value0, value= key_value0})
+ end
+
+ if (key_value1 == key_value2) or (key_value0 == key_value1)
+ then
+ _AFT.assertVerbStatusError("persistence", "insert", {key= key_value1, value= key_value1})
+ else
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value1, value= key_value1})
+ end
+
+ _AFT.assertVerbStatusError("persistence", "insert", {key= key_value1, value= key_value2})
+ _AFT.assertVerbStatusError("persistence", "insert", {key= key_value2, value= key_value0})
+ _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{key= key_value0, value= key_value0})
+ _AFT.assertVerbResponseEquals("persistence","read", {key= key_value1},{key= key_value1, value= key_value1})
+ _AFT.assertVerbResponseEquals("persistence","read", {key= key_value2},{key= key_value2, value= key_value2})
+
+ if (key_value0 == key_value2)
+ then
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+ _AFT.assertVerbStatusError("persistence", "delete", {key= key_value2})
+ else
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value2})
+ end
+
+ if (key_value1 == key_value2) or (key_value0 == key_value1)
+ then
+ _AFT.assertVerbStatusError("persistence", "delete", {key= key_value1})
+ else
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value1})
+ end
+
+ else -- key_values0, key_value1 & key_value2 not equal
+ _AFT.assertVerbStatusSuccess("persistence", "update", {key= key_value2, value= key_value2})
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value0, value= key_value0})
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key= key_value1, value= key_value1})
+ _AFT.assertVerbStatusError("persistence", "insert", {key= key_value1, value= key_value2})
+ _AFT.assertVerbStatusError("persistence", "insert", {key= key_value2, value= key_value0})
+ _AFT.assertVerbResponseEquals("persistence","read", {key= key_value0},{key= key_value0, value= key_value0})
+ _AFT.assertVerbResponseEquals("persistence","read", {key= key_value1},{key= key_value1, value= key_value1})
+ _AFT.assertVerbResponseEquals("persistence","read", {key= key_value2},{key= key_value2, value= key_value2})
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value0})
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value1})
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key= key_value2})
+ end
+ end)
+ end
+ end
+end
diff --git a/test/afb-test/tests/persistence_BasicAPITest.lua b/test/afb-test/tests/persistence_BasicAPITest.lua
new file mode 100644
index 0000000..7606bd8
--- /dev/null
+++ b/test/afb-test/tests/persistence_BasicAPITest.lua
@@ -0,0 +1,108 @@
+--[[
+ Copyright (C) 2018 "IoT.bzh"
+ Author Frédéric Marec <frederic.marec@iot.bzh>
+
+ Licensed 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.
+
+
+ NOTE: strict mode: every global variables should be prefixed by '_'
+--]]
+
+local testPrefix ="persistence_BasicAPITest_"
+
+-- This tests the 'insert' verb of the persistence API
+_AFT.describe(testPrefix.."insert_with_verification",function()
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTinsert", value="insert"})
+ _AFT.assertVerbResponseEquals("persistence","read", {key="TESTinsert"},{key="TESTinsert", value="insert"})
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTinsert"})
+ _AFT.assertVerbResponseEqualsError("persistence","read", {key="TESTinsert"},{key="TESTinsert", value="insert"})
+end)
+
+-- This tests the 'update' verb of the persistence API
+_AFT.describe(testPrefix.."update_with_verification",function()
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTupdate", value="myvalue"})
+ _AFT.assertVerbResponseEquals("persistence","read", {key="TESTupdate"},{key="TESTupdate", value="myvalue"})
+ _AFT.assertVerbStatusSuccess("persistence", "update", {key="TESTupdate", value="newvalue"})
+ _AFT.assertVerbResponseEquals("persistence","read", {key="TESTupdate"},{key="TESTupdate", value="newvalue"})
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTupdate"})
+ _AFT.assertVerbResponseEqualsError("persistence","read", {key="TESTupdate"},{key="TESTupdate", value="myvalue"})
+ _AFT.assertVerbResponseEqualsError("persistence","read", {key="TESTupdate"},{key="TESTupdate", value="newvalue"})
+end)
+
+-- This tests the 'delete' verb of the persistence API
+_AFT.describe(testPrefix.."delete_with_verification",function()
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTdelete", value="delete"})
+ _AFT.assertVerbResponseEquals("persistence","read", {key="TESTdelete"},{key="TESTdelete", value="delete"})
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTdelete"})
+ _AFT.assertVerbResponseEqualsError("persistence","read", {key="TESTdelete"},{key="TESTdelete", value="delete"})
+end)
+
+-- This tests the 'insert' verb of the persistence API
+_AFT.testVerbStatusSuccess(testPrefix.."insert","persistence","insert", {key="TESTinsert", value="insert"}, nil,
+ function()
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTinsert"})
+ end)
+
+-- This tests the 'delete' verb of the persistence API
+_AFT.testVerbStatusSuccess(testPrefix.."delete","persistence","delete", {key="TESTdelete"},
+ function()
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTdelete", value="delete"})
+ end, nil)
+
+-- This tests the 'update' verb of the persistence API
+_AFT.testVerbStatusSuccess(testPrefix.."update","persistence","update", {key="TESTupdate", value="testupdate"},
+ function()
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTupdate", value="newupdate"})
+ end,
+ function()
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTupdate"})
+ end)
+
+-- This tests the 'read' verb of the persistence API
+_AFT.testVerbStatusSuccess(testPrefix.."read","persistence","read", {key="TESTread"},
+ function()
+ _AFT.assertVerbStatusSuccess("persistence", "insert", {key="TESTread", value="myvalue"})
+ end,
+ function()
+ _AFT.assertVerbStatusSuccess("persistence", "delete", {key="TESTread"})
+ end)
+
+-- This tests the 'read' verb of the persistence API
+_AFT.testVerbStatusError(testPrefix.."read-unknow-value","persistence","read", {key="TESTread-unknow-value"}, nil, nil)
+
+-- This tests the 'insert' verb of the persistence API
+_AFT.testVerbStatusError(testPrefix.."insert-without-value","persistence","insert", {key="TESTread-unknow-value"}, nil,
+ function()
+ _AFT.assertVerbStatusError("persistence", "delete", {key="TEST"})
+ end)
+
+-- This tests the 'insert' verb of the persistence API
+_AFT.testVerbStatusError(testPrefix.."insert-with-wrong_key","persistence","insert", {wrong_key="TESTinsert-wrong-key", value="TESTinsert-wrong-key"}, nil,
+ function()
+ _AFT.assertVerbStatusError("persistence", "delete", {key="TESTinsert-wrong-key"})
+ end)
+
+-- This tests the 'insert' verb of the persistence API
+_AFT.testVerbStatusError(testPrefix.."insert-with-wrong_value","persistence","insert", {key="TESTinsert-wrong-value", wrong_value="TESTinsert-wrong-value"}, nil,
+ function()
+ _AFT.assertVerbStatusError("persistence", "delete", {key="TESTinsert-wrong-value"})
+ end)
+
+-- This tests the 'delete' verb of the persistence API
+_AFT.testVerbStatusError(testPrefix.."delete-unknow-key","persistence","delete", {key="TESTdelete-unknow-key"}, nil, nil)
+
+-- This tests the 'insert' verb of the persistence API
+_AFT.testVerbStatusError(testPrefix.."insert-with-anything","persistence","insert", {value="TESTinsert-with-anything"}, nil, nil)
+
+-- This tests the 'update' verb of the persistence API
+_AFT.testVerbStatusError(testPrefix.."update-unkwon-null-value","persistence","update", {key=null}, nil, nil)