# Copyright (C) The Arvados Authors. All rights reserved. # # SPDX-License-Identifier: Apache-2.0 context("Http Parser") test_that("parseJSONResponse generates and returns JSON object from server response", { JSONContent <- "{\"bar\":{\"foo\":[10]}}" serverResponse <- list() serverResponse$content <- charToRaw(JSONContent) serverResponse$headers[["Content-Type"]] <- "application/json; charset=utf-8" class(serverResponse) <- c("response") parser <- HttpParser$new() result <- parser$parseJSONResponse(serverResponse) barExists <- !is.null(result$bar) expect_true(barExists) expect_that(unlist(result$bar$foo), equals(10)) }) test_that(paste("parseResponse generates and returns character vector", "from server response if outputType is text"), { content <- "random text" serverResponse <- list() serverResponse$content <- charToRaw(content) serverResponse$headers[["Content-Type"]] <- "text/plain; charset=utf-8" class(serverResponse) <- c("response") parser <- HttpParser$new() parsedResponse <- parser$parseResponse(serverResponse, "text") expect_that(parsedResponse, equals("random text")) }) webDAVResponseSample = paste0("/c=aaaaa-bbbbb-ccccccccccccccc/Fri, 11 Jan 2018 1", "1:11:11 GMTHTTP/1.1 200 OK/c=aaaaa-bbb", "bb-ccccccccccccccc/myFile.exeFri, 12 Jan 2018", " 22:22:22 GMTtext/x-c++src", "; charset=utf-8myFile.exe25\"123b12dd1234567890\"", "HTTP/1.1 200 OK") test_that(paste("getFileNamesFromResponse returns file names belonging to specific", "collection parsed from webDAV server response"), { serverResponse <- list() serverResponse$content <- charToRaw(webDAVResponseSample) serverResponse$headers[["Content-Type"]] <- "text/xml; charset=utf-8" class(serverResponse) <- c("response") url <- URLencode("https://webdav/c=aaaaa-bbbbb-ccccccccccccccc") parser <- HttpParser$new() result <- parser$getFileNamesFromResponse(serverResponse, url) expectedResult <- "myFile.exe" resultMatchExpected <- all.equal(result, expectedResult) expect_true(resultMatchExpected) }) test_that(paste("getFileSizesFromResponse returns file sizes", "parsed from webDAV server response"), { serverResponse <- list() serverResponse$content <- charToRaw(webDAVResponseSample) serverResponse$headers[["Content-Type"]] <- "text/xml; charset=utf-8" class(serverResponse) <- c("response") url <- URLencode("https://webdav/c=aaaaa-bbbbb-ccccccccccccccc") parser <- HttpParser$new() expectedResult <- "25" result <- parser$getFileSizesFromResponse(serverResponse, url) resultMatchExpected <- result == expectedResult expect_true(resultMatchExpected) })