Search code examples
jsonschemaajv

ajv does not return when validating a valid json


I have the following schema:

 {
      "$schema": "http://json-schema.org/schema#",
      "$id": "http://api.hobnob.social/schemas/users/create.json",
      "title": "Create User Schema",
      "description": "For validating client-provided create user object",
      "type": "object",
      "properties": {
          "email": {
              "type": "string",
              "format": "email"
          },
          "password": { "type": "string" },
          "profile": { "$ref": "profile.json#" }
      },
      "required": ["email", "password"],
      "additionalProperties": false
}
{
      "$schema": "http://json-schema.org/schema#",
      "$id": "http://api.hobnob.social/schemas/users/profile.json",
      "title": "User Profile Schema",
      "description": "For validating client-provided user profile object when creating and/or updating an user",
      "type": "object",
      "properties": {
          "bio": { "type": "string" },
          "summary": { "type": "string" },
          "name": {
              "type": "object",
              "properties": {
                  "first": { "type": "string" },
                  "last": { "type": "string" },
                  "middle": { "type": "string" }
              },
              "additionalProperties": false
          }
      },
      "additionalProperties": false
}

I am using ajv to validate against it. I am getting the expected results in almost all cases. But when validating a json with either the bio or summary fields included (with type of string), no response comes from ajv at all.

E.g. I attempt to validate

{
    "email": "[email protected]",
    "password": "password",
    "profile": {
        "name": {
            "first": "firstname"
        },
        "bio":"this is a bio"
    }
}

and no response at all comes back.

I tried consolidating the schema but that made no difference. I'm hoping I have made some simple beginner mistake that someone may spot! I have spent many hours trying to work out what is going wrong, but after all my debugging I am no further forward.


Solution

  • I got this working somehow, but not sure why it started working.

    In my test script I added a line to delete the test index from elasticsearch. After that, all tests passed. I then removed the new line from my test script to see if it would stop working again, but it didn't.

    I'm guessing the problem was somehow related to elasticsearch...