File tree 3 files changed +25
-0
lines changed
tests/unit/api/websiteUsers
3 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -136,6 +136,10 @@ component displayName="Ad-hoc Task Manager Service" {
136
136
return true ;
137
137
}
138
138
139
+ if ( Len ( task .web_owner ?: " " ) ) {
140
+ $getWebsiteLoginService ().spoofUserLoginInBgThread ( task .web_owner );
141
+ }
142
+
139
143
if ( task .status == " running" || ! markTaskAsRunning ( taskId = arguments .taskId ) ) {
140
144
$raiseError ( error = {
141
145
type = " AdHoTaskManagerService.task.already.running"
Original file line number Diff line number Diff line change @@ -89,6 +89,21 @@ component displayName="Website login service" {
89
89
return false ;
90
90
}
91
91
92
+ /**
93
+ * For background threads, allows the thread to assume that a specific user is logged in
94
+ *
95
+ */
96
+ public function spoofUserLoginInBgThread ( required string userId ) {
97
+ var user = _getUserDao ().selectData (
98
+ filter = { id = arguments .userId , active = true }
99
+ , useCache = false
100
+ );
101
+
102
+ if ( user .recordCount ) {
103
+ request ._bgThreadUser = $helpers .queryRowToStruct ( user );
104
+ }
105
+ }
106
+
92
107
/**
93
108
* Impersonates a login
94
109
*
@@ -205,6 +220,9 @@ component displayName="Website login service" {
205
220
* If no user is logged in, an empty structure will be returned.
206
221
*/
207
222
public struct function getLoggedInUserDetails () autodoc = true {
223
+ if ( $getRequestContext ().isBackgroundThread () ) {
224
+ return request ._bgThreadUser ?: {};
225
+ }
208
226
var userDetails = _getSessionStorage ().getVar ( name = _getSessionKey (), default = {} );
209
227
210
228
return ! IsNull ( local .userDetails ) && IsStruct ( userDetails ) ? userDetails : {};
Original file line number Diff line number Diff line change @@ -471,6 +471,7 @@ component output="false" extends="tests.resources.HelperObjects.PresideTestCase"
471
471
mockUserDao = getMockbox ().createStub ();
472
472
mockResetDao = getMockbox ().createStub ();
473
473
mockUserLoginTokenDao = getMockbox ().createStub ();
474
+ mockRequestContext = getMockbox ().createStub ();
474
475
mockBCryptService = getMockBox ().createEmptyMock ( " preside.system.services.encryption.bcrypt.BCryptService" );
475
476
mockSysConfigService = getMockBox ().createEmptyMock ( " preside.system.services.configuration.SystemConfigurationService" );
476
477
mockEmailService = getMockBox ().createEmptyMock ( " preside.system.services.email.EmailService" );
@@ -490,10 +491,12 @@ component output="false" extends="tests.resources.HelperObjects.PresideTestCase"
490
491
mockActionsService .$( " promoteVisitorActionsToUserActions" , 1 );
491
492
service .$( " $recordWebsiteUserAction" );
492
493
service .$( " $announceInterception" );
494
+ service .$( " $getRequestContext" , mockRequestContext );
493
495
mockSessionStorage .$( " rotate" );
494
496
service .$( " $getPresideObject" ).$args ( " website_user_reset_token" ).$results ( mockResetDao );
495
497
mockResetDao .$( " insertData" , 1 );
496
498
mockResetDao .$( " deleteData" , 1 );
499
+ mockRequestContext .$( " isBackgroundThread" , false );
497
500
498
501
return service ;
499
502
}
You can’t perform that action at this time.
0 commit comments