use of com.tvd12.ezyfoxserver.controller.EzyAccessAppController in project ezyfox-server by youngmonkeys.
the class EzyAccessAppControllerTest method accessAppFailedDueToMaxUser.
@Test
public void accessAppFailedDueToMaxUser() {
// given
EzyServerContext serverContext = mock(EzyServerContext.class);
EzyZoneContext zoneContext = mock(EzyZoneContext.class);
when(serverContext.getZoneContext(1)).thenReturn(zoneContext);
EzyAppContext appContext = mock(EzyAppContext.class);
EzyApplication app = mock(EzyApplication.class);
EzySimpleAppSetting appSetting = new EzySimpleAppSetting();
appSetting.setName("test");
when(app.getSetting()).thenReturn(appSetting);
when(appContext.getApp()).thenReturn(app);
EzySimpleAppUserDelegate userDelegate = new EzySimpleAppUserDelegate();
userDelegate.setAppContext(appContext);
EzyAppUserManager appUserManager = EzyAppUserManagerImpl.builder().maxUsers(1).appName("test").userDelegate(userDelegate).build();
when(app.getUserManager()).thenReturn(appUserManager);
when(zoneContext.getAppContext("test")).thenReturn(appContext);
EzySimpleAccessAppRequest request1 = newRequest(1);
EzySimpleAccessAppRequest request2 = newRequest(2);
EzyAccessAppController underTest = new EzyAccessAppController();
// when
underTest.handle(serverContext, request1);
Throwable e = Asserts.assertThrows(() -> underTest.handle(serverContext, request2));
// then
Asserts.assertEqualsType(e, EzyAccessAppException.class);
Asserts.assertEqualsType(e.getCause(), EzyMaxUserException.class);
verify(appContext, times(1)).handleEvent(eq(EzyEventType.USER_ACCESS_APP), any(EzySimpleUserAccessAppEvent.class));
verify(appContext, times(1)).handleEvent(eq(EzyEventType.USER_ACCESSED_APP), any(EzySimpleUserAccessedAppEvent.class));
verify(serverContext, times(2)).getZoneContext(1);
verify(zoneContext, times(2)).getAppContext("test");
verify(appContext, times(2)).getApp();
verify(app, times(2)).getSetting();
verify(app, times(2)).getUserManager();
// 1 for success, 1 for failure
verify(serverContext, times(2)).send(any(EzyResponse.class), any(EzySession.class), any(boolean.class));
}
use of com.tvd12.ezyfoxserver.controller.EzyAccessAppController in project ezyfox-server by youngmonkeys.
the class EzyAccessAppControllerTest method accessAppFailedDueToMaxUserAfterAccess.
@Test
public void accessAppFailedDueToMaxUserAfterAccess() {
// given
EzyServerContext serverContext = mock(EzyServerContext.class);
EzyZoneContext zoneContext = mock(EzyZoneContext.class);
when(serverContext.getZoneContext(1)).thenReturn(zoneContext);
EzyAppContext appContext = mock(EzyAppContext.class);
EzyApplication app = mock(EzyApplication.class);
EzySimpleAppSetting appSetting = new EzySimpleAppSetting();
appSetting.setName("test");
when(app.getSetting()).thenReturn(appSetting);
when(appContext.getApp()).thenReturn(app);
EzySimpleAppUserDelegate userDelegate = new EzySimpleAppUserDelegate();
userDelegate.setAppContext(appContext);
EzyAppUserManager appUserManager = mock(EzyAppUserManager.class);
when(appUserManager.getMaxUsers()).thenReturn(1);
when(app.getUserManager()).thenReturn(appUserManager);
when(zoneContext.getAppContext("test")).thenReturn(appContext);
EzySimpleAccessAppRequest request = newRequest(1);
EzyUser user = request.getUser();
when(appUserManager.getLock(user.getName())).thenReturn(new ReentrantLock());
doThrow(new EzyMaxUserException(1, 1)).when(appUserManager).addUser(user);
EzyAccessAppController underTest = new EzyAccessAppController();
// when
Throwable e = Asserts.assertThrows(() -> underTest.handle(serverContext, request));
// then
Asserts.assertEqualsType(e, EzyAccessAppException.class);
Asserts.assertEqualsType(e.getCause(), EzyMaxUserException.class);
verify(appUserManager, times(1)).containsUser(user);
verify(appUserManager, times(1)).getUserCount();
verify(appUserManager, times(1)).getMaxUsers();
verify(appUserManager, times(1)).getAppName();
verify(appUserManager, times(1)).getLock(user.getName());
verify(appUserManager, times(1)).removeLock(user.getName());
verify(appUserManager, times(1)).addUser(user);
verify(appContext, times(1)).handleEvent(eq(EzyEventType.USER_ACCESS_APP), any(EzySimpleUserAccessAppEvent.class));
verify(serverContext, times(1)).getZoneContext(1);
verify(zoneContext, times(1)).getAppContext("test");
verify(appContext, times(1)).getApp();
verify(app, times(1)).getSetting();
verify(app, times(1)).getUserManager();
// 1 for success, 1 for failure
verify(serverContext, times(1)).send(any(EzyResponse.class), any(EzySession.class), any(boolean.class));
}
use of com.tvd12.ezyfoxserver.controller.EzyAccessAppController in project ezyfox-server by youngmonkeys.
the class EzyAccessAppControllerTest method accessAppSuccessfullyBut2Times.
@Test
public void accessAppSuccessfullyBut2Times() {
// given
EzyServerContext serverContext = mock(EzyServerContext.class);
EzyZoneContext zoneContext = mock(EzyZoneContext.class);
when(serverContext.getZoneContext(1)).thenReturn(zoneContext);
EzyAppContext appContext = mock(EzyAppContext.class);
EzyApplication app = mock(EzyApplication.class);
EzySimpleAppSetting appSetting = new EzySimpleAppSetting();
appSetting.setName("test");
when(app.getSetting()).thenReturn(appSetting);
when(appContext.getApp()).thenReturn(app);
EzySimpleAppUserDelegate userDelegate = new EzySimpleAppUserDelegate();
userDelegate.setAppContext(appContext);
EzyAppUserManager appUserManager = EzyAppUserManagerImpl.builder().appName("test").userDelegate(userDelegate).build();
when(app.getUserManager()).thenReturn(appUserManager);
when(zoneContext.getAppContext("test")).thenReturn(appContext);
EzySimpleAccessAppRequest request = newRequest(1);
EzyAccessAppController underTest = new EzyAccessAppController();
// when
underTest.handle(serverContext, request);
underTest.handle(serverContext, request);
// then
verify(appContext, times(2)).handleEvent(eq(EzyEventType.USER_ACCESS_APP), any(EzySimpleUserAccessAppEvent.class));
verify(appContext, times(1)).handleEvent(eq(EzyEventType.USER_ACCESSED_APP), any(EzySimpleUserAccessedAppEvent.class));
verify(serverContext, times(2)).getZoneContext(1);
verify(zoneContext, times(2)).getAppContext("test");
verify(appContext, times(2)).getApp();
verify(app, times(2)).getSetting();
verify(app, times(2)).getUserManager();
verify(serverContext, times(2)).send(any(EzyResponse.class), any(EzySession.class), any(boolean.class));
}
use of com.tvd12.ezyfoxserver.controller.EzyAccessAppController in project ezyfox-server by youngmonkeys.
the class EzyAccessAppControllerTest method accessAppSuccessfully.
@Test
public void accessAppSuccessfully() {
// given
EzyServerContext serverContext = mock(EzyServerContext.class);
EzyZoneContext zoneContext = mock(EzyZoneContext.class);
when(serverContext.getZoneContext(1)).thenReturn(zoneContext);
EzyAppContext appContext = mock(EzyAppContext.class);
EzyApplication app = mock(EzyApplication.class);
EzySimpleAppSetting appSetting = new EzySimpleAppSetting();
appSetting.setName("test");
when(app.getSetting()).thenReturn(appSetting);
when(appContext.getApp()).thenReturn(app);
EzySimpleAppUserDelegate userDelegate = new EzySimpleAppUserDelegate();
userDelegate.setAppContext(appContext);
EzyAppUserManager appUserManager = EzyAppUserManagerImpl.builder().appName("test").userDelegate(userDelegate).build();
when(app.getUserManager()).thenReturn(appUserManager);
when(zoneContext.getAppContext("test")).thenReturn(appContext);
EzySimpleAccessAppRequest request = newRequest(1);
EzyAccessAppController underTest = new EzyAccessAppController();
// when
underTest.handle(serverContext, request);
// then
verify(appContext, times(1)).handleEvent(eq(EzyEventType.USER_ACCESS_APP), any(EzySimpleUserAccessAppEvent.class));
verify(appContext, times(1)).handleEvent(eq(EzyEventType.USER_ACCESSED_APP), any(EzySimpleUserAccessedAppEvent.class));
verify(serverContext, times(1)).getZoneContext(1);
verify(zoneContext, times(1)).getAppContext("test");
verify(appContext, times(1)).getApp();
verify(app, times(1)).getSetting();
verify(app, times(1)).getUserManager();
verify(serverContext, times(1)).send(any(EzyResponse.class), any(EzySession.class), any(boolean.class));
}
Aggregations