Skip to content
Snippets Groups Projects
Commit a345d1c4 authored by József Gyürüsi's avatar József Gyürüsi
Browse files

Changes from Alex:


Author: Aliaksandr Merzianiou <aliaksandr.merzianiou@epol-it.com>
Date:   Thu Jun 5 15:37:22 2025 +0200

    Json schema and unittests fixes

Change-Id: Iff28eedf89a9da66b5e5a1caa1b1604b31620b9d
Signed-off-by: default avatarJózsef Gyürüsi <jozsef.gyurusi@ericsson.com>
parent f86f315e
Branches master
No related tags found
No related merge requests found
......@@ -13,8 +13,9 @@ function AjvSelfTest() {
allErrors : true,
format : "full",
verbose : true,
inlineRefs : false
});
inlineRefs : false,
schemaId: 'auto'
});
/* selftest:
The selftest.pass[].inputs are known good.
The selftest.fail[].inputs are known bad.
......@@ -248,6 +249,158 @@ function AjvSelfTest() {
});
this.validate = function (schema) {
const draft04MetaSchema =
{
"id": "http://json-schema.org/draft-04/schema#",
"$schema": "http://json-schema.org/draft-04/schema#",
"description": "Core schema meta-schema",
"definitions": {
"schemaArray": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#" }
},
"positiveInteger": {
"type": "integer",
"minimum": 0
},
"positiveIntegerDefault0": {
"allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ]
},
"simpleTypes": {
"enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ]
},
"stringArray": {
"type": "array",
"items": { "type": "string" },
"minItems": 1,
"uniqueItems": true
}
},
"type": "object",
"properties": {
"id": {
"type": "string"
},
"$schema": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"default": {},
"multipleOf": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": true
},
"maximum": {
"type": "number"
},
"exclusiveMaximum": {
"type": "boolean",
"default": false
},
"minimum": {
"type": "number"
},
"exclusiveMinimum": {
"type": "boolean",
"default": false
},
"maxLength": { "$ref": "#/definitions/positiveInteger" },
"minLength": { "$ref": "#/definitions/positiveIntegerDefault0" },
"pattern": {
"type": "string",
"format": "regex"
},
"additionalItems": {
"anyOf": [
{ "type": "boolean" },
{ "$ref": "#" }
],
"default": {}
},
"items": {
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": {}
},
"maxItems": { "$ref": "#/definitions/positiveInteger" },
"minItems": { "$ref": "#/definitions/positiveIntegerDefault0" },
"uniqueItems": {
"type": "boolean",
"default": false
},
"maxProperties": { "$ref": "#/definitions/positiveInteger" },
"minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" },
"required": { "$ref": "#/definitions/stringArray" },
"additionalProperties": {
"anyOf": [
{ "type": "boolean" },
{ "$ref": "#" }
],
"default": {}
},
"definitions": {
"type": "object",
"additionalProperties": { "$ref": "#" },
"default": {}
},
"properties": {
"type": "object",
"additionalProperties": { "$ref": "#" },
"default": {}
},
"patternProperties": {
"type": "object",
"additionalProperties": { "$ref": "#" },
"default": {}
},
"dependencies": {
"type": "object",
"additionalProperties": {
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/stringArray" }
]
}
},
"enum": {
"type": "array",
"minItems": 1,
"uniqueItems": true
},
"type": {
"anyOf": [
{ "$ref": "#/definitions/simpleTypes" },
{
"type": "array",
"items": { "$ref": "#/definitions/simpleTypes" },
"minItems": 1,
"uniqueItems": true
}
]
},
"format": { "type": "string" },
"allOf": { "$ref": "#/definitions/schemaArray" },
"anyOf": { "$ref": "#/definitions/schemaArray" },
"oneOf": { "$ref": "#/definitions/schemaArray" },
"not": { "$ref": "#" }
},
"dependencies": {
"exclusiveMaximum": [ "maximum" ],
"exclusiveMinimum": [ "minimum" ]
},
"default": {}
}
// Register it manually
ajv.addMetaSchema(draft04MetaSchema, 'http://json-schema.org/draft-04/schema#');
var validateSchema = ajv.compile({
"$ref" : "http://json-schema.org/draft-04/schema#"
});
......
......@@ -21,7 +21,7 @@ function CDsRestAPIComm(p_extension, p_model) {
}
var schema = {
"$schema": "http://json-schema.org/draft-04/schema#",
// "$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"filter": {
"oneOf": [
......@@ -250,9 +250,10 @@ function CDsRestAPIComm(p_extension, p_model) {
allErrors : true,
format : "full",
verbose : true,
inlineRefs : false
inlineRefs : false
});
// ajv.addMetaSchema(require('htdocs/Libs/AJV/json-schema-draft-04.json'));
var validate = ajv.compile(schema);
this.ajaxCall = function (request, callback) {
......
......@@ -82,7 +82,7 @@ def rightClickLabel(driver, editorId):
time.sleep(0.25)
def clickInContextMenu(driver, text):
listElements = driver.find_element(By.CSS_SELECTOR, "#GuiEditor_ContextMenu > li")
listElements = driver.find_elements(By.CSS_SELECTOR, "#GuiEditor_ContextMenu > li")
for element in listElements:
if element.text == text:
element.click()
......@@ -103,7 +103,7 @@ def closeCustomDataEditor(driver):
# ---------- Connection creation ----------
def getNodeFromTreeByElements(driver, treeId, elements):
children = driver.find_element(By.CSS_SELECTOR, "#" + treeId + " > ul > li")
children = driver.find_elements(By.CSS_SELECTOR, "#" + treeId + " > ul > li")
nodeToReturn = None
for i in range(len(elements)):
missing = True
......@@ -118,31 +118,30 @@ def getNodeFromTreeByElements(driver, treeId, elements):
if "jstree-closed" in nodeToReturn.get_attribute("class"):
nodeToReturn.find_element(By.CLASS_NAME, "jstree-icon").click()
time.sleep(0.25)
children = nodeToReturn.find_element(By.CSS_SELECTOR, "ul > li")
return nodeToReturn
children = nodeToReturn.find_elements(By.CSS_SELECTOR, "ul > li")
return nodeToReturn.find_element(By.CLASS_NAME, "jstree-anchor")
def getNodeFromTreeByPath(driver, treeId, path):
children = driver.find_element(By.CSS_SELECTOR, "#" + treeId + " > ul > li")
children = driver.find_elements(By.CSS_SELECTOR, "#" + treeId + " > ul > li")
nodeToReturn = None
for i in range(len(path)):
if not path[i] < len(children): return None
nodeToReturn = children[path[i]]
if i < len(path) - 1:
if "jstree-closed" in nodeToReturn.get_attribute("class"):
nodeToReturn.find_element(By.CLASS_NAME, "jstree-icon").click()
nodeToReturn.find_elements(By.CLASS_NAME, "jstree-icon").click()
time.sleep(0.25)
children = nodeToReturn.find_element(By.CSS_SELECTOR, "ul > li")
return nodeToReturn
children = nodeToReturn.find_elements(By.CSS_SELECTOR, "ul > li")
return nodeToReturn.find_element(By.CLASS_NAME, "jstree-anchor")
def clickInTreeContextMenu(driver, node, menuText):
anchor = node.find_element(By.CLASS_NAME, "jstree-anchor")
def clickInTreeContextMenu(driver, anchor, menuText):
actions = ActionChains(driver)
actions.context_click(anchor)
actions.perform()
time.sleep(0.5)
contextMenu = driver.find_element(By.CLASS_NAME, "jstree-default-contextmenu")
items = contextMenu.find_element(By.TAG_NAME, "li")
items = contextMenu.find_elements(By.TAG_NAME, "li")
for element in items:
if menuText in element.text:
element.click()
......@@ -169,7 +168,7 @@ def dragAndDrop(driver, fromId, toId):
def addEditor(driver, className, radioButtonToSelect, buttonSuffix):
existingEditorIds = set()
existingEditors = driver.find_element(By.CLASS_NAME, className)
existingEditors = driver.find_elements(By.CLASS_NAME, className)
for editor in existingEditors:
editorId = editor.get_attribute("id")
existingEditorIds.add(editorId)
......@@ -181,7 +180,7 @@ def addEditor(driver, className, radioButtonToSelect, buttonSuffix):
time.sleep(0.25)
newEditorId = None
existingEditors = driver.find_element(By.CLASS_NAME, className)
existingEditors = driver.find_elements(By.CLASS_NAME, className)
for editor in existingEditors:
editorId = editor.get_attribute("id")
if editorId not in existingEditorIds:
......
......@@ -104,7 +104,7 @@ class RequestConsole_SetupHandlingTests(BaseTestCase):
def test_requestEditorTree_dragAtomicRequestWithinTheRequestObject(self):
init(self.driver, self.HTML_FILE)
treeElements = self.driver.find_element(By.XPATH, "//*[contains(@id, '_anchor')]") #for elem in treeElements: print elem.get_attribute('innerHTML')
treeElements = self.driver.find_elements(By.XPATH, "//*[contains(@id, '_anchor')]") #for elem in treeElements: print elem.get_attribute('innerHTML')
ActionChains(self.driver).drag_and_drop(treeElements[7], treeElements[8]).perform()
script = "code_editor = $('#RequestConsole_CodeEditor .CodeMirror')[0].CodeMirror; return code_editor.getValue();"
textInEditor = self.driver.execute_script(script)
......@@ -153,11 +153,11 @@ class RequestConsole_SetupHandlingTests(BaseTestCase):
def test_requestEditorTree_dragRequestFromHelpTree(self):
init(self.driver, self.HTML_FILE)
treeElements = self.driver.find_element(By.XPATH, "//*[contains(@id, '_anchor')]")
treeElements = self.driver.find_elements(By.XPATH, "//*[contains(@id, '_anchor')]")
ActionChains(self.driver).double_click(treeElements[0]).perform()
treeElementsAfterExpand = self.driver.find_element(By.XPATH, "//*[contains(@id, '_anchor')]")
treeElementsAfterExpand = self.driver.find_elements(By.XPATH, "//*[contains(@id, '_anchor')]")
ActionChains(self.driver).drag_and_drop(treeElementsAfterExpand[1], treeElements[8]).perform()
script = "code_editor = $('#RequestConsole_CodeEditor .CodeMirror')[0].CodeMirror; return code_editor.getValue();"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment