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 GET = function(url, headers = NULL, queryFilters = NULL, limit = NULL, offset = NULL)
61 private$validateURL(url)
62 private$validateHeaders(headers)
63 private$validateFilters(queryFilters)
64 self$numberOfGETRequests <- self$numberOfGETRequests + 1
66 if(!is.null(self$content$items_available))
68 return(private$getElements(offset, limit))
74 PUT = function(url, headers = NULL, body = NULL,
75 queryFilters = NULL, limit = NULL, offset = NULL)
77 private$validateURL(url)
78 private$validateHeaders(headers)
79 private$validateBody(body)
80 self$numberOfPUTRequests <- self$numberOfPUTRequests + 1
85 POST = function(url, headers = NULL, body = NULL,
86 queryFilters = NULL, limit = NULL, offset = NULL)
88 private$validateURL(url)
89 private$validateHeaders(headers)
90 private$validateBody(body)
91 self$numberOfPOSTRequests <- self$numberOfPOSTRequests + 1
96 DELETE = function(url, headers = NULL, body = NULL,
97 queryFilters = NULL, limit = NULL, offset = NULL)
99 private$validateURL(url)
100 private$validateHeaders(headers)
101 self$numberOfDELETERequests <- self$numberOfDELETERequests + 1
105 PROPFIND = function(url, headers = NULL)
107 private$validateURL(url)
108 private$validateHeaders(headers)
112 MOVE = function(url, headers = NULL)
114 private$validateURL(url)
115 private$validateHeaders(headers)
116 self$numberOfMOVERequests <- self$numberOfMOVERequests + 1
123 validateURL = function(url)
125 if(!is.null(self$expectedURL) && url == self$expectedURL)
126 self$URLIsProperlyConfigured <- TRUE
129 validateHeaders = function(headers)
131 if(!is.null(headers$Authorization))
132 self$requestHeaderContainsAuthorizationField <- TRUE
134 if(!is.null(headers$Destination))
135 self$requestHeaderContainsDestinationField <- TRUE
137 if(!is.null(headers$Range))
138 self$requestHeaderContainsRangeField <- TRUE
140 if(!is.null(headers[["Content-Type"]]))
141 self$requestHeaderContainsContentTypeField <- TRUE
144 validateBody = function(body)
146 if(!is.null(body) && class(body) == "json")
147 self$JSONEncodedBodyIsProvided <- TRUE
151 self$requestBodyIsProvided <- TRUE
153 if(class(body) == "json")
154 self$JSONEncodedBodyIsProvided <- TRUE
158 validateFilters = function(filters)
160 if(!is.null(self$expectedQueryFilters) &&
162 all.equal(unname(filters), self$expectedQueryFilters))
164 self$queryFiltersAreCorrect <- TRUE
168 getElements = function(offset, limit)
171 elementCount <- self$serverMaxElementsPerRequest
175 if(offset > self$content$items_available)
176 stop("Invalid offset")
182 if(limit < self$serverMaxElementsPerRequest)
183 elementCount <- limit - 1
186 serverResponse <- list()
187 serverResponse$items_available <- self$content$items_available
188 serverResponse$items <- self$content$items[start:(start + elementCount - 1)]
190 if(start + elementCount > self$content$items_available)
192 elementCount = self$content$items_available - start
193 serverResponse$items <- self$content$items[start:(start + elementCount)]