b2862128c261f9cf8b8634ebcc384fe3113a286d
[arvados.git] / sdk / R / tests / testthat / test-HttpParser.R
1 context("Http Parser")
2
3
4 test_that("parseJSONResponse generates and returns JSON object from server response", {
5
6     JSONContent <- "{\"bar\":{\"foo\":[10]}}"
7     serverResponse <- list()
8     serverResponse$content <- charToRaw(JSONContent)
9     serverResponse$headers[["Content-Type"]] <- "application/json; charset=utf-8"
10     class(serverResponse) <- c("response")
11
12     parser <- HttpParser$new()
13
14     result <- parser$parseJSONResponse(serverResponse)
15     barExists <- !is.null(result$bar)
16
17     expect_that(barExists, is_true())
18     expect_that(unlist(result$bar$foo), equals(10))
19 }) 
20
21 test_that(paste("parseResponse generates and returns character vector",
22                 "from server response if outputType is text"), {
23
24     content <- "random text"
25     serverResponse <- list()
26     serverResponse$content <- charToRaw(content)
27     serverResponse$headers[["Content-Type"]] <- "text/plain; charset=utf-8"
28     class(serverResponse) <- c("response")
29
30     parser <- HttpParser$new()
31     parsedResponse <- parser$parseResponse(serverResponse, "text")
32
33     expect_that(parsedResponse, equals("random text"))
34 }) 
35
36
37 webDAVResponseSample = 
38     paste0("<?xml version=\"1.0\" encoding=\"UTF-8\"?><D:multistatus xmlns:",
39            "D=\"DAV:\"><D:response><D:href>/c=aaaaa-bbbbb-ccccccccccccccc</D",
40            ":href><D:propstat><D:prop><D:resourcetype><D:collection xmlns:D=",
41            "\"DAV:\"/></D:resourcetype><D:getlastmodified>Fri, 11 Jan 2018 1",
42            "1:11:11 GMT</D:getlastmodified><D:displayname></D:displayname><D",
43            ":supportedlock><D:lockentry xmlns:D=\"DAV:\"><D:lockscope><D:exc",
44            "lusive/></D:lockscope><D:locktype><D:write/></D:locktype></D:loc",
45            "kentry></D:supportedlock></D:prop><D:status>HTTP/1.1 200 OK</D:s",
46            "tatus></D:propstat></D:response><D:response><D:href>/c=aaaaa-bbb",
47            "bb-ccccccccccccccc/myFile.exe</D:href><D:propstat><D:prop><D:r",
48            "esourcetype></D:resourcetype><D:getlastmodified>Fri, 12 Jan 2018",
49            " 22:22:22 GMT</D:getlastmodified><D:getcontenttype>text/x-c++src",
50            "; charset=utf-8</D:getcontenttype><D:displayname>myFile.exe</D",
51            ":displayname><D:getcontentlength>25</D:getcontentlength><D:getet",
52            "ag>\"123b12dd1234567890\"</D:getetag><D:supportedlock><D:lockent",
53            "ry xmlns:D=\"DAV:\"><D:lockscope><D:exclusive/></D:lockscope><D:",
54            "locktype><D:write/></D:locktype></D:lockentry></D:supportedlock>",
55            "</D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:re",
56            "sponse></D:multistatus>")
57
58
59
60 test_that(paste("getFileNamesFromResponse returns file names belonging to specific",
61                 "collection parsed from webDAV server response"), {
62
63     serverResponse <- list()
64     serverResponse$content <- charToRaw(webDAVResponseSample)
65     serverResponse$headers[["Content-Type"]] <- "text/xml; charset=utf-8"
66     class(serverResponse) <- c("response")
67     url <- URLencode("https://webdav/c=aaaaa-bbbbb-ccccccccccccccc")
68
69     parser <- HttpParser$new()
70     result <- parser$getFileNamesFromResponse(serverResponse, url)
71     expectedResult <- "myFile.exe"
72     resultMatchExpected <- all.equal(result, expectedResult)
73
74     expect_that(resultMatchExpected, is_true())
75 }) 
76
77 test_that(paste("getFileSizesFromResponse returns file sizes",
78                 "parsed from webDAV server response"), {
79
80     serverResponse <- list()
81     serverResponse$content <- charToRaw(webDAVResponseSample)
82     serverResponse$headers[["Content-Type"]] <- "text/xml; charset=utf-8"
83     class(serverResponse) <- c("response")
84     url <- URLencode("https://webdav/c=aaaaa-bbbbb-ccccccccccccccc")
85
86     parser <- HttpParser$new()
87     expectedResult <- "25"
88     result <- parser$getFileSizesFromResponse(serverResponse, url)
89     resultMatchExpected <- result == expectedResult
90
91     expect_that(resultMatchExpected, is_true())
92 })