5 // Created by Mike Mayo on 10/4/10.
6 // The OpenStack project is provided under the Apache 2.0 license.
15 @implementation JSONTests
17 - (void)testImageParsing {
19 NSString *jsonTest = @"{\"images\":[{\"id\":29,\"status\":\"ACTIVE\",\"updated\":\"2010-01-26T12:07:32-06:00\",\"name\":\"Windows Server 2003 R2 SP2 x86\"},{\"id\":41,\"status\":\"ACTIVE\",\"updated\":\"2010-09-20T09:08:35-05:00\",\"name\":\"Oracle EL JeOS Release 5 Update 3\"},{\"id\":62,\"status\":\"ACTIVE\",\"updated\":\"2010-09-27T10:58:11-05:00\",\"name\":\"Red Hat Enterprise Linux 5.5\"},{\"id\":53,\"status\":\"ACTIVE\",\"updated\":\"2010-06-27T20:13:08-05:00\",\"name\":\"Fedora 13 (Goddard)\"},{\"id\":187811,\"status\":\"ACTIVE\",\"updated\":\"2009-12-16T01:02:17-06:00\",\"name\":\"CentOS 5.4\"},{\"id\":4,\"status\":\"ACTIVE\",\"updated\":\"2009-08-26T14:59:52-05:00\",\"name\":\"Debian 5.0 (lenny)\"},{\"id\":10,\"status\":\"ACTIVE\",\"updated\":\"2009-08-26T14:59:54-05:00\",\"name\":\"Ubuntu 8.04.2 LTS (hardy)\"},{\"id\":17,\"status\":\"ACTIVE\",\"updated\":\"2009-12-15T15:43:59-06:00\",\"name\":\"Fedora 12 (Constantine)\"},{\"id\":23,\"status\":\"ACTIVE\",\"updated\":\"2010-01-26T12:05:53-06:00\",\"name\":\"Windows Server 2003 R2 SP2 x64\"},{\"id\":24,\"status\":\"ACTIVE\",\"updated\":\"2010-01-26T12:07:04-06:00\",\"name\":\"Windows Server 2008 SP2 x64\"},{\"id\":49,\"status\":\"ACTIVE\",\"updated\":\"2010-05-04T08:58:18-05:00\",\"name\":\"Ubuntu 10.04 LTS (lucid)\"},{\"id\":14362,\"status\":\"ACTIVE\",\"updated\":\"2009-11-06T05:09:40-06:00\",\"name\":\"Ubuntu 9.10 (karmic)\"},{\"id\":8,\"status\":\"ACTIVE\",\"updated\":\"2009-12-07T16:22:14-06:00\",\"name\":\"Ubuntu 9.04 (jaunty)\"},{\"id\":31,\"status\":\"ACTIVE\",\"updated\":\"2010-01-26T12:07:44-06:00\",\"name\":\"Windows Server 2008 SP2 x86\"},{\"id\":51,\"status\":\"ACTIVE\",\"updated\":\"2010-05-21T00:01:43-05:00\",\"name\":\"CentOS 5.5\"},{\"id\":14,\"status\":\"ACTIVE\",\"updated\":\"2009-12-15T15:37:22-06:00\",\"name\":\"Red Hat Enterprise Linux 5.4\"},{\"id\":19,\"status\":\"ACTIVE\",\"updated\":\"2009-12-15T15:43:39-06:00\",\"name\":\"Gentoo 10.1\"},{\"id\":28,\"status\":\"ACTIVE\",\"updated\":\"2010-01-26T12:07:17-06:00\",\"name\":\"Windows Server 2008 R2 x64\"},{\"id\":55,\"status\":\"ACTIVE\",\"updated\":\"2010-06-29T05:21:55-05:00\",\"name\":\"Arch 2010.05\"},{\"id\":40,\"status\":\"ACTIVE\",\"updated\":\"2010-09-19T21:07:45-05:00\",\"name\":\"Oracle EL Server Release 5 Update 4\"},{\"progress\":100,\"id\":3231266,\"status\":\"ACTIVE\",\"created\":\"2010-04-24T21:48:58-05:00\",\"updated\":\"2010-04-24T21:54:39-05:00\",\"name\":\"fedora12-image\",\"serverId\":193115}]}";
21 SBJSON *parser = [[SBJSON alloc] init];
22 NSArray *jsonObjects = [[parser objectWithString:jsonTest] objectForKey:@"images"];
23 NSMutableArray *objects = [NSMutableArray arrayWithCapacity:[jsonObjects count]];
25 for (int i = 0; i < [jsonObjects count]; i++) {
26 NSDictionary *dict = [jsonObjects objectAtIndex:i];
27 Image *image = [Image fromJSON:dict];
28 [objects addObject:image];
32 STAssertTrue([objects count] == 21, @"There should be 21 images parsed. Got %i instead.", [objects count]);
34 Image *image = [objects objectAtIndex:0];
35 STAssertTrue(image.identifier == 29, @"Image ID should be 29. Got %i instead.", image.identifier);
36 STAssertTrue([image.status isEqualToString:@"ACTIVE"], @"Image status should be ACTIVE. Got %@", image.status);
37 STAssertNotNil(image.updated, @"Image updated date should not be nil.");
38 STAssertTrue([image.name isEqualToString:@"Windows Server 2003 R2 SP2 x86"], @"Image name should be 'Windows Server 2003 R2 SP2 x86'. Got '%@'.", image.name);
42 - (void)testServerParsing {