Commit Graph

58 Commits

Author SHA1 Message Date
Greg Karékinian be33b0e195 Replace placeholder comment that I forgot to replace 2018-05-09 19:08:32 +02:00
Greg Karékinian df65190df8 Simply the request stubs, add comments
Remove the stubs that are not required, making everything easier to
understand
2018-05-09 18:42:04 +02:00
Greg Karékinian f14ef4dc21 Consider that the metadata has changed when the Last-Modified changes
Also adds a spec for it
2018-04-30 16:39:12 +02:00
Greg Karékinian 5da0d0b5c3 Delete unused methods 2018-04-30 15:44:49 +02:00
Greg Karékinian 454f02dfaf Rename the spec root description 2018-04-30 15:44:28 +02:00
Greg Karékinian 21f3a9f60f Remove all duplication the specs
S3 and Swift now run the same specs. The only difference is the before
block that defines the stubbed HTTP requests and the responses from the
Swift and S3 servers
2018-04-26 13:17:43 +02:00
Greg Karékinian 21dad2aba7 Get the metadata from Redis on a HEAD request
No need to hit the storage backend, we can set the response headers from
the data in Redis
2018-04-26 13:17:43 +02:00
Greg Karékinian 7bd45543f6 Set headers from the Redis metadata on a GET that results in a 304
Also add specs to check for the response headers
2018-04-26 13:17:43 +02:00
Greg Karékinian f083022e6d Get the ETag from Redis on a GET request
This prevents doing a network request when we would return a 304 anyway
2018-04-26 13:17:43 +02:00
basti 60c508fba9 Add Last-Modified date to document items in listings
Not in RS spec draft yet, see https://github.com/remotestorage/spec/issues/158 for discussion.
2018-03-12 16:32:00 +02:00
Garret Alfert 18670021b1 Handle out of sync metadata in Redis on PUTs
When the IF-MATCH comparison fails, we check the actual metadata on
the Swift server to be sure.
2018-01-05 06:49:42 +01:00
Garret Alfert 24ae9ad893 Allow for weak ETAGs with leading quote
The remoteStorage client currently surrounds all ETAGs with quotes, so
instead of W\"etag" it looks like "W\"etag".
2018-01-03 22:06:03 +01:00
Garret Alfert 8ffd15bb61 Ignore weak ETAG prefix when comparing MATCH headers
Our metadata only contains the actual ETAG value, so we need
to use only that when comparing it.
2018-01-03 21:31:25 +01:00
Greg Karékinian b68c5d8409 Merge pull request #94 from 5apps/feature/86-respond_with_201_on_create
Respond with status 201 when creating new objects
2016-08-08 14:47:07 +02:00
Garret Alfert 7a8694fd55 Respond with status 201 when creating new objects
closes #86
2016-08-05 17:43:47 +02:00
Garret Alfert 5891cb9cf0 Make sure to delete existing metadata on DELETE
fixes #80
2016-08-05 17:17:59 +02:00
Greg Karékinian ad0ea12059 Return 401 when getting an empty bearer token
For example:

Authorization: Bearer

The cause of the empty bearer also needs to be investigated
2016-07-20 17:27:44 +02:00
Garret Alfert 995ba52886 Log user's storage size in Redis 2016-06-13 13:18:10 +02:00
Garret Alfert c1d60586ec Improve some spec wordings 2016-06-03 01:08:52 +02:00
Garret Alfert 28b6a7f22d Merge branch 'master' into feature/update_to_recent_rs_spec
# Conflicts:
#	spec/swift/app_spec.rb
2016-06-02 22:21:16 +02:00
Garret Alfert a349db5243 Spec for directory listing of non-existing directories 2016-06-02 18:57:40 +02:00
Garret Alfert 576e4a9afb Specs for response headers on GET requests 2016-06-02 18:57:37 +02:00
Garret Alfert 16e51038b1 Send ETag of deleted item in header 2016-06-02 18:56:45 +02:00
Garret Alfert ed8061b594 Use content type "application/ld+json" for directory listings 2016-06-02 18:54:47 +02:00
Garret Alfert c897959029 Send "Precondition Failed" message body with 412 responses 2016-06-02 18:49:44 +02:00
Garret Alfert cc91b5c4cd Send "Not Found" message body with 404 responses (refs #42) 2016-06-02 13:19:06 +02:00
Garret Alfert 83d8f29a04 Send "Conflict" message body with 409 responses (closes #409) 2016-06-02 13:18:59 +02:00
Garret Alfert 9a9a9c79e5 Send "Unauthorized" message body with 401 responses (refs #42) 2016-06-02 13:18:51 +02:00
Garret Alfert df87deaf0b Don't fail when order of array is different 2016-03-04 22:48:50 +01:00
Garret Alfert 648f86e0f3 Fix typo in specs 2016-03-04 22:40:04 +01:00
Garret Alfert 1d39445ba9 Fix deleting metadata for empty subdirectories 2016-03-04 22:17:33 +01:00
Garret Alfert 5378826c6a Also use content checksum for ETag calculation
Timestamp is not enough, as it might be the same
for two consequent PUTs.
2016-03-04 22:17:25 +01:00
Garret Alfert 3590b7dedc Determine correct metadata key for objects in root dir 2016-03-04 20:47:41 +01:00
Garret Alfert 43ff83d26b Don't allow PUTS with Content-Range header 2016-03-04 19:33:00 +01:00
Garret Alfert fd3293025d ETags are quoted, doh 2016-03-04 19:32:36 +01:00
Garret Alfert d08bc45489 Don't use or create any directory objects in Swift 2016-03-04 15:33:28 +01:00
Garret Alfert 9b7b224f79 Use more explicit key name for items 2016-03-02 18:06:42 +01:00
Garret Alfert c2fd9bc6d0 Change Redis metadata key prefix to rs:m 2016-03-02 18:04:38 +01:00
Garret Alfert 88f2dceb27 Use single letters for Redis metadata keys
Saves 16 characters per document object and 10
characters per directory object
2016-03-02 15:00:33 +01:00
Garret Alfert 650da91a1d Shorten Redis metadata keys
Use rsm:<username>:<dir>:i instead of
rs_meta:<username>:<dir>:items
2016-03-02 14:43:28 +01:00
Garret Alfert 067f4a1553 Use shorter Redis key for dir backend config
rsc:db:username instead of rs_config:dir_backend:username
2016-03-02 14:33:48 +01:00
Garret Alfert ff25b40385 Save last modified timestamp for objects as well 2016-03-02 14:05:53 +01:00
Garret Alfert c730333143 Don't try to do put or delete requests to root dir in order to update etag 2016-02-02 18:07:12 +01:00
Garret Alfert 7084a50d1b Make dir_empty? method use Redis metadata 2016-01-29 16:45:17 +01:00
Garret Alfert 573dadf365 Respond with 503 when directory backend is locked 2016-01-29 16:18:49 +01:00
Garret Alfert a4673e9661 Use directory backend config from redis instead of config file 2016-01-29 16:18:09 +01:00
Garret Alfert 16dcc56fba No need to stub has_name_collision? anymore 2016-01-29 15:16:24 +01:00
Garret Alfert 4ca67c7ea9 Do collision detection via Redis metadata 2016-01-28 19:15:50 +01:00
Garret Alfert 15196ca4b9 Check IF_NONE_MATCH header for directory listings 2016-01-23 14:29:37 -05:00
Garret Alfert bec9f7a6cc Set ETag header for directory listings 2016-01-23 14:29:18 -05:00