added files

This commit is contained in:
Your Name
2026-08-26 02:02:24 +05:30
parent 58ee8a276a
commit 3419cfba0c
200 changed files with 22132 additions and 0 deletions
@@ -0,0 +1,269 @@
package com.meesho.utilities
import com.lesfurets.jenkins.unit.BasePipelineTest
import org.junit.Before
import org.junit.Test
import static org.junit.Assert.*
/**
* Unit tests for constructParam.groovy policy-enforcement methods.
*
* Strategy: Jenkins DSL steps (git, readYaml, dir) are registered as no-op mocks.
* readYaml is overridden per-test to return controlled whitelist data.
* This isolates each method's branch-decision logic from the live GitHub clone.
*/
class ConstructParamTest extends BasePipelineTest {
def script
// Controlled whitelist sets — each test overrides as needed via helper.registerAllowedMethod
Set<String> sonarWhitelist = [] as Set
Set<String> appConfigDisabledWhitelist = [] as Set
Set<String> allowedNonDevelopWhitelist = [] as Set
Set<String> validateCacWhitelist = [] as Set
Set<String> multizoneDeployables = [] as Set
@Override
@Before
void setUp() {
super.setUp()
// No-op Jenkins DSL steps
helper.registerAllowedMethod('dir', [String, Closure]) { path, body -> body() }
helper.registerAllowedMethod('git', [Map]) { /* no-op clone */ }
helper.registerAllowedMethod('echo', [String]) { /* no-op */ }
// readYaml returns whitelists driven by the test's set fields
helper.registerAllowedMethod('readYaml', [Map]) { args ->
String file = args.file as String
if (file.contains('skip-sonar-whitelist')) return [repos: sonarWhitelist.toList()]
if (file.contains('app-config-disabled')) return [repos: appConfigDisabledWhitelist.toList()]
if (file.contains('allowedNonDevelopPrDeploymentToInt')) return [repos: allowedNonDevelopWhitelist.toList()]
if (file.contains('ValidateCacConfig')) return [repos: validateCacWhitelist.toList()]
if (file.contains('multizone-enabled-repos')) return [multizone_enabled_deployables: multizoneDeployables.toList()]
return [repos: []]
}
script = loadScript('src/com/meesho/utilities/constructParam.groovy')
}
// ────────────────────────────────
// skipSonarCheckForbidden()
// ────────────────────────────────
@Test
void skipSonarCheckForbidden_returnsFalse_forNonMavenBuilds() {
binding.setProperty('env', [BRANCH_NAME: 'main'])
def config = [dockerBuildVersion: 'go-1.22', repo_name: 'my-service', skip_sonar: true]
assertFalse(script.skipSonarCheckForbidden(config, ['main': 'prd']))
}
@Test
void skipSonarCheckForbidden_returnsFalse_forNodeBuild() {
binding.setProperty('env', [BRANCH_NAME: 'main'])
def config = [dockerBuildVersion: 'node-20', repo_name: 'my-service', skip_sonar: true]
assertFalse(script.skipSonarCheckForbidden(config, ['main': 'prd']))
}
@Test
void skipSonarCheckForbidden_returnsFalse_forHotfixBranch() {
binding.setProperty('env', [BRANCH_NAME: 'hotfix/fix-login'])
def config = [dockerBuildVersion: 'maven-21', repo_name: 'my-service', skip_sonar: true]
assertFalse(script.skipSonarCheckForbidden(config, ['main': 'prd']))
}
@Test
void skipSonarCheckForbidden_returnsFalse_forStgEnvironment() {
binding.setProperty('env', [BRANCH_NAME: 'develop'])
def config = [dockerBuildVersion: 'maven-21', repo_name: 'my-service', skip_sonar: true]
assertFalse(script.skipSonarCheckForbidden(config, ['develop': 'stg']))
}
@Test
void skipSonarCheckForbidden_returnsFalse_forIntEnvironment() {
binding.setProperty('env', [BRANCH_NAME: 'feature/xyz'])
def config = [dockerBuildVersion: 'maven-21', repo_name: 'my-service', skip_sonar: true]
// branch not in map → defaults to "int"
assertFalse(script.skipSonarCheckForbidden(config, ['main': 'prd']))
}
@Test
void skipSonarCheckForbidden_returnsFalse_whenRepoIsInSonarWhitelist() {
binding.setProperty('env', [BRANCH_NAME: 'main'])
sonarWhitelist = ['whitelisted-service'] as Set
def config = [dockerBuildVersion: 'maven-21', repo_name: 'whitelisted-service', skip_sonar: true]
assertFalse(script.skipSonarCheckForbidden(config, ['main': 'prd']))
}
@Test
void skipSonarCheckForbidden_returnsTrue_whenSkipSonarTrue_onMavenPrdBuild() {
binding.setProperty('env', [BRANCH_NAME: 'main'])
sonarWhitelist = [] as Set
def config = [dockerBuildVersion: 'maven-21', repo_name: 'my-service', skip_sonar: true]
assertTrue(script.skipSonarCheckForbidden(config, ['main': 'prd']))
}
@Test
void skipSonarCheckForbidden_returnsFalse_whenSkipSonarFalse_onMavenPrdBuild() {
binding.setProperty('env', [BRANCH_NAME: 'main'])
sonarWhitelist = [] as Set
def config = [dockerBuildVersion: 'maven-21', repo_name: 'my-service', skip_sonar: false]
assertFalse(script.skipSonarCheckForbidden(config, ['main': 'prd']))
}
@Test
void skipSonarCheckForbidden_returnsTrue_forMaven17PrdBuildWithSkipSonar() {
binding.setProperty('env', [BRANCH_NAME: 'main'])
sonarWhitelist = [] as Set
def config = [dockerBuildVersion: 'maven-17', repo_name: 'my-service', skip_sonar: true]
assertTrue(script.skipSonarCheckForbidden(config, ['main': 'prd']))
}
// ────────────────────────────────
// appConfigDisabledForbidden()
// ────────────────────────────────
@Test
void appConfigDisabledForbidden_returnsFalse_whenEnvironmentIsNotStg() {
binding.setProperty('env', [CHANGE_TARGET: 'main'])
assertFalse(script.appConfigDisabledForbidden(false, 'my-service', 'prd', 'maven-21'))
}
@Test
void appConfigDisabledForbidden_returnsFalse_whenEnvironmentIsInt() {
binding.setProperty('env', [CHANGE_TARGET: 'main'])
assertFalse(script.appConfigDisabledForbidden(false, 'my-service', 'int', 'maven-21'))
}
@Test
void appConfigDisabledForbidden_returnsFalse_whenBuildIsGo() {
binding.setProperty('env', [CHANGE_TARGET: 'develop'])
assertFalse(script.appConfigDisabledForbidden(false, 'my-service', 'stg', 'go-1.22'))
}
@Test
void appConfigDisabledForbidden_returnsFalse_whenBuildIsNode() {
binding.setProperty('env', [CHANGE_TARGET: 'develop'])
assertFalse(script.appConfigDisabledForbidden(false, 'my-service', 'stg', 'node-20'))
}
@Test
void appConfigDisabledForbidden_returnsFalse_whenRepoIsInWhitelist() {
binding.setProperty('env', [CHANGE_TARGET: 'develop'])
appConfigDisabledWhitelist = ['legacy-service'] as Set
assertFalse(script.appConfigDisabledForbidden(false, 'legacy-service', 'stg', 'maven-21'))
}
@Test
void appConfigDisabledForbidden_returnsTrue_forMavenStgBuildWithAppConfigDisabled() {
binding.setProperty('env', [CHANGE_TARGET: 'develop'])
appConfigDisabledWhitelist = [] as Set
assertTrue(script.appConfigDisabledForbidden(false, 'my-service', 'stg', 'maven-21'))
}
@Test
void appConfigDisabledForbidden_returnsFalse_forMavenStgBuildWithAppConfigEnabled() {
binding.setProperty('env', [CHANGE_TARGET: 'develop'])
appConfigDisabledWhitelist = [] as Set
assertFalse(script.appConfigDisabledForbidden(true, 'my-service', 'stg', 'maven-21'))
}
@Test
void appConfigDisabledForbidden_returnsTrue_forGradleStgBuildWithAppConfigDisabled() {
binding.setProperty('env', [CHANGE_TARGET: 'develop'])
appConfigDisabledWhitelist = [] as Set
assertTrue(script.appConfigDisabledForbidden(false, 'my-service', 'stg', 'gradle'))
}
// ────────────────────────────────
// allowedNonDevelopPrDeploymentToIntRepos()
// ────────────────────────────────
@Test
void allowedNonDevelopPr_returnsFalse_whenRepoNotInWhitelist() {
allowedNonDevelopWhitelist = [] as Set
assertFalse(script.allowedNonDevelopPrDeploymentToIntRepos('my-service'))
}
@Test
void allowedNonDevelopPr_returnsTrue_whenRepoIsInWhitelist() {
allowedNonDevelopWhitelist = ['allowed-service'] as Set
assertTrue(script.allowedNonDevelopPrDeploymentToIntRepos('allowed-service'))
}
@Test
void allowedNonDevelopPr_isCaseSensitive() {
allowedNonDevelopWhitelist = ['My-Service'] as Set
assertFalse(script.allowedNonDevelopPrDeploymentToIntRepos('my-service'))
}
@Test
void allowedNonDevelopPr_returnsFalse_forEmptyRepoName() {
allowedNonDevelopWhitelist = [] as Set
assertFalse(script.allowedNonDevelopPrDeploymentToIntRepos(''))
}
// ────────────────────────────────
// ValidateCacConfigForRepo()
// ────────────────────────────────
@Test
void validateCacConfig_returnsTrue_whenRepoIsInWhitelist() {
binding.setProperty('env', [CHANGE_TARGET: 'develop'])
validateCacWhitelist = ['cac-enabled-service'] as Set
assertTrue(script.ValidateCacConfigForRepo(false, 'cac-enabled-service'))
}
@Test
void validateCacConfig_returnsPassedInValue_whenRepoNotInWhitelist() {
binding.setProperty('env', [CHANGE_TARGET: 'develop'])
validateCacWhitelist = [] as Set
assertTrue(script.ValidateCacConfigForRepo(true, 'my-service'))
assertFalse(script.ValidateCacConfigForRepo(false, 'my-service'))
}
@Test
void validateCacConfig_whitelistOverridesFalseValidateConfig() {
binding.setProperty('env', [CHANGE_TARGET: 'develop'])
validateCacWhitelist = ['forced-service'] as Set
assertTrue(script.ValidateCacConfigForRepo(false, 'forced-service'))
}
@Test
void validateCacConfig_whitelistDoesNotOverrideTrueValidateConfig() {
// If repo is NOT in whitelist but ValidateConfig=true, it should still return true
binding.setProperty('env', [CHANGE_TARGET: 'develop'])
validateCacWhitelist = [] as Set
assertTrue(script.ValidateCacConfigForRepo(true, 'my-service'))
}
// ────────────────────────────────
// isMultizoneEnabled()
// ────────────────────────────────
@Test
void isMultizoneEnabled_returnsFalse_whenDeployableNotInList() {
multizoneDeployables = [] as Set
assertFalse(script.isMultizoneEnabled('my-deployable'))
}
@Test
void isMultizoneEnabled_returnsTrue_whenDeployableIsInList() {
multizoneDeployables = ['critical-app'] as Set
assertTrue(script.isMultizoneEnabled('critical-app'))
}
@Test
void isMultizoneEnabled_isExactMatch_prefixNotSufficient() {
multizoneDeployables = ['critical-app'] as Set
assertFalse(script.isMultizoneEnabled('critical'))
assertFalse(script.isMultizoneEnabled('critical-app-v2'))
}
@Test
void isMultizoneEnabled_isCaseSensitive() {
multizoneDeployables = ['Critical-App'] as Set
assertFalse(script.isMultizoneEnabled('critical-app'))
}
}