Skip to content

Commit a7bd8d8

Browse files
author
SadiJr
committed
Merge branch 'fix-quota-email-account-check' into '4.20.0.0-scclouds'
Correção de `quotaConfigureEmail` para contas recém criadas Closes #3178 See merge request scclouds/scclouds!1320
2 parents f8ff7c3 + 6808fbd commit a7bd8d8

2 files changed

Lines changed: 26 additions & 6 deletions

File tree

plugins/database/quota/src/main/java/org/apache/cloudstack/api/response/QuotaResponseBuilderImpl.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1103,7 +1103,9 @@ protected QuotaEmailConfigurationVO getQuotaEmailConfigurationVo(QuotaConfigureE
11031103
}
11041104

11051105
protected void validateQuotaConfigureEmailCmdParameters(QuotaConfigureEmailCmd cmd) {
1106-
if (quotaAccountDao.findByIdQuotaAccount(cmd.getAccountId()) == null) {
1106+
long accountId = cmd.getAccountId();
1107+
1108+
if (!quotaAccountDao.getQuotaAccountEnabled(accountId)) {
11071109
throw new InvalidParameterValueException("You must have the quota enabled for this account to configure quota emails.");
11081110
}
11091111

@@ -1114,6 +1116,11 @@ protected void validateQuotaConfigureEmailCmdParameters(QuotaConfigureEmailCmd c
11141116
if ((cmd.getTemplateName() != null && cmd.getEnable() == null) || (cmd.getTemplateName() == null && cmd.getEnable() != null)) {
11151117
throw new InvalidParameterValueException("Parameter 'enable' must be informed along with 'templatename'.");
11161118
}
1119+
1120+
if (quotaAccountDao.findByIdQuotaAccount(accountId) == null) {
1121+
logger.warn("Quota Account not found for [{}], so adding 0 credits to create it.", accountId);
1122+
addQuotaCredits(accountId, 0D, CallContext.current().getCallingUserId(), null, null);
1123+
}
11171124
}
11181125

11191126
public QuotaConfigureEmailResponse createQuotaConfigureEmailResponse(QuotaEmailConfigurationVO quotaEmailConfigurationVO, Double minBalance, long accountId) {

plugins/database/quota/src/test/java/org/apache/cloudstack/api/response/QuotaResponseBuilderImplTest.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -496,42 +496,55 @@ public void filterSupportedTypesTestCallRecursiveMethodWhenIsGenericPresetVariab
496496
Mockito.anyString());
497497
}
498498

499-
@Test (expected = InvalidParameterValueException.class)
499+
@Test
500500
public void validateQuotaConfigureEmailCmdParametersTestNullQuotaAccount() {
501+
Mockito.doReturn(true).when(quotaAccountDaoMock).getQuotaAccountEnabled(Mockito.any());
502+
Mockito.doReturn(QuotaConfig.QuotaEmailTemplateTypes.QUOTA_LOW.toString()).when(quotaConfigureEmailCmdMock).getTemplateName();
503+
Mockito.doReturn(true).when(quotaConfigureEmailCmdMock).getEnable();
501504
Mockito.doReturn(null).when(quotaAccountDaoMock).findByIdQuotaAccount(Mockito.any());
505+
Mockito.doReturn(null).when(quotaResponseBuilderSpy).addQuotaCredits(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
506+
quotaResponseBuilderSpy.validateQuotaConfigureEmailCmdParameters(quotaConfigureEmailCmdMock);
507+
Mockito.verify(quotaResponseBuilderSpy).addQuotaCredits(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
508+
}
509+
510+
@Test (expected = InvalidParameterValueException.class)
511+
public void validateQuotaConfigureEmailCmdParametersTestAccountWithDisabledQuota() {
512+
Mockito.doReturn(false).when(quotaAccountDaoMock).getQuotaAccountEnabled(Mockito.any());
502513
quotaResponseBuilderSpy.validateQuotaConfigureEmailCmdParameters(quotaConfigureEmailCmdMock);
503514
}
504515

505516
@Test (expected = InvalidParameterValueException.class)
506517
public void validateQuotaConfigureEmailCmdParametersTestNullTemplateNameAndMinBalance() {
507-
Mockito.doReturn(quotaAccountVOMock).when(quotaAccountDaoMock).findByIdQuotaAccount(Mockito.any());
518+
Mockito.doReturn(true).when(quotaAccountDaoMock).getQuotaAccountEnabled(Mockito.any());
508519
Mockito.doReturn(null).when(quotaConfigureEmailCmdMock).getTemplateName();
509520
Mockito.doReturn(null).when(quotaConfigureEmailCmdMock).getMinBalance();
510521
quotaResponseBuilderSpy.validateQuotaConfigureEmailCmdParameters(quotaConfigureEmailCmdMock);
511522
}
512523

513524
@Test (expected = InvalidParameterValueException.class)
514525
public void validateQuotaConfigureEmailCmdParametersTestEnableNullAndTemplateNameNotNull() {
515-
Mockito.doReturn(quotaAccountVOMock).when(quotaAccountDaoMock).findByIdQuotaAccount(Mockito.any());
526+
Mockito.doReturn(true).when(quotaAccountDaoMock).getQuotaAccountEnabled(Mockito.any());
516527
Mockito.doReturn(QuotaConfig.QuotaEmailTemplateTypes.QUOTA_LOW.toString()).when(quotaConfigureEmailCmdMock).getTemplateName();
517528
Mockito.doReturn(null).when(quotaConfigureEmailCmdMock).getEnable();
518529
quotaResponseBuilderSpy.validateQuotaConfigureEmailCmdParameters(quotaConfigureEmailCmdMock);
519530
}
520531

521532
@Test
522533
public void validateQuotaConfigureEmailCmdParametersTestNullTemplateName() {
523-
Mockito.doReturn(quotaAccountVOMock).when(quotaAccountDaoMock).findByIdQuotaAccount(Mockito.any());
534+
Mockito.doReturn(true).when(quotaAccountDaoMock).getQuotaAccountEnabled(Mockito.any());
524535
Mockito.doReturn(null).when(quotaConfigureEmailCmdMock).getTemplateName();
525536
Mockito.doReturn(null).when(quotaConfigureEmailCmdMock).getEnable();
526537
Mockito.doReturn(100D).when(quotaConfigureEmailCmdMock).getMinBalance();
538+
Mockito.doReturn(quotaAccountVOMock).when(quotaAccountDaoMock).findByIdQuotaAccount(Mockito.any());
527539
quotaResponseBuilderSpy.validateQuotaConfigureEmailCmdParameters(quotaConfigureEmailCmdMock);
528540
}
529541

530542
@Test
531543
public void validateQuotaConfigureEmailCmdParametersTestWithTemplateNameAndEnable() {
532-
Mockito.doReturn(quotaAccountVOMock).when(quotaAccountDaoMock).findByIdQuotaAccount(Mockito.any());
544+
Mockito.doReturn(true).when(quotaAccountDaoMock).getQuotaAccountEnabled(Mockito.any());
533545
Mockito.doReturn(QuotaConfig.QuotaEmailTemplateTypes.QUOTA_LOW.toString()).when(quotaConfigureEmailCmdMock).getTemplateName();
534546
Mockito.doReturn(true).when(quotaConfigureEmailCmdMock).getEnable();
547+
Mockito.doReturn(quotaAccountVOMock).when(quotaAccountDaoMock).findByIdQuotaAccount(Mockito.any());
535548
quotaResponseBuilderSpy.validateQuotaConfigureEmailCmdParameters(quotaConfigureEmailCmdMock);
536549
}
537550

0 commit comments

Comments
 (0)