@@ -79,14 +79,15 @@ class ClientTests: XCTestCase {
7979 } else {
8080 let items = JSON![ " items " ] as [ [ String : AnyObject ] ]
8181
82- var find = false
82+ var found = false
8383 for item in items {
8484 if ( item [ " name " ] as String ) == self . index. indexName {
85- find = true
85+ found = true
86+ break
8687 }
8788 }
8889
89- XCTAssertTrue ( find , " List indexes failed " )
90+ XCTAssertTrue ( found , " List indexes failed " )
9091 }
9192
9293 expectation. fulfill ( )
@@ -358,4 +359,90 @@ class ClientTests: XCTestCase {
358359
359360 waitForExpectationsWithTimeout ( expectationTimeout, handler: nil )
360361 }
362+
363+ func testKeyOperations( ) {
364+ let expectation = expectationWithDescription ( " testKeyOperations " )
365+ let object = [ " city " : " San Francisco " , " objectID " : " a/go/?à " ]
366+
367+ index. addObject ( object, block: { ( JSON, error) -> Void in
368+ if let error = error {
369+ XCTFail ( " Error during addObject: \( error) " )
370+ expectation. fulfill ( )
371+ } else {
372+ self . index. waitTask ( JSON![ " taskID " ] as Int , block: { ( JSON, error) -> Void in
373+ if let error = error {
374+ XCTFail ( " Error during waitTask: \( error) " )
375+ expectation. fulfill ( )
376+ } else {
377+ self . client. addUserKey ( [ " search " ] , block: { ( JSON, error) -> Void in
378+ if let error = error {
379+ XCTFail ( " Error during addUserKey: \( error) " )
380+ expectation. fulfill ( )
381+ } else {
382+ NSThread . sleepForTimeInterval ( 5 ) // Wait the backend
383+ self . client. getUserKeyACL ( JSON![ " key " ] as String , block: { ( JSON, error) -> Void in
384+ if let error = error {
385+ XCTFail ( " Error during getUserKeyACL: \( error) " )
386+ expectation. fulfill ( )
387+ } else {
388+ let acls = JSON![ " acl " ] as [ String ]
389+ XCTAssertEqual ( acls, [ " search " ] , " Add user key failed " )
390+
391+ self . client. updateUserKey ( JSON![ " value " ] as String , withACL: [ " addObject " ] , block: { ( JSON, error) -> Void in
392+ if let error = error {
393+ XCTFail ( " Error during updateUserKey: \( error) " )
394+ expectation. fulfill ( )
395+ } else {
396+ NSThread . sleepForTimeInterval ( 5 ) // Wait the backend
397+ self . client. getUserKeyACL ( JSON![ " key " ] as String , block: { ( JSON, error) -> Void in
398+ if let error = error {
399+ XCTFail ( " Error during getUserKeyACL: \( error) " )
400+ expectation. fulfill ( )
401+ } else {
402+ let acls = JSON![ " acl " ] as [ String ]
403+ XCTAssertEqual ( acls, [ " addObject " ] , " Update user key failed " )
404+
405+ let keyToDelete = JSON![ " value " ] as String
406+ self . client. deleteUserKey ( keyToDelete, block: { ( JSON, error) -> Void in
407+ if let error = error {
408+ XCTFail ( " Error during deleteUserKey: \( error) " )
409+ expectation. fulfill ( )
410+ } else {
411+ NSThread . sleepForTimeInterval ( 5 ) // Wait the backend
412+ self . client. listUserKeys ( { ( JSON, error) -> Void in
413+ if let error = error {
414+ XCTFail ( " Error during listUserKeys: \( error) " )
415+ } else {
416+ let keys = JSON![ " keys " ] as [ [ String : AnyObject ] ]
417+
418+ var found = false
419+ for key in keys {
420+ if ( key [ " value " ] as String ) == keyToDelete {
421+ found = true
422+ break ;
423+ }
424+ }
425+
426+ XCTAssertTrue ( !found, " DeleteUserKey failed " )
427+ }
428+
429+ expectation. fulfill ( )
430+ } )
431+ }
432+ } )
433+ }
434+ } )
435+ }
436+ } )
437+ }
438+ } )
439+ }
440+ } )
441+ }
442+ } )
443+ }
444+ } )
445+
446+ waitForExpectationsWithTimeout ( expectationTimeout, handler: nil )
447+ }
361448}
0 commit comments