-
Notifications
You must be signed in to change notification settings - Fork 223
/
SimpleFacebookRegistrationHandler_Test.cls
161 lines (118 loc) · 5.33 KB
/
SimpleFacebookRegistrationHandler_Test.cls
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/**
FaceBook Registration Handler example TEST
**/
@isTest
public class SimpleFacebookRegistrationHandler_Test {
/**
* Positive test for canCreateUser where all the required information is provided
**/
testmethod public static void testCanCreateUser() {
SimpleFacebookRegistrationHandler handler = new SimpleFacebookRegistrationHandler();
Auth.UserData data = createUser('test@example.com','John','Adams');
System.Assert(handler.canCreateUser(data),'Handler should be able to create this user');
}
/**
* Negative test for canCreateUser because insufficient detail is available
**/
testmethod public static void testCanCreateUserNegative() {
SimpleFacebookRegistrationHandler handler = new SimpleFacebookRegistrationHandler();
Auth.UserData data = createUser(null,'Thomas','Jones-Drew');
System.Assert(!handler.canCreateUser(data),'Handler should not be able to create user with missing email');
}
/**
* Scenario where we want to provision an Internal User from Facebook
**/
testmethod public static void testCreateInternalUser() {
SimpleFacebookRegistrationHandler handler = new SimpleFacebookRegistrationHandler();
Auth.UserData data = createUser('tjones@example.com','Thomas','Jones-Drew');
Test.startTest();
User theUser = handler.createUser(null, data);
Test.stopTest();
validate(theUser,data);
}
/**
* Scenario where we don't have enough detail to create a User end-to-end
**/
testmethod public static void testCreateInternalUserNegative() {
SimpleFacebookRegistrationHandler handler = new SimpleFacebookRegistrationHandler();
Auth.UserData data = createUser(null,'Thomas','Jones-Drew');
Test.startTest();
User theUser = handler.createUser(null, data);
Test.stopTest();
System.Assert(theUser==null,'User should be null for negative case');
}
/**
* Simple direct test of the UpdateUser method. Create the user first
* and then attempt to update some properties.
**/
testMethod public static void testUpdateUser() {
SimpleFacebookRegistrationHandler handler = new SimpleFacebookRegistrationHandler();
Auth.UserData data = createUser('tjones@example.com','Thomas','Jones-Drew');
User theUser = handler.createUser(null, data);
insert theUser;
Test.startTest();
validate(theUser,data);
data.firstName='Tom';
handler.updateUser(theUser.id, null, data);
User theUpdatedUser = [SELECT Id,firstName,Email,LastName
from User
Where Id = :theUser.id];
validate(theUpdatedUser,data);
Test.stopTest();
}
/**
* Simple scenario to create a Community user
**/
testmethod public static void testCreateCommunityUser() {
SimpleFacebookRegistrationHandler handler = new SimpleFacebookRegistrationHandler();
Auth.UserData data = createUser('tjones@example.com','Thomas','Jones-Drew');
Test.startTest();
String theCommunityId = '00000001';
data.attributeMap.put('sfdc_networkid',theCommunityId);
Account testAccount = new Account();
testAccount.Name = 'Test Account';
insert testAccount;
data.attributeMap.put('accountId',testAccount.id);
User theUser = handler.createUser(null, data);
Test.stopTest();
validate(theUser,data);
// Additional validations for Community User
System.Assert(theUser.ContactId!=null,'Contact must be set for user');
}
/**
* Helper method to Validate the the User we've created
*
* @param theUser - the User that we created
* @param data - the original AuthData supplied by FaceBook
**/
private static void validate(User theUser, Auth.UserData data) {
System.Assert(theUser!=null,'User must not be null');
System.AssertEquals(theUser.email,data.email,'Email address must be the same');
System.AssertEquals(theUser.FirstName,data.FirstName,'First name must match');
System.AssertEquals(theUser.LastName,data.LastName,'Last name must match');
}
/**
* Helper method to instantiate the handler UserData
*
* @param email
* @param lastName
* @param firstName
* @return Auth.UserData that looks like what we expect from FaceBook
**/
private static Auth.UserData createUser(String email,String lastName, String firstName) {
Map<String, String> attributeMap = new Map<String,String>();
String identifier = lastName+System.currentTimeMillis();
String locale = 'en_US';
return new Auth.UserData( identifier,
firstName,
lastName,
'', // fullname
email,
'', // link
'', // userName
locale,
'', // provider
'', // siteLoginUrl
attributeMap);
}
}