The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
{
  "data": {
    "files": [

    ],
    "chunks": [

    ]
  },
  "tests": [
    {
      "description": "Upload when length is 0",
      "act": {
        "operation": "upload",
        "arguments": {
          "filename": "filename",
          "source": {
            "$hex": ""
          },
          "options": {
            "chunkSizeBytes": 4
          }
        }
      },
      "assert": {
        "result": "&result",
        "data": [
          {
            "insert": "expected.files",
            "documents": [
              {
                "_id": "*result",
                "length": 0,
                "chunkSize": 4,
                "uploadDate": "*actual",
                "md5": "d41d8cd98f00b204e9800998ecf8427e",
                "filename": "filename"
              }
            ]
          }
        ]
      }
    },
    {
      "description": "Upload when length is 1",
      "act": {
        "operation": "upload",
        "arguments": {
          "filename": "filename",
          "source": {
            "$hex": "11"
          },
          "options": {
            "chunkSizeBytes": 4
          }
        }
      },
      "assert": {
        "result": "&result",
        "data": [
          {
            "insert": "expected.files",
            "documents": [
              {
                "_id": "*result",
                "length": 1,
                "chunkSize": 4,
                "uploadDate": "*actual",
                "md5": "47ed733b8d10be225eceba344d533586",
                "filename": "filename"
              }
            ]
          },
          {
            "insert": "expected.chunks",
            "documents": [
              {
                "_id": "*actual",
                "files_id": "*result",
                "n": 0,
                "data": {
                  "$hex": "11"
                }
              }
            ]
          }
        ]
      }
    },
    {
      "description": "Upload when length is 3",
      "act": {
        "operation": "upload",
        "arguments": {
          "filename": "filename",
          "source": {
            "$hex": "112233"
          },
          "options": {
            "chunkSizeBytes": 4
          }
        }
      },
      "assert": {
        "result": "&result",
        "data": [
          {
            "insert": "expected.files",
            "documents": [
              {
                "_id": "*result",
                "length": 3,
                "chunkSize": 4,
                "uploadDate": "*actual",
                "md5": "bafae3a174ab91fc70db7a6aa50f4f52",
                "filename": "filename"
              }
            ]
          },
          {
            "insert": "expected.chunks",
            "documents": [
              {
                "_id": "*actual",
                "files_id": "*result",
                "n": 0,
                "data": {
                  "$hex": "112233"
                }
              }
            ]
          }
        ]
      }
    },
    {
      "description": "Upload when length is 4",
      "act": {
        "operation": "upload",
        "arguments": {
          "filename": "filename",
          "source": {
            "$hex": "11223344"
          },
          "options": {
            "chunkSizeBytes": 4
          }
        }
      },
      "assert": {
        "result": "&result",
        "data": [
          {
            "insert": "expected.files",
            "documents": [
              {
                "_id": "*result",
                "length": 4,
                "chunkSize": 4,
                "uploadDate": "*actual",
                "md5": "7e7c77cff5705d1f7574a25ef6662117",
                "filename": "filename"
              }
            ]
          },
          {
            "insert": "expected.chunks",
            "documents": [
              {
                "_id": "*actual",
                "files_id": "*result",
                "n": 0,
                "data": {
                  "$hex": "11223344"
                }
              }
            ]
          }
        ]
      }
    },
    {
      "description": "Upload when length is 5",
      "act": {
        "operation": "upload",
        "arguments": {
          "filename": "filename",
          "source": {
            "$hex": "1122334455"
          },
          "options": {
            "chunkSizeBytes": 4
          }
        }
      },
      "assert": {
        "result": "&result",
        "data": [
          {
            "insert": "expected.files",
            "documents": [
              {
                "_id": "*result",
                "length": 5,
                "chunkSize": 4,
                "uploadDate": "*actual",
                "md5": "283d4fea5dded59cf837d3047328f5af",
                "filename": "filename"
              }
            ]
          },
          {
            "insert": "expected.chunks",
            "documents": [
              {
                "_id": "*actual",
                "files_id": "*result",
                "n": 0,
                "data": {
                  "$hex": "11223344"
                }
              },
              {
                "_id": "*actual",
                "files_id": "*result",
                "n": 1,
                "data": {
                  "$hex": "55"
                }
              }
            ]
          }
        ]
      }
    },
    {
      "description": "Upload when length is 8",
      "act": {
        "operation": "upload",
        "arguments": {
          "filename": "filename",
          "source": {
            "$hex": "1122334455667788"
          },
          "options": {
            "chunkSizeBytes": 4
          }
        }
      },
      "assert": {
        "result": "&result",
        "data": [
          {
            "insert": "expected.files",
            "documents": [
              {
                "_id": "*result",
                "length": 8,
                "chunkSize": 4,
                "uploadDate": "*actual",
                "md5": "dd254cdc958e53abaa67da9f797125f5",
                "filename": "filename"
              }
            ]
          },
          {
            "insert": "expected.chunks",
            "documents": [
              {
                "_id": "*actual",
                "files_id": "*result",
                "n": 0,
                "data": {
                  "$hex": "11223344"
                }
              },
              {
                "_id": "*actual",
                "files_id": "*result",
                "n": 1,
                "data": {
                  "$hex": "55667788"
                }
              }
            ]
          }
        ]
      }
    },
    {
      "description": "Upload when contentType is provided",
      "act": {
        "operation": "upload",
        "arguments": {
          "filename": "filename",
          "source": {
            "$hex": "11"
          },
          "options": {
            "chunkSizeBytes": 4,
            "contentType": "image/jpeg"
          }
        }
      },
      "assert": {
        "result": "&result",
        "data": [
          {
            "insert": "expected.files",
            "documents": [
              {
                "_id": "*result",
                "length": 1,
                "chunkSize": 4,
                "uploadDate": "*actual",
                "md5": "47ed733b8d10be225eceba344d533586",
                "filename": "filename",
                "contentType": "image/jpeg"
              }
            ]
          },
          {
            "insert": "expected.chunks",
            "documents": [
              {
                "_id": "*actual",
                "files_id": "*result",
                "n": 0,
                "data": {
                  "$hex": "11"
                }
              }
            ]
          }
        ]
      }
    },
    {
      "description": "Upload when metadata is provided",
      "act": {
        "operation": "upload",
        "arguments": {
          "filename": "filename",
          "source": {
            "$hex": "11"
          },
          "options": {
            "chunkSizeBytes": 4,
            "metadata": {
              "x": 1
            }
          }
        }
      },
      "assert": {
        "result": "&result",
        "data": [
          {
            "insert": "expected.files",
            "documents": [
              {
                "_id": "*result",
                "length": 1,
                "chunkSize": 4,
                "uploadDate": "*actual",
                "md5": "47ed733b8d10be225eceba344d533586",
                "filename": "filename",
                "metadata": {
                  "x": 1
                }
              }
            ]
          },
          {
            "insert": "expected.chunks",
            "documents": [
              {
                "_id": "*actual",
                "files_id": "*result",
                "n": 0,
                "data": {
                  "$hex": "11"
                }
              }
            ]
          }
        ]
      }
    }
  ]
}