/
FBTestSessionTests.m
99 lines (75 loc) · 3.18 KB
/
FBTestSessionTests.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
* Copyright 2012 Facebook
*
* 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 "FBTestSessionTests.h"
#import "FBTEstSession.h"
#import "FBTestBlocker.h"
#import "FBRequest.h"
#import <CommonCrypto/CommonDigest.h>
#if defined(FACEBOOKSDK_SKIP_TEST_SESSION_TESTS)
#pragma message ("warning: Skipping FBTestSessionTests")
#else
@interface FBTestSessionTests ()
- (int)countTestUsers;
@end
@implementation FBTestSessionTests
- (int)countTestUsers
{
// Get the number of test users. Use an FBTestSession without a user (and thus no
// access token), so we can specify our own access token.
FBTestSession *fqlSession = [FBTestSession sessionWithSharedUserWithPermissions:nil];
STAssertNil(fqlSession.accessToken, @"non-nil access token");
__block FBTestBlocker *blocker = [[FBTestBlocker alloc] init];
NSString *fqlQuery = [NSString stringWithFormat:@"SELECT id FROM test_account WHERE app_id = %@", fqlSession.testAppID];
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:
fqlQuery, @"q",
fqlSession.appAccessToken, @"access_token",
nil];
__block int count = 0;
FBRequest *request = [[[FBRequest alloc] initWithSession:fqlSession
graphPath:@"fql"
parameters:parameters
HTTPMethod:nil]
autorelease];
[request startWithCompletionHandler:
^(FBRequestConnection *connection, id result, NSError *error) {
STAssertNotNil(result, @"nil result");
STAssertNil(error, @"non-nil error");
STAssertTrue([result isKindOfClass:[NSDictionary class]], @"not dictionary");
id data = [result objectForKey:@"data"];
STAssertTrue([data isKindOfClass:[NSArray class]], @"not array");
count = [data count];
[blocker signal];
}];
[blocker wait];
[blocker release];
return count;
}
- (void)testSharedUserDoesntCreateUnnecessaryUsers
{
// Create a shared user
FBTestSession *session = [FBTestSession sessionWithSharedUserWithPermissions:nil];
[self loginSession:session];
[session close];
int startingUserCount = [self countTestUsers];
// Try getting another shared user.
session = [FBTestSession sessionWithSharedUserWithPermissions:nil];
[self loginSession:session];
int endingUserCount = [self countTestUsers];
STAssertEquals(startingUserCount, endingUserCount, @"differing counts");
[session close];
}
@end
#endif