You need to sign in to do that
Don't have an account?
Steven Wellman 23
System.NullPointerException: Attempt to de-reference a null object - AutoReg Handler - getting test coverage
I'm trying to write a test class so I can get over the 75% coverage (no coverage was written/included for this class). I'm getting the null object error on line 9 - System.assertEquals('testuserlong@salesforce.com', u.userName);
Any help would be appreciated! Thanks in advance.
Here's the Class:
global class AutocreatedRegHandler1516897783772 implements Auth.RegistrationHandler{
global boolean canCreateUser(Auth.UserData data) {
//TODO: Check whether we want to allow creation of a user with this data
//Set<String> s = new Set<String>{'usernamea', 'usernameb', 'usernamec'};
//if(s.contains(data.username)) {
//return true;
//}
return false;
}
global User createUser(Id portalId, Auth.UserData data){
if(!canCreateUser(data)) {
//Returning null or throwing an exception fails the SSO flow
return null;
}
//The user is authorized, so create their Salesforce user
User u = new User();
Profile p = [SELECT Id FROM profile WHERE name='Standard User'];
//TODO: Customize the username. Also check that the username doesn't already exist and
//possibly ensure there are enough org licenses to create a user. Must be 80 characters
//or less.
u.username = data.username + '@myorg.com';
u.email = data.email;
u.lastName = data.lastName;
u.firstName = data.firstName;
String alias = data.username;
//Alias must be 8 characters or less
if(alias.length() > 8) {
alias = alias.substring(0, 8);
}
u.alias = alias;
u.languagelocalekey = UserInfo.getLocale();
u.localesidkey = UserInfo.getLocale();
u.emailEncodingKey = 'UTF-8';
u.timeZoneSidKey = 'America/Los_Angeles';
u.profileId = p.Id;
return u;
}
global void updateUser(Id userId, Id portalId, Auth.UserData data){
User u = new User(id=userId);
//TODO: Customize the username. Must be 80 characters or less.
//u.username = data.username + '@myorg.com';
u.email = data.email;
u.lastName = data.lastName;
u.firstName = data.firstName;
//String alias = data.username;
//Alias must be 8 characters or less
//if(alias.length() > 8) {
//alias = alias.substring(0, 8);
//}
//u.alias = alias;
update(u);
}
}
Here's the Test Class:
@isTest
private class AutocreatedRegHandler1516897783772Test {
static testMethod void testCreateAndUpdateUser() {
AutocreatedRegHandler1516897783772 handler = new AutocreatedRegHandler1516897783772();
Auth.UserData sampleData = new Auth.UserData('testId', 'testFirst', 'testLast',
'testFirst testLast', 'testuser@example.org', null, 'testuserlong', 'en_US', 'facebook',
null, new Map<String, String>{'language' => 'en_US'});
User u = handler.createUser(null, sampleData);
System.assertEquals('testuserlong@salesforce.com', u.userName);
System.assertEquals('testuser@example.org', u.email);
System.assertEquals('testLast', u.lastName);
System.assertEquals('testFirst', u.firstName);
System.assertEquals('testuser', u.alias);
insert(u);
String uid = u.id;
sampleData = new Auth.UserData('testNewId', 'testNewFirst', 'testNewLast',
'testNewFirst testNewLast', 'testnewuser@example.org', null, 'testnewuserlong', 'en_US', 'facebook',
null, new Map<String, String>{});
handler.updateUser(uid, null, sampleData);
User updatedUser = [SELECT userName, email, firstName, lastName, alias FROM user WHERE id=:uid];
System.assertEquals('testnewuserlong@salesforce.com', updatedUser.userName);
System.assertEquals('testnewuser@example.org', updatedUser.email);
System.assertEquals('testNewLast', updatedUser.lastName);
System.assertEquals('testNewFirst', updatedUser.firstName);
System.assertEquals('testnewu', updatedUser.alias);
}
}
Any help would be appreciated! Thanks in advance.
Here's the Class:
global class AutocreatedRegHandler1516897783772 implements Auth.RegistrationHandler{
global boolean canCreateUser(Auth.UserData data) {
//TODO: Check whether we want to allow creation of a user with this data
//Set<String> s = new Set<String>{'usernamea', 'usernameb', 'usernamec'};
//if(s.contains(data.username)) {
//return true;
//}
return false;
}
global User createUser(Id portalId, Auth.UserData data){
if(!canCreateUser(data)) {
//Returning null or throwing an exception fails the SSO flow
return null;
}
//The user is authorized, so create their Salesforce user
User u = new User();
Profile p = [SELECT Id FROM profile WHERE name='Standard User'];
//TODO: Customize the username. Also check that the username doesn't already exist and
//possibly ensure there are enough org licenses to create a user. Must be 80 characters
//or less.
u.username = data.username + '@myorg.com';
u.email = data.email;
u.lastName = data.lastName;
u.firstName = data.firstName;
String alias = data.username;
//Alias must be 8 characters or less
if(alias.length() > 8) {
alias = alias.substring(0, 8);
}
u.alias = alias;
u.languagelocalekey = UserInfo.getLocale();
u.localesidkey = UserInfo.getLocale();
u.emailEncodingKey = 'UTF-8';
u.timeZoneSidKey = 'America/Los_Angeles';
u.profileId = p.Id;
return u;
}
global void updateUser(Id userId, Id portalId, Auth.UserData data){
User u = new User(id=userId);
//TODO: Customize the username. Must be 80 characters or less.
//u.username = data.username + '@myorg.com';
u.email = data.email;
u.lastName = data.lastName;
u.firstName = data.firstName;
//String alias = data.username;
//Alias must be 8 characters or less
//if(alias.length() > 8) {
//alias = alias.substring(0, 8);
//}
//u.alias = alias;
update(u);
}
}
Here's the Test Class:
@isTest
private class AutocreatedRegHandler1516897783772Test {
static testMethod void testCreateAndUpdateUser() {
AutocreatedRegHandler1516897783772 handler = new AutocreatedRegHandler1516897783772();
Auth.UserData sampleData = new Auth.UserData('testId', 'testFirst', 'testLast',
'testFirst testLast', 'testuser@example.org', null, 'testuserlong', 'en_US', 'facebook',
null, new Map<String, String>{'language' => 'en_US'});
User u = handler.createUser(null, sampleData);
System.assertEquals('testuserlong@salesforce.com', u.userName);
System.assertEquals('testuser@example.org', u.email);
System.assertEquals('testLast', u.lastName);
System.assertEquals('testFirst', u.firstName);
System.assertEquals('testuser', u.alias);
insert(u);
String uid = u.id;
sampleData = new Auth.UserData('testNewId', 'testNewFirst', 'testNewLast',
'testNewFirst testNewLast', 'testnewuser@example.org', null, 'testnewuserlong', 'en_US', 'facebook',
null, new Map<String, String>{});
handler.updateUser(uid, null, sampleData);
User updatedUser = [SELECT userName, email, firstName, lastName, alias FROM user WHERE id=:uid];
System.assertEquals('testnewuserlong@salesforce.com', updatedUser.userName);
System.assertEquals('testnewuser@example.org', updatedUser.email);
System.assertEquals('testNewLast', updatedUser.lastName);
System.assertEquals('testNewFirst', updatedUser.firstName);
System.assertEquals('testnewu', updatedUser.alias);
}
}
You can get the test class how to write for the auth handler
https://github.com/salesforceidentity/social-signon-reghandler
- testCanCreateUser
- System.AssertException: Assertion Failed: Handler should be able to create this user
- line 7
- testCreateCommunityUser
- System.AssertException: Assertion Failed: User must not be null
- Class.AutocreatedRegHandler1516897783772Test.validate: line 116, column 1
- Class.AutocreatedRegHandler1516897783772Test.testCreateCommunityUser: line 102, column 1
- testCreateInternalUser
- System.AssertException: Assertion Failed: User must not be null
- Class.AutocreatedRegHandler1516897783772Test.validate: line 116, column 1
- Class.AutocreatedRegHandler1516897783772Test.testCreateInternalUser: line 35, column 1
- testUpdateUser
- System.NullPointerException: Attempt to de-reference a null object
- Class.AutocreatedRegHandler1516897783772Test.testUpdateUser: line 66, column 1
Thanks so much for your help! I truly appreciate it!