I think that the user is only created, but not saved, and why he does not have an identifier.
The solution may be as follows:
void testSomething(){
def dc = new SomeController()
def loggedInUser = new User(username: "Bob").save()
dc.springSecurityService = [
encodePassword: 'password',
reauthenticate: { String u -> true},
loggedIn: true,
principal: loggedInUser]
dc.index() ... assertion....
There is an alternative:
void testSomething(){
def dc = new SomeController()
def loggedInUser = new User(...).save()
dc.metaClass.getLoggedInUser = { loggedInUser }
...
I would suggest the getLoggedInUser refactor:
private getLoggedInUser(){
return springSecurityService.currentUser
}
With this change you can write:
void testSomething(){
def dc = new SomeController()
def loggedInUser = new User(...).save()
dc.springSecurityService = [
encodePassword: 'password',
reauthenticate: { String u -> true},
loggedIn: true,
getCurrenUser: { loggedInUser }]
...
source
share