tests/testthat/test_post.R

context("POST get_message_body")

test_that('only "in": "body" parameter is found', {
    op_def <- list(parameters = list( list(`in` = "body", name = "param1") ))

    expect <- structure("{}", class = "json")
    x <- setNames(list(), character())
    expect_identical(expect , get_message_body(op_def, x))
    x <- list(param0 = "bad")
    expect_identical(expect, get_message_body(op_def, x))

    expect <- structure('"ok"', class = "json")
    x <- list(param1 = "ok")
    expect_identical(expect, get_message_body(op_def, x))
    x <- list(param0 = "bad", param1 = "ok")
    expect_identical(expect, get_message_body(op_def, x))

})

test_that('several "in": "body" parameters work', {
    op_def <- list(
        parameters = list(
            list(`in` = "body", name = "param1"),
            list(`in` = "body", name = "param2")
        )
    )

    expect <- structure("{}", class = "json")
    x <- setNames(list(), character())
    expect_identical(expect, get_message_body(op_def, x))
    x <- list(param0 = "bad")
    expect_identical(expect, get_message_body(op_def, x))

    expect <- structure('"ok"', class = "json")
    x <- list(param1 = "ok")
    expect_identical(expect, get_message_body(op_def, x))
    x <- list(param2 = "ok")
    expect_identical(expect, get_message_body(op_def, x))
    x <- list(param0 = "bad", param2 = "ok")
    expect_identical(expect, get_message_body(op_def, x))

    expect <- x <- list(param1 = "ok1", param2 = "ok2")
    expect_identical(expect, jsonlite::fromJSON(get_message_body(op_def, x)))
})

test_that("unboxing works", {
    op_def <- list(parameters = list( list(`in` = "body", name = "param1") ))

    expect <- structure('"ok"', class = "json")
    x <- list(param1 = "ok")
    expect_identical(expect, get_message_body(op_def, x))

    expect <- structure('["ok"]', class = "json")
    x <- list(param1 = I("ok"))
    expect_identical(expect, get_message_body(op_def, x))

    expect <- structure('["ok", "ok"]', class = "json")
    x <- list(param1 = c("ok", "ok"))
    expect_identical(expect, get_message_body(op_def, x))
    x <- list(param1 = I(c("ok", "ok")))
    expect_identical(expect, get_message_body(op_def, x))

    expect <- structure('[\n  "ok"\n]', class = "json")
    x <- list(param1 = list("ok"))
    expect_identical(expect, get_message_body(op_def, x))

    expect <- structure('[\n  "ok",\n  "ok"\n]', class = "json")
    x <- list(param1 = list("ok", "ok"))
    expect_identical(expect, get_message_body(op_def, x))
})

test_that("formData works", {
    op_def <- list(
        consumes = "multipart/form-data",
        parameters = list( list(`in` = "formData", name = "param1") )
    )

    expect_identical(list(), get_message_body(op_def, list()))

    x <- list(param1 = "foo")
    expect_identical(x, get_message_body(op_def, x))

    file.create(fl <- tempfile())
    x = list(param1 = httr::upload_file(fl))
    expect_identical(x, get_message_body(op_def, x))
})
bergant/rapiclient documentation built on April 28, 2024, 7:34 a.m.