Skip to content

Commit ef5cf76

Browse files
committed
add tests
Signed-off-by: Abhishek Kumar <[email protected]>
1 parent b2d4fb6 commit ef5cf76

File tree

1 file changed

+54
-1
lines changed

1 file changed

+54
-1
lines changed

api/src/test/java/org/apache/cloudstack/context/CallContextTest.java

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,30 @@
2727
import org.junit.Test;
2828
import org.junit.runner.RunWith;
2929
import org.mockito.Mock;
30+
import org.mockito.MockedStatic;
3031
import org.mockito.Mockito;
3132
import org.mockito.junit.MockitoJUnitRunner;
3233

3334
import com.cloud.user.Account;
35+
import com.cloud.user.AccountService;
3436
import com.cloud.user.User;
37+
import com.cloud.utils.component.ComponentContext;
3538
import com.cloud.utils.db.EntityManager;
3639

3740
@RunWith(MockitoJUnitRunner.class)
3841
public class CallContextTest {
3942

4043
@Mock
4144
EntityManager entityMgr;
45+
@Mock
46+
User user;
47+
@Mock
48+
Account account;
4249

4350
@Before
4451
public void setUp() {
4552
CallContext.init(entityMgr);
46-
CallContext.register(Mockito.mock(User.class), Mockito.mock(Account.class));
53+
CallContext.register(user, account);
4754
}
4855

4956
@After
@@ -80,4 +87,50 @@ public void testGetContextParameter() {
8087
Assert.assertEquals("current context map should have exactly three entries", 3, currentContext.getContextParameters().size());
8188
}
8289

90+
91+
@Test
92+
public void isCallingAccountRootAdminReturnsTrueWhenAccountIsRootAdminAccountServiceNotAvailable() {
93+
Mockito.when(account.getType()).thenReturn(Account.Type.ADMIN);
94+
95+
CallContext context = CallContext.current();
96+
Assert.assertTrue(context.isCallingAccountRootAdmin());
97+
}
98+
99+
@Test
100+
public void isCallingAccountRootAdminReturnsFalseWhenAccountIsNotRootAdminAccountServiceNotAvailable() {
101+
Mockito.when(account.getType()).thenReturn(Account.Type.NORMAL);
102+
103+
CallContext context = CallContext.current();
104+
Assert.assertFalse(context.isCallingAccountRootAdmin());
105+
Assert.assertFalse(context.isCallingAccountRootAdmin());
106+
}
107+
108+
@Test
109+
public void isCallingAccountRootAdminTrueWhenAccountServiceAvailable() {
110+
try (MockedStatic<ComponentContext> componentContextMockedStatic = Mockito.mockStatic(ComponentContext.class)) {
111+
AccountService accountService = Mockito.mock(AccountService.class);
112+
Mockito.when(accountService.isRootAdmin(account)).thenReturn(true);
113+
componentContextMockedStatic.when(() -> ComponentContext.getDelegateComponentOfType(AccountService.class)).thenReturn(accountService);
114+
CallContext context = CallContext.current();
115+
Assert.assertTrue(context.isCallingAccountRootAdmin());
116+
// Verify isRootAdmin was called only once
117+
Assert.assertTrue(context.isCallingAccountRootAdmin());
118+
componentContextMockedStatic.verify(() -> ComponentContext.getDelegateComponentOfType(AccountService.class));
119+
}
120+
}
121+
122+
@Test
123+
public void isCallingAccountRootAdminFalseWhenAccountServiceAvailable() {
124+
try (MockedStatic<ComponentContext> componentContextMockedStatic = Mockito.mockStatic(ComponentContext.class)) {
125+
AccountService accountService = Mockito.mock(AccountService.class);
126+
Mockito.when(accountService.isRootAdmin(account)).thenReturn(false);
127+
componentContextMockedStatic.when(() -> ComponentContext.getDelegateComponentOfType(AccountService.class)).thenReturn(accountService);
128+
CallContext context = CallContext.current();
129+
Assert.assertFalse(context.isCallingAccountRootAdmin());
130+
// Verify isRootAdmin was called only once
131+
Assert.assertFalse(context.isCallingAccountRootAdmin());
132+
componentContextMockedStatic.verify(() -> ComponentContext.getDelegateComponentOfType(AccountService.class));
133+
}
134+
}
135+
83136
}

0 commit comments

Comments
 (0)