1 FakeHttpRequest <- R6::R6Class(
7 serverMaxElementsPerRequest = NULL,
11 URLIsProperlyConfigured = NULL,
12 expectedQueryFilters = NULL,
13 queryFiltersAreCorrect = NULL,
14 requestHeaderContainsAuthorizationField = NULL,
15 requestHeaderContainsDestinationField = NULL,
16 requestHeaderContainsRangeField = NULL,
17 requestHeaderContainsContentTypeField = NULL,
18 JSONEncodedBodyIsProvided = NULL,
19 requestBodyIsProvided = NULL,
21 numberOfGETRequests = NULL,
22 numberOfDELETERequests = NULL,
23 numberOfPUTRequests = NULL,
24 numberOfPOSTRequests = NULL,
25 numberOfMOVERequests = NULL,
27 initialize = function(expectedURL = NULL,
28 serverResponse = NULL,
29 expectedFilters = NULL)
31 if(is.null(serverResponse))
33 self$content <- list()
34 self$content$status_code <- 200
37 self$content <- serverResponse
39 self$expectedURL <- expectedURL
40 self$URLIsProperlyConfigured <- FALSE
41 self$expectedQueryFilters <- expectedFilters
42 self$queryFiltersAreCorrect <- FALSE
43 self$requestHeaderContainsAuthorizationField <- FALSE
44 self$requestHeaderContainsDestinationField <- FALSE
45 self$requestHeaderContainsRangeField <- FALSE
46 self$requestHeaderContainsContentTypeField <- FALSE
47 self$JSONEncodedBodyIsProvided <- FALSE
48 self$requestBodyIsProvided <- FALSE
50 self$numberOfGETRequests <- 0
51 self$numberOfDELETERequests <- 0
52 self$numberOfPUTRequests <- 0
53 self$numberOfPOSTRequests <- 0
54 self$numberOfMOVERequests <- 0
56 self$serverMaxElementsPerRequest <- 5
59 exec = function(verb, url, headers = NULL, body = NULL, query = NULL,
60 limit = NULL, offset = NULL, retryTimes = 0)
62 private$validateURL(url)
63 private$validateHeaders(headers)
64 private$validateFilters(queryFilters)
65 private$validateBody(body)
68 self$numberOfGETRequests <- self$numberOfGETRequests + 1
69 else if(verb == "POST")
70 self$numberOfPOSTRequests <- self$numberOfPOSTRequests + 1
71 else if(verb == "PUT")
72 self$numberOfPUTRequests <- self$numberOfPUTRequests + 1
73 else if(verb == "DELETE")
74 self$numberOfDELETERequests <- self$numberOfDELETERequests + 1
75 else if(verb == "MOVE")
76 self$numberOfMOVERequests <- self$numberOfMOVERequests + 1
77 else if(verb == "PROPFIND")
82 if(!is.null(self$content$items_available))
83 return(private$getElements(offset, limit))
91 validateURL = function(url)
93 if(!is.null(self$expectedURL) && url == self$expectedURL)
94 self$URLIsProperlyConfigured <- TRUE
97 validateHeaders = function(headers)
99 if(!is.null(headers$Authorization))
100 self$requestHeaderContainsAuthorizationField <- TRUE
102 if(!is.null(headers$Destination))
103 self$requestHeaderContainsDestinationField <- TRUE
105 if(!is.null(headers$Range))
106 self$requestHeaderContainsRangeField <- TRUE
108 if(!is.null(headers[["Content-Type"]]))
109 self$requestHeaderContainsContentTypeField <- TRUE
112 validateBody = function(body)
116 self$requestBodyIsProvided <- TRUE
118 if(class(body) == "json")
119 self$JSONEncodedBodyIsProvided <- TRUE
123 validateFilters = function(filters)
125 if(!is.null(self$expectedQueryFilters) &&
127 all.equal(unname(filters), self$expectedQueryFilters))
129 self$queryFiltersAreCorrect <- TRUE
133 getElements = function(offset, limit)
136 elementCount <- self$serverMaxElementsPerRequest
140 if(offset > self$content$items_available)
141 stop("Invalid offset")
147 if(limit < self$serverMaxElementsPerRequest)
148 elementCount <- limit - 1
151 serverResponse <- list()
152 serverResponse$items_available <- self$content$items_available
153 serverResponse$items <- self$content$items[start:(start + elementCount - 1)]
155 if(start + elementCount > self$content$items_available)
157 elementCount = self$content$items_available - start
158 serverResponse$items <- self$content$items[start:(start + elementCount)]