@@ -3,6 +3,51 @@ var fs = require('fs')
33var li = require ( 'li' )
44var ldnode = require ( '../index' )
55var rm = require ( './test-utils' ) . rm
6+ var RSVP = require ( 'rsvp' )
7+
8+ var suffixAcl = '.acl'
9+ var suffixMeta = '.meta'
10+ var ldpServer = ldnode ( {
11+ root : __dirname + '/resources'
12+ } )
13+ var server = supertest ( ldpServer )
14+
15+ /**
16+ * Creates a new test basic container via an LDP POST
17+ * (located in `test/resources/{containerName}`)
18+ * @method createTestContainer
19+ * @param containerName {String} Container name used as slug, no leading `/`
20+ * @return {RSVP.Promise } Promise obj, for use with Mocha's `before()` etc
21+ */
22+ function createTestContainer ( containerName ) {
23+ return new RSVP . Promise ( function ( resolve , reject ) {
24+ server . post ( '/' )
25+ . set ( 'content-type' , 'text/turtle' )
26+ . set ( 'slug' , containerName )
27+ . set ( 'link' , '<http://www.w3.org/ns/ldp#BasicContainer>; rel="type"' )
28+ . set ( 'content-type' , 'text/turtle' )
29+ . end ( function ( error , res ) {
30+ error ? reject ( error ) : resolve ( res )
31+ } )
32+ } )
33+ }
34+
35+ /**
36+ * Creates a new turtle test resource via an LDP PUT
37+ * (located in `test/resources/{resourceName}`)
38+ * @method createTestResource
39+ * @param resourceName {String} Resource name (should have a leading `/`)
40+ * @return {RSVP.Promise } Promise obj, for use with Mocha's `before()` etc
41+ */
42+ function createTestResource ( resourceName ) {
43+ return new RSVP . Promise ( function ( resolve , reject ) {
44+ server . put ( resourceName )
45+ . set ( 'content-type' , 'text/turtle' )
46+ . end ( function ( error , res ) {
47+ error ? reject ( error ) : resolve ( res )
48+ } )
49+ } )
50+ }
651
752describe ( 'HTTP APIs' , function ( ) {
853 var emptyResponse = function ( res ) {
@@ -35,15 +80,6 @@ describe('HTTP APIs', function () {
3580 return handler
3681 }
3782
38- var ldpServer = ldnode ( {
39- root : __dirname + '/resources'
40- } )
41-
42- var suffixAcl = '.acl'
43- var suffixMeta = '.meta'
44-
45- var server = supertest ( ldpServer )
46-
4783 describe ( 'GET Root container' , function ( ) {
4884 it ( 'should have Access-Control-Allow-Origin as the req.Origin' , function ( done ) {
4985 server . get ( '/' )
@@ -265,29 +301,64 @@ describe('HTTP APIs', function () {
265301 . set ( 'content-type' , 'text/turtle' )
266302 . expect ( hasHeader ( 'describedBy' , 'baz.ttl' + suffixMeta ) )
267303 . expect ( hasHeader ( 'acl' , 'baz.ttl' + suffixAcl ) )
268- . expect ( function ( ) {
269- fs . unlinkSync ( __dirname + '/resources/foo/bar/baz.ttl' )
270- fs . rmdirSync ( __dirname + '/resources/foo/bar/' )
271- fs . rmdirSync ( __dirname + '/resources/foo/' )
272- } )
273304 . expect ( 201 , done )
274305 } )
275- it ( 'should return 409 code when trying to put to a container' , function ( done ) {
276- server . put ( '/' )
277- . expect ( 409 , done )
306+ it ( 'should return 409 code when trying to put to a container' ,
307+ function ( done ) {
308+ server . put ( '/' )
309+ . expect ( 409 , done )
310+ }
311+ )
312+ // Cleanup
313+ after ( function ( ) {
314+ rm ( '/foo/' )
278315 } )
279316 } )
280317
281318 describe ( 'DELETE API' , function ( ) {
319+ before ( function ( ) {
320+ // Ensure all these are finished before running tests
321+ return RSVP . all ( [
322+ rm ( '/false-file-48484848' ) ,
323+ createTestContainer ( 'delete-test-empty-container' ) ,
324+ createTestResource ( '/put-resource-1.ttl' ) ,
325+ createTestContainer ( 'delete-test-non-empty' ) ,
326+ createTestResource ( '/delete-test-non-empty/test.ttl' )
327+ ] )
328+ } )
329+
282330 it ( 'should return 404 status when deleting a file that does not exists' ,
283331 function ( done ) {
284332 server . delete ( '/false-file-48484848' )
285333 . expect ( 404 , done )
286334 } )
335+
287336 it ( 'should delete previously PUT file' , function ( done ) {
288337 server . delete ( '/put-resource-1.ttl' )
289338 . expect ( 200 , done )
290339 } )
340+
341+ it ( 'should fail to delete non-empty containers' , function ( done ) {
342+ server . delete ( '/delete-test-non-empty/' )
343+ . expect ( 409 , done )
344+ } )
345+
346+ it ( 'should delete a new and empty container' , function ( done ) {
347+ server . delete ( '/delete-test-empty-container/' )
348+ . expect ( function ( ) {
349+ // Ensure container was deleted
350+ server . get ( '/delete-test-empty-container/' )
351+ . expect ( 404 )
352+ } )
353+ . end ( done )
354+ } )
355+
356+ after ( function ( ) {
357+ // Clean up after DELETE API tests
358+ rm ( '/put-resource-1.ttl' )
359+ rm ( '/delete-test-non-empty/' )
360+ rm ( '/delete-test-empty-container/' )
361+ } )
291362 } )
292363
293364 describe ( 'POST API' , function ( ) {
0 commit comments