| // |
| // GTMLoginItemsTest.m |
| // |
| // Copyright 2006-2008 Google Inc. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| // use this file except in compliance with the License. You may obtain a copy |
| // of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| // License for the specific language governing permissions and limitations under |
| // the License. |
| // |
| |
| #import "GTMSenTestCase.h" |
| #import "GTMLoginItems.h" |
| |
| // we don't really run this test because if someone had it in some automated |
| // tests, then if something did fail, it could leave things in the login items |
| // on the computer which could be a nasty surprise. |
| #define MODIFICATION_TESTS_ENABLED 0 |
| |
| |
| @interface GTMLoginItemsTest : GTMTestCase |
| @end |
| |
| static BOOL ItemsListHasPath(NSArray *items, NSString *path) { |
| NSDictionary *item = nil; |
| for (item in items) { |
| NSString *itemPath = [item objectForKey:kGTMLoginItemsPathKey]; |
| if (itemPath && [itemPath isEqual:path]) { |
| return YES; |
| } |
| } |
| return NO; |
| } |
| |
| @implementation GTMLoginItemsTest |
| |
| - (void)testNoModification { |
| |
| NSError *error = nil; |
| NSString *bogusAppPath = @"/Applications/AppThatDoesNotExist.app"; |
| NSString *bogusAppName = @"AppThatDoesNotExist"; |
| |
| // fetch the starting values |
| NSArray *initialItems = [GTMLoginItems loginItems:&error]; |
| XCTAssertNotNil(initialItems, @"shouldn't be nil (%@)", error); |
| XCTAssertFalse(ItemsListHasPath(initialItems, bogusAppPath), |
| @"bogusApp shouldn't be in list to start for test (%@)", |
| initialItems); |
| |
| // check by path |
| XCTAssertFalse([GTMLoginItems pathInLoginItems:bogusAppPath]); |
| |
| // check by name |
| XCTAssertFalse([GTMLoginItems itemWithNameInLoginItems:bogusAppName]); |
| |
| // remove it by path |
| [GTMLoginItems removePathFromLoginItems:bogusAppPath]; |
| NSArray *curItems = [GTMLoginItems loginItems:nil]; |
| XCTAssertEqualObjects(initialItems, curItems); |
| |
| // remove it by name |
| [GTMLoginItems removeItemWithNameFromLoginItems:bogusAppName]; |
| curItems = [GTMLoginItems loginItems:nil]; |
| XCTAssertEqualObjects(initialItems, curItems); |
| |
| } |
| |
| - (void)testModification { |
| |
| #if MODIFICATION_TESTS_ENABLED |
| |
| NSError *error = nil; |
| NSString *textEditPath = @"/Applications/TextEdit.app"; |
| NSString *textEditName = @"TextEdit"; |
| |
| // fetch the starting values |
| NSArray *initialItems = [GTMLoginItems loginItems:&error]; |
| XCTAssertNotNil(initialItems, @"shouldn't be nil (%@)", error); |
| XCTAssertFalse(ItemsListHasPath(initialItems, textEditPath), |
| @"textedit shouldn't be in list to start for test (%@)", |
| initialItems); |
| |
| // add textedit |
| [GTMLoginItems addPathToLoginItems:textEditPath hide:NO]; |
| NSArray *curItems = [GTMLoginItems loginItems:nil]; |
| XCTAssertNotEqualObjects(initialItems, curItems); |
| |
| // check by path |
| XCTAssertTrue([GTMLoginItems pathInLoginItems:textEditPath]); |
| |
| // check by name |
| XCTAssertTrue([GTMLoginItems itemWithNameInLoginItems:textEditName]); |
| |
| // remove it by path |
| [GTMLoginItems removePathFromLoginItems:textEditPath]; |
| curItems = [GTMLoginItems loginItems:nil]; |
| STAssertEqualObjects(initialItems, curItems); |
| |
| // check by path |
| XCTAssertFalse([GTMLoginItems pathInLoginItems:textEditPath]); |
| |
| // check by name |
| XCTAssertFalse([GTMLoginItems itemWithNameInLoginItems:textEditName]); |
| |
| // add textedit |
| [GTMLoginItems addPathToLoginItems:textEditPath hide:NO]; |
| curItems = [GTMLoginItems loginItems:nil]; |
| STAssertNotEqualObjects(initialItems, curItems); |
| |
| // check by path |
| XCTAssertTrue([GTMLoginItems pathInLoginItems:textEditPath]); |
| |
| // check by name |
| XCTAssertTrue([GTMLoginItems itemWithNameInLoginItems:textEditName]); |
| |
| // remove it by name |
| [GTMLoginItems removeItemWithNameFromLoginItems:textEditName]; |
| curItems = [GTMLoginItems loginItems:nil]; |
| XCTAssertEqualObjects(initialItems, curItems); |
| |
| // check by path |
| XCTAssertFalse([GTMLoginItems pathInLoginItems:textEditPath]); |
| |
| // check by name |
| XCTAssertFalse([GTMLoginItems itemWithNameInLoginItems:textEditName]); |
| |
| #endif // MODIFICATION_TESTS_ENABLED |
| |
| } |
| |
| @end |