tests/testthat/test-faasr_parse.R

test_json <- readLines("test.json")

test_that("parse", {
  cwd <- getwd()
  on.exit(setwd(cwd))
  setwd(tempdir())

  writeLines(readLines("https://raw.githubusercontent.com/FaaSr/FaaSr-package/main/schema/FaaSr.schema.json"), "FaaSr.schema.json")
  

  ## "parse" validates the given JSON payload and returns the list of JSON.
  ## input should be JSON format (not a list at this time)
  
  ## 1. it validates JSON itself. 
  ## Write a simple json which is incorrect. In this example, there's an extra "
  faasr <- '{\"test\":\"abc\"\"}'
  # We can expect error from here
  expect_error(faasr_parse(faasr))
    
  ## 2. it valiates JSON with proper schema.
  ## schema can be found in here: https://github.com/FaaSr/FaaSr-package/blob/main/schema/FaaSr.schema.json
  ## you can find the json format here: https://github.com/spark0510/FaaSr-package/blob/branch21-unreachable/docs/setting.md#json-format
  
  ## use test.json in this example. This has no error.
  expect_no_error(faasr_parse(test_json))
  
  #################################################################################
  #################################################################################
  ## Now we should modify test_json for error detecting.
  ## You can make it as a list and edit it, as follows:
  json_list <- jsonlite::fromJSON(test_json)
  ## intentionally make an error: FaaSType should be Github but set it up as Lambda
  json_list$ComputeServers$My_Github_Account$FaaSType <- "Lambda"
  ## Turn the list back to the JSON forma
  test_json <- jsonlite::toJSON(json_list, auto_unbox=TRUE)
  
  ## We can expect errors at this time
  expect_error(faasr_parse(test_json))
  
  #################################################################################
  ## You should modify test_json as many times as you can to find errors.
  
  ## After all the test, clean up the file
  unlink("FaaSr.schema.json", recursive=TRUE, force=TRUE)
  setwd(cwd)
})

Try the FaaSr package in your browser

Any scripts or data that you put into this service are public.

FaaSr documentation built on June 22, 2024, 9:38 a.m.