diff --git a/backend/app/src/test/kotlin/io/tolgee/AuthTest.kt b/backend/app/src/test/kotlin/io/tolgee/AuthTest.kt
index bb0b12b217..291da23a6c 100644
--- a/backend/app/src/test/kotlin/io/tolgee/AuthTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/AuthTest.kt
@@ -13,6 +13,7 @@ import io.tolgee.model.Project
import io.tolgee.security.authentication.JwtService
import io.tolgee.security.thirdParty.GithubOAuthDelegate.GithubEmailResponse
import io.tolgee.testing.AbstractControllerTest
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.util.GitHubAuthUtil
import io.tolgee.util.GoogleAuthUtil
import io.tolgee.util.OAuth2AuthUtil
@@ -33,6 +34,7 @@ import org.springframework.web.client.RestTemplate
import java.util.*
@Transactional
+@ContextRecreatingTest
class AuthTest : AbstractControllerTest() {
@Autowired
private val publicController: PublicController? = null
@@ -65,6 +67,7 @@ class AuthTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun generatesTokenForValidUser() {
val response = doAuthentication(initialUsername, initialPassword)
println(response.andReturn().response.contentAsString)
@@ -81,6 +84,7 @@ class AuthTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun userWithTokenHasAccess() {
val response =
doAuthentication(initialUsername, initialPassword)
diff --git a/backend/app/src/test/kotlin/io/tolgee/PatAuthTest.kt b/backend/app/src/test/kotlin/io/tolgee/PatAuthTest.kt
index 0684dae6b6..c85f358aa7 100644
--- a/backend/app/src/test/kotlin/io/tolgee/PatAuthTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/PatAuthTest.kt
@@ -25,7 +25,7 @@ class PatAuthTest : AbstractControllerTest() {
add("X-API-Key", "tgpat_${pat.token}")
},
).andIsOk.andAssertThatJson {
- node("username").isEqualTo("franta")
+ node("username").isString.contains("franta")
}
val lastUsedAt = patService.get(pat.id).lastUsedAt
@@ -94,6 +94,7 @@ class PatAuthTest : AbstractControllerTest() {
private fun createUserWithPat(expiresAt: Date? = Date(Date().time + 10000)): Pat {
var pat: Pat? = null
testDataService.saveTestData {
+ makeUsernamesUnique = true
addUserAccount {
username = "franta"
}.build {
diff --git a/backend/app/src/test/kotlin/io/tolgee/StartupImportCommandLineRunnerTest.kt b/backend/app/src/test/kotlin/io/tolgee/StartupImportCommandLineRunnerTest.kt
index 75dc71110d..68e458b0d1 100644
--- a/backend/app/src/test/kotlin/io/tolgee/StartupImportCommandLineRunnerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/StartupImportCommandLineRunnerTest.kt
@@ -8,6 +8,7 @@ import io.tolgee.commandLineRunners.StartupImportCommandLineRunner
import io.tolgee.configuration.tolgee.ImportProperties
import io.tolgee.configuration.tolgee.TolgeeProperties
import io.tolgee.development.Base
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.assert
import io.tolgee.testing.assertions.Assertions.assertThat
import org.junit.jupiter.api.BeforeAll
@@ -20,6 +21,7 @@ import org.springframework.core.io.Resource
@Suppress("LateinitVarOverridesLateinitVar")
@CleanDbBeforeClass
+@ContextRecreatingTest
class StartupImportCommandLineRunnerTest : AbstractSpringTest() {
private lateinit var base: Base
diff --git a/backend/app/src/test/kotlin/io/tolgee/StreamingBodyDatabasePoolHealthTest.kt b/backend/app/src/test/kotlin/io/tolgee/StreamingBodyDatabasePoolHealthTest.kt
index b7cd27151b..da0d55f667 100644
--- a/backend/app/src/test/kotlin/io/tolgee/StreamingBodyDatabasePoolHealthTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/StreamingBodyDatabasePoolHealthTest.kt
@@ -21,6 +21,7 @@ import io.tolgee.development.testDataBuilder.data.TranslationsTestData
import io.tolgee.fixtures.andIsOk
import io.tolgee.fixtures.retry
import io.tolgee.fixtures.waitForNotThrowing
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.annotations.ProjectJWTAuthTestMethod
import io.tolgee.testing.assert
import org.junit.jupiter.api.BeforeEach
@@ -36,6 +37,7 @@ import javax.sql.DataSource
"tolgee.rate-limits.authentication-limits = false",
],
)
+@ContextRecreatingTest
class StreamingBodyDatabasePoolHealthTest : ProjectAuthControllerTest("/v2/projects/") {
lateinit var testData: TranslationsTestData
@@ -45,6 +47,7 @@ class StreamingBodyDatabasePoolHealthTest : ProjectAuthControllerTest("/v2/proje
@BeforeEach
fun setupData() {
testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
diff --git a/backend/app/src/test/kotlin/io/tolgee/activity/ActivityLogTest.kt b/backend/app/src/test/kotlin/io/tolgee/activity/ActivityLogTest.kt
index 05ab893ac5..3c4487ac7c 100644
--- a/backend/app/src/test/kotlin/io/tolgee/activity/ActivityLogTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/activity/ActivityLogTest.kt
@@ -14,6 +14,7 @@ import io.tolgee.fixtures.node
import io.tolgee.fixtures.waitFor
import io.tolgee.fixtures.waitForNotThrowing
import io.tolgee.model.enums.TranslationState
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.annotations.ProjectJWTAuthTestMethod
import io.tolgee.testing.assert
import net.javacrumbs.jsonunit.assertj.JsonAssert
@@ -32,6 +33,7 @@ import org.springframework.test.web.servlet.ResultActions
import java.math.BigDecimal
import java.util.function.Consumer
+@ContextRecreatingTest
class ActivityLogTest : ProjectAuthControllerTest("/v2/projects/") {
private lateinit var testData: BaseTestData
@@ -55,6 +57,7 @@ class ActivityLogTest : ProjectAuthControllerTest("/v2/projects/") {
name = "key"
}
}
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
projectSupplier = { testData.projectBuilder.self }
userAccount = testData.user
@@ -97,6 +100,7 @@ class ActivityLogTest : ProjectAuthControllerTest("/v2/projects/") {
fun `it returns params for batch job activity`() {
val testData = BatchJobsTestData()
val keys = testData.addTranslationOperationData(10)
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
this.projectSupplier = { testData.projectBuilder.self }
@@ -171,7 +175,7 @@ class ActivityLogTest : ProjectAuthControllerTest("/v2/projects/") {
text = "t"
state = TranslationState.REVIEWED
}.self
-
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier =
@@ -201,7 +205,7 @@ class ActivityLogTest : ProjectAuthControllerTest("/v2/projects/") {
private fun JsonAssert.isValidAuthor() {
node("id").isNumber
- node("username").isEqualTo("test_username")
+ node("username").isString.contains("test_username")
node("name").isEqualTo("Franta")
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AdministrationControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AdministrationControllerTest.kt
index 343abe144c..384f201f69 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AdministrationControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AdministrationControllerTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.development.testDataBuilder.data.AdministrationTestData
import io.tolgee.fixtures.andAssertThatJson
import io.tolgee.fixtures.andGetContentAsString
@@ -24,11 +25,13 @@ class AdministrationControllerTest : AuthorizedControllerTest() {
@BeforeEach
fun createData() {
testData = AdministrationTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.admin
}
@Test
+ @CleanDbBeforeMethod
fun `returns organizations`() {
performAuthGet("/v2/administration/organizations").andPrettyPrint.andIsOk.andAssertThatJson {
node("_embedded.organizations") {
@@ -41,6 +44,7 @@ class AdministrationControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `returns users`() {
performAuthGet("/v2/administration/users").andPrettyPrint.andAssertThatJson {
node("_embedded.users") {
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AnnouncementControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AnnouncementControllerTest.kt
index 3359e30e4a..bf9087e0b9 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AnnouncementControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AnnouncementControllerTest.kt
@@ -15,6 +15,7 @@ class AnnouncementControllerTest : AuthorizedControllerTest() {
@BeforeEach
fun createData() {
testData = ProjectsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ApiKeyControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ApiKeyControllerTest.kt
index 698eacb72d..3896b43be7 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ApiKeyControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ApiKeyControllerTest.kt
@@ -15,6 +15,7 @@ import io.tolgee.model.enums.Scope
import io.tolgee.testing.AuthorizedControllerTest
import io.tolgee.testing.assert
import io.tolgee.testing.assertions.Assertions.assertThat
+import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
@@ -31,10 +32,16 @@ class ApiKeyControllerTest : AuthorizedControllerTest() {
@BeforeEach
fun createData() {
testData = ApiKeysTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
}
+ @AfterEach
+ fun cleanup() {
+ testDataService.cleanApiKeys(testData.root)
+ }
+
@Test
fun `creates API key (without description and expiration)`() {
performAuthPost(
@@ -45,7 +52,7 @@ class ApiKeyControllerTest : AuthorizedControllerTest() {
),
).andIsOk.andPrettyPrint.andAssertThatJson {
node("key").isString.hasSizeGreaterThan(10)
- node("username").isEqualTo("test_username")
+ node("username").isString.contains("test_username")
node("userFullName").isEqualTo("")
node("projectId").isNumber.isGreaterThan(BigDecimal(0))
node("id").isValidId
@@ -64,7 +71,7 @@ class ApiKeyControllerTest : AuthorizedControllerTest() {
),
).andIsOk.andPrettyPrint.andAssertThatJson {
node("key").isString.hasSizeGreaterThan(10)
- node("username").isEqualTo("test_username")
+ node("username").isString.contains("test_username")
node("userFullName").isEqualTo("")
node("projectId").isNumber.isGreaterThan(BigDecimal(0))
node("id").isValidId
@@ -131,7 +138,7 @@ class ApiKeyControllerTest : AuthorizedControllerTest() {
node("[0]") {
node("key").isAbsent()
node("description").isEqualTo("test_......ta_39")
- node("username").isEqualTo("franta")
+ node("username").isString.contains("franta")
node("userFullName").isEqualTo("Franta Dobrota")
node("projectId").isNumber.isGreaterThan(BigDecimal(0))
node("id").isValidId
@@ -151,7 +158,7 @@ class ApiKeyControllerTest : AuthorizedControllerTest() {
isArray.hasSize(1)
node("[0]") {
node("key").isAbsent()
- node("username").isEqualTo("franta")
+ node("username").isString.contains("franta")
node("userFullName").isEqualTo("Franta Dobrota")
node("projectId").isNumber.isGreaterThan(BigDecimal(0))
node("id").isValidId
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AutoTranslationControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AutoTranslationControllerTest.kt
index 38dde76e20..b0fe9d38b4 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AutoTranslationControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AutoTranslationControllerTest.kt
@@ -2,14 +2,20 @@ package io.tolgee.api.v2.controllers
import io.tolgee.constants.Message
import io.tolgee.development.testDataBuilder.data.AutoTranslateTestData
-import io.tolgee.fixtures.*
+import io.tolgee.fixtures.MachineTranslationTest
+import io.tolgee.fixtures.andHasErrorMessage
+import io.tolgee.fixtures.andIsBadRequest
+import io.tolgee.fixtures.andIsForbidden
+import io.tolgee.fixtures.andIsOk
import io.tolgee.model.enums.Scope
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.annotations.ProjectApiKeyAuthTestMethod
import io.tolgee.testing.annotations.ProjectJWTAuthTestMethod
import io.tolgee.testing.assertions.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
+@ContextRecreatingTest
class AutoTranslationControllerTest : MachineTranslationTest() {
companion object {
private const val INITIAL_BUCKET_CREDITS = 150000L
@@ -20,6 +26,7 @@ class AutoTranslationControllerTest : MachineTranslationTest() {
@BeforeEach
fun setup() {
testData = AutoTranslateTestData()
+ testData.root.makeUsernamesUnique = true
testData.disableAutoTranslating()
this.projectSupplier = { testData.project }
initMachineTranslationMocks()
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/BigMetaControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/BigMetaControllerTest.kt
index 70e942e7b5..719fc2c06a 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/BigMetaControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/BigMetaControllerTest.kt
@@ -25,6 +25,7 @@ class BigMetaControllerTest : ProjectAuthControllerTest("/v2/projects/"), Loggin
@BeforeEach
fun setup() {
testData = BigMetaTestData()
+ testData.root.makeUsernamesUnique = true
}
private fun saveTestDataAndPrepare() {
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/BusinessEventControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/BusinessEventControllerTest.kt
index 68b4a1558d..09d3c1a974 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/BusinessEventControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/BusinessEventControllerTest.kt
@@ -29,6 +29,7 @@ class BusinessEventControllerTest : ProjectAuthControllerTest("/v2/projects/") {
@BeforeEach
fun setup() {
testData = BaseTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
projectSupplier = { testData.projectBuilder.self }
userAccount = testData.user
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/NamespaceControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/NamespaceControllerTest.kt
index fd6ca921e2..a71c42c039 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/NamespaceControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/NamespaceControllerTest.kt
@@ -21,6 +21,7 @@ class NamespaceControllerTest : ProjectAuthControllerTest("/v2/projects/") {
@BeforeEach
fun createData() {
testData = NamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.projectBuilder.self }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/PatControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/PatControllerTest.kt
index 9292ddc5a7..9b4702af88 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/PatControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/PatControllerTest.kt
@@ -27,6 +27,7 @@ class PatControllerTest : AuthorizedControllerTest() {
@BeforeEach
fun createData() {
testData = PatTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/PreferredOrganizationControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/PreferredOrganizationControllerTest.kt
index 39fa721ded..71763e8756 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/PreferredOrganizationControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/PreferredOrganizationControllerTest.kt
@@ -15,6 +15,7 @@ class PreferredOrganizationControllerTest : AuthorizedControllerTest() {
@BeforeEach
fun setup() {
testData = OrganizationTestData()
+ testData.root.makeUsernamesUnique = true
tolgeeProperties.authentication.userCanCreateOrganizations = true
testDataService.saveTestData(testData.root)
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ProjectActivityControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ProjectActivityControllerTest.kt
index bc6b6a1dc4..cd3c8c729c 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ProjectActivityControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ProjectActivityControllerTest.kt
@@ -28,6 +28,7 @@ class ProjectActivityControllerTest : ProjectAuthControllerTest("/v2/projects/")
@BeforeEach
fun setup() {
testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.addManyTranslations()
testData.setAllResolved()
testData.setAllOverride()
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ProjectStatsControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ProjectStatsControllerTest.kt
index f095d5c4c9..72f814072a 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ProjectStatsControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/ProjectStatsControllerTest.kt
@@ -26,6 +26,7 @@ class ProjectStatsControllerTest : ProjectAuthControllerTest("/v2/projects/") {
fun setup() {
mockDate("2022-03-20")
testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testData.addTranslationsWithStates()
testDataService.saveTestData(testData.root)
userAccount = testData.user
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/SlugControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/SlugControllerTest.kt
index d9dd776e32..985eff0fea 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/SlugControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/SlugControllerTest.kt
@@ -1,5 +1,7 @@
package io.tolgee.api.v2.controllers
+import io.tolgee.CleanDbBeforeClass
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.dtos.request.GenerateSlugDto
import io.tolgee.fixtures.andAssertThatJson
import io.tolgee.fixtures.andIsOk
@@ -8,6 +10,7 @@ import io.tolgee.model.Project
import io.tolgee.testing.AuthorizedControllerTest
import org.junit.jupiter.api.Test
+@CleanDbBeforeClass
class SlugControllerTest : AuthorizedControllerTest() {
@Test
fun testValidateOrganizationSlug() {
@@ -42,6 +45,7 @@ class SlugControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testGenerateOrganizationSlug() {
performAuthPost("/v2/slug/generate-organization", GenerateSlugDto("Hello world"))
.andIsOk.andAssertThatJson {
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/UserMfaControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/UserMfaControllerTest.kt
index 91683a0a11..01587906cd 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/UserMfaControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/UserMfaControllerTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.dtos.request.UserMfaRecoveryRequestDto
import io.tolgee.dtos.request.UserTotpDisableRequestDto
import io.tolgee.dtos.request.UserTotpEnableRequestDto
@@ -28,6 +29,7 @@ class UserMfaControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it enables MFA`() {
retry {
val requestDto =
@@ -44,6 +46,7 @@ class UserMfaControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it disables MFA`() {
enableMfa()
val requestDto =
@@ -56,6 +59,7 @@ class UserMfaControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it regenerates MFA recovery codes`() {
enableMfa()
val requestDto =
@@ -72,6 +76,7 @@ class UserMfaControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it requires valid TOTP code for activation`() {
retry {
val requestDto =
@@ -93,6 +98,7 @@ class UserMfaControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it requires valid password`() {
val enableRequestDto =
UserTotpEnableRequestDto(
@@ -129,6 +135,7 @@ class UserMfaControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it invalidates tokens generated prior a mfa status change`() {
retry {
loginAsAdminIfNotLogged()
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/UserPreferencesControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/UserPreferencesControllerTest.kt
index 3680a47249..07fc6abaa1 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/UserPreferencesControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/UserPreferencesControllerTest.kt
@@ -14,6 +14,7 @@ class UserPreferencesControllerTest : AuthorizedControllerTest() {
@BeforeEach
fun setup() {
testData = OrganizationTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/V2LanguageControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/V2LanguageControllerTest.kt
index afa54f47b9..13588f74ff 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/V2LanguageControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/V2LanguageControllerTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.ProjectAuthControllerTest
import io.tolgee.activity.data.ActivityType
import io.tolgee.activity.data.PropertyModification
@@ -30,6 +31,7 @@ class V2LanguageControllerTest : ProjectAuthControllerTest("/v2/projects/") {
private val languageDTOCorrect = LanguageRequest("Spanish", "Espanol", "es")
@Test
+ @CleanDbBeforeMethod
fun createLanguage() {
val base = dbPopulator.createBase(generateUniqueString())
val project = base.project
@@ -38,6 +40,7 @@ class V2LanguageControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun editLanguage() {
val base = dbPopulator.createBase(generateUniqueString())
val project = base.project
@@ -63,6 +66,7 @@ class V2LanguageControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun findAllLanguages() {
val project = dbPopulator.createBase(generateUniqueString(), "ben", "pwd").project
loginAsUser("ben")
@@ -74,6 +78,7 @@ class V2LanguageControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun deleteLanguage() {
val base = dbPopulator.createBase(generateUniqueString())
val project = base.project
@@ -86,6 +91,7 @@ class V2LanguageControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
@ProjectApiKeyAuthTestMethod(scopes = [Scope.LANGUAGES_EDIT])
fun `deletes language with API key`() {
val base = dbPopulator.createBase(generateUniqueString())
@@ -101,6 +107,7 @@ class V2LanguageControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
@ProjectApiKeyAuthTestMethod(scopes = [Scope.TRANSLATIONS_VIEW])
fun `does not delete language with API key (permissions)`() {
val base = dbPopulator.createBase(generateUniqueString())
@@ -113,6 +120,7 @@ class V2LanguageControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun `cannot delete base language`() {
val base = dbPopulator.createBase(generateUniqueString())
executeInNewTransaction {
@@ -128,6 +136,7 @@ class V2LanguageControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun `automatically sets base language`() {
val base = dbPopulator.createBase(generateUniqueString())
@@ -151,6 +160,7 @@ class V2LanguageControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun createLanguageTestValidationComa() {
val base = dbPopulator.createBase(generateUniqueString())
val project = base.project
@@ -187,6 +197,7 @@ class V2LanguageControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
@ProjectApiKeyAuthTestMethod
fun findAllLanguagesApiKey() {
performProjectAuthGet("languages").andIsOk.andAssertThatJson {
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/batch/BatchJobManagementControllerCancellationTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/batch/BatchJobManagementControllerCancellationTest.kt
index 31d5f334a4..140fc097cd 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/batch/BatchJobManagementControllerCancellationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/batch/BatchJobManagementControllerCancellationTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers.batch
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.ProjectAuthControllerTest
import io.tolgee.batch.BatchJobActivityFinalizer
import io.tolgee.batch.BatchJobChunkExecutionQueue
@@ -87,6 +88,7 @@ class BatchJobManagementControllerCancellationTest : ProjectAuthControllerTest("
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `cancels a job`() {
batchDumper.finallyDump {
val keys = testData.addTranslationOperationData(100)
@@ -143,6 +145,7 @@ class BatchJobManagementControllerCancellationTest : ProjectAuthControllerTest("
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `cannot cancel other's job`() {
saveAndPrepare()
@@ -158,6 +161,7 @@ class BatchJobManagementControllerCancellationTest : ProjectAuthControllerTest("
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `stuck job can be cancelled`() {
saveAndPrepare()
batchJobConcurrentLauncher.pause = true
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/batch/BatchJobManagementControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/batch/BatchJobManagementControllerTest.kt
index c888505db0..6d4b401b78 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/batch/BatchJobManagementControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/batch/BatchJobManagementControllerTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers.batch
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.ProjectAuthControllerTest
import io.tolgee.batch.BatchJobActivityFinalizer
import io.tolgee.batch.BatchJobChunkExecutionQueue
@@ -88,6 +89,7 @@ class BatchJobManagementControllerTest : ProjectAuthControllerTest("/v2/projects
fun setup() {
batchJobChunkExecutionQueue.clear()
testData = BatchJobsTestData()
+ testData.root.makeUsernamesUnique = true
batchJobChunkExecutionQueue.populateQueue()
Mockito.reset(
mtCreditBucketService,
@@ -107,6 +109,7 @@ class BatchJobManagementControllerTest : ProjectAuthControllerTest("/v2/projects
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `exception from inner transaction doesn't break it`() {
batchDumper.finallyDump {
val keys = testData.addTranslationOperationData(100)
@@ -148,6 +151,7 @@ class BatchJobManagementControllerTest : ProjectAuthControllerTest("/v2/projects
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `returns list of jobs`() {
saveAndPrepare()
@@ -214,6 +218,7 @@ class BatchJobManagementControllerTest : ProjectAuthControllerTest("/v2/projects
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `returns list of my jobs`() {
saveAndPrepare()
@@ -242,6 +247,7 @@ class BatchJobManagementControllerTest : ProjectAuthControllerTest("/v2/projects
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `returns list of current jobs`() {
saveAndPrepare()
@@ -303,6 +309,7 @@ class BatchJobManagementControllerTest : ProjectAuthControllerTest("/v2/projects
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `returns single job`() {
saveAndPrepare()
@@ -320,6 +327,7 @@ class BatchJobManagementControllerTest : ProjectAuthControllerTest("/v2/projects
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `cannot get other's job`() {
saveAndPrepare()
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/machineTranslation/MachineTranslationSettingsControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/machineTranslation/MachineTranslationSettingsControllerTest.kt
index 794de9d964..c395e792eb 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/machineTranslation/MachineTranslationSettingsControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/machineTranslation/MachineTranslationSettingsControllerTest.kt
@@ -34,6 +34,7 @@ class MachineTranslationSettingsControllerTest : ProjectAuthControllerTest() {
private fun initTestData() {
testData = MtSettingsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
projectSupplier = { testData.projectBuilder.self }
userAccount = testData.user
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/machineTranslation/MtCreditsControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/machineTranslation/MtCreditsControllerTest.kt
index 482bfffcfe..5ecc92af6e 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/machineTranslation/MtCreditsControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/machineTranslation/MtCreditsControllerTest.kt
@@ -17,6 +17,7 @@ class MtCreditsControllerTest : AuthorizedControllerTest() {
@BeforeEach
fun setup() {
testData = MtCreditsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerInvitingTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerInvitingTest.kt
index d188069a90..e0a6d6d4f4 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerInvitingTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerInvitingTest.kt
@@ -2,6 +2,7 @@ package io.tolgee.api.v2.controllers.organizationController
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.dtos.misc.CreateOrganizationInvitationParams
import io.tolgee.dtos.request.organization.OrganizationDto
import io.tolgee.dtos.request.organization.OrganizationInviteUserDto
@@ -50,6 +51,7 @@ class OrganizationControllerInvitingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testGetAllInvitations() {
val helloUser = dbPopulator.createUserIfNotExists("hellouser")
@@ -73,6 +75,7 @@ class OrganizationControllerInvitingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testInviteUser() {
val helloUser = dbPopulator.createUserIfNotExists("hellouser")
loginAsUser(helloUser.username)
@@ -89,6 +92,7 @@ class OrganizationControllerInvitingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testAcceptInvitation() {
val helloUser = dbPopulator.createUserIfNotExists("hellouser")
@@ -112,6 +116,7 @@ class OrganizationControllerInvitingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it prevents accepting invitation again already a member`() {
val helloUser = dbPopulator.createUserIfNotExists("hellouser")
@@ -131,6 +136,7 @@ class OrganizationControllerInvitingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testDeleteInvitation() {
val organization = prepareTestOrganization()
@@ -154,6 +160,7 @@ class OrganizationControllerInvitingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `stores name and e-mail with invitation`() {
val organization = prepareTestOrganization()
@@ -164,6 +171,7 @@ class OrganizationControllerInvitingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `sends invitation e-mail`() {
val organization = prepareTestOrganization()
@@ -177,6 +185,7 @@ class OrganizationControllerInvitingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `e-mail is sanitized`() {
dummyDto.name = "Test org test"
val organization = prepareTestOrganization()
@@ -190,6 +199,7 @@ class OrganizationControllerInvitingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `does not invite when email already invited`() {
val organization = prepareTestOrganization()
performCreateInvitation(organization.id).andIsOk
@@ -197,6 +207,7 @@ class OrganizationControllerInvitingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `does not invite when email already member`() {
val organization = prepareTestOrganization()
performAuthPut(
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerLeavingTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerLeavingTest.kt
index 14fed0f00c..f4f25dd469 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerLeavingTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerLeavingTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers.organizationController
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.development.testDataBuilder.data.OrganizationTestData
import io.tolgee.development.testDataBuilder.data.PermissionsTestData
import io.tolgee.fixtures.andAssertError
@@ -17,6 +18,7 @@ import org.springframework.data.domain.PageRequest
@AutoConfigureMockMvc
class OrganizationControllerLeavingTest : BaseOrganizationControllerTest() {
@Test
+ @CleanDbBeforeMethod
fun testLeaveOrganization() {
val testOrg = executeInNewTransaction { this.organizationService.create(dummyDto, userAccount!!) }
organizationRoleService.grantOwnerRoleToUser(dbPopulator.createUserIfNotExists("secondOwner"), testOrg)
@@ -29,6 +31,7 @@ class OrganizationControllerLeavingTest : BaseOrganizationControllerTest() {
organizationRepository.findAllPermitted(userAccount!!.id, PageRequest.of(0, 20)).content
@Test
+ @CleanDbBeforeMethod
fun `leave will reset preferred`() {
val testData = OrganizationTestData()
testDataService.saveTestData(testData.root)
@@ -46,6 +49,7 @@ class OrganizationControllerLeavingTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `removes all direct permissions when leaving`() {
val testData = PermissionsTestData()
val me = testData.addUserWithPermissions(type = ProjectPermissionType.MANAGE)
@@ -66,6 +70,7 @@ class OrganizationControllerLeavingTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testLeaveOrganizationNoOtherOwner() {
val organization = executeInNewTransaction { this.organizationService.create(dummyDto, userAccount!!) }
organizationRepository.findAllPermitted(userAccount!!.id, PageRequest.of(0, 20)).content.let {
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerMembersTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerMembersTest.kt
index 943504f89d..c3b13bab3b 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerMembersTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerMembersTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers.organizationController
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.constants.Message
import io.tolgee.development.testDataBuilder.data.OrganizationTestData
import io.tolgee.development.testDataBuilder.data.PermissionsTestData
@@ -27,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional
@AutoConfigureMockMvc
class OrganizationControllerMembersTest : BaseOrganizationControllerTest() {
@Test
+ @CleanDbBeforeMethod
fun testGetAllUsers() {
val users = dbPopulator.createUsersAndOrganizations()
loginAsUser(users[0].username)
@@ -43,6 +45,7 @@ class OrganizationControllerMembersTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it returns also users with direct permissions on some project`() {
val testData = PermissionsTestData()
testData.addUserWithPermissions(type = ProjectPermissionType.MANAGE)
@@ -85,6 +88,7 @@ class OrganizationControllerMembersTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testGetAllUsersNotPermitted() {
val users = dbPopulator.createUsersAndOrganizations()
val organizationId = users[1].organizationRoles[0].organization!!.id
@@ -92,6 +96,7 @@ class OrganizationControllerMembersTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
@Transactional
fun `cannot set own permission`() {
withOwnerInOrganization { organization, owner, role ->
@@ -109,6 +114,7 @@ class OrganizationControllerMembersTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testRemoveUser() {
withOwnerInOrganization { organization, owner, role ->
organizationRoleRepository.save(role)
@@ -120,6 +126,7 @@ class OrganizationControllerMembersTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `removes user with all permissions`() {
val testData = PermissionsTestData()
val me = testData.addUserWithPermissions(type = ProjectPermissionType.MANAGE)
@@ -135,6 +142,7 @@ class OrganizationControllerMembersTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `remove user resets preferred`() {
val testData = OrganizationTestData()
testDataService.saveTestData(testData.root)
@@ -146,6 +154,7 @@ class OrganizationControllerMembersTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `doesn't create new preferred when cannot create organizations`() {
tolgeeProperties.authentication.userCanCreateOrganizations = false
val testData = OrganizationTestData()
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerTest.kt
index 7ae6542fe2..74f06c9ff1 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationControllerTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers.organizationController
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.development.testDataBuilder.data.OrganizationTestData
import io.tolgee.dtos.request.organization.OrganizationDto
import io.tolgee.dtos.request.organization.SetOrganizationRoleDto
@@ -18,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional
@AutoConfigureMockMvc
class OrganizationControllerTest : BaseOrganizationControllerTest() {
@Test
+ @CleanDbBeforeMethod
fun `returns all`() {
val users = dbPopulator.createUsersAndOrganizations()
loginAsUser(users[1].name)
@@ -34,6 +36,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `return all with pagination`() {
val users = dbPopulator.createUsersAndOrganizations()
loginAsUser(users[1].name)
@@ -47,6 +50,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `get all returns also organizations with project with direct permission`() {
val testData = OrganizationTestData()
testDataService.saveTestData(testData.root)
@@ -62,6 +66,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `returns all project in organization without checking for permissions`() {
val testData = OrganizationTestData()
@@ -81,6 +86,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testGetAllFilterOwned() {
val users = dbPopulator.createUsersAndOrganizations()
@@ -98,6 +104,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testGetAllSort() {
val users = dbPopulator.createUsersAndOrganizations()
@@ -111,6 +118,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testGetOneWithUrl() {
createOrganization(dummyDto).let {
performAuthGet("/v2/organizations/${it.slug}").andIsOk.andAssertThatJson {
@@ -121,6 +129,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `returns one only with project base permission`() {
val testData = OrganizationTestData()
testDataService.saveTestData(testData.root)
@@ -130,6 +139,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `doesn't return without permission`() {
val testData = OrganizationTestData()
testDataService.saveTestData(testData.root)
@@ -139,6 +149,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testGetOneWithId() {
createOrganization(dummyDto).let { organization ->
performAuthGet("/v2/organizations/${organization.id}").andIsOk.andAssertThatJson {
@@ -154,6 +165,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testGetOnePermissions() {
val organization = createOrganization(dummyDto)
performAuthGet("/v2/organizations/${organization.id}").andIsOk.andAssertThatJson {
@@ -163,6 +175,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testCreate() {
performAuthPost(
"/v2/organizations",
@@ -178,6 +191,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testCreateSlugValidation() {
createOrganization(dummyDto2.also { it.slug = "hello-1" })
@@ -188,6 +202,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testCreateNotAllowed() {
this.tolgeeProperties.authentication.userCanCreateOrganizations = false
loginAsUserIfNotLogged()
@@ -199,6 +214,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testCreateValidation() {
performAuthPost(
"/v2/organizations",
@@ -229,6 +245,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testCreateGeneratesSlug() {
performAuthPost(
"/v2/organizations",
@@ -237,6 +254,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testEdit() {
executeInNewTransaction {
this.organizationService.create(dummyDto, userAccount!!).let {
@@ -261,6 +279,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `slug validation`() {
createOrganization(dummyDto2.also { it.slug = "hello-1" })
val organization = createOrganization(dummyDto)
@@ -273,6 +292,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it deletes organization`() {
val organization2 = createOrganization(dummyDto2)
createOrganization(dummyDto).let {
@@ -291,6 +311,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
@Transactional
fun `sets user role`() {
withOwnerInOrganization { organization, owner, role ->
@@ -303,6 +324,7 @@ class OrganizationControllerTest : BaseOrganizationControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
@Transactional
fun `sets base permissions`() {
withOwnerInOrganization { organization, owner, role ->
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationProjectsControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationProjectsControllerTest.kt
index e5476ac6b1..d48ac1c968 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationProjectsControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/organizationController/OrganizationProjectsControllerTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers.organizationController
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.development.testDataBuilder.data.PermissionsTestData
import io.tolgee.fixtures.andAssertThatJson
import io.tolgee.fixtures.andIsOk
@@ -17,6 +18,7 @@ import org.springframework.boot.test.context.SpringBootTest
@AutoConfigureMockMvc
class OrganizationProjectsControllerTest : AuthorizedControllerTest() {
@Test
+ @CleanDbBeforeMethod
fun `get all projects with slug`() {
val users = dbPopulator.createUsersAndOrganizations()
loginAsUser(users[1].username)
@@ -34,6 +36,7 @@ class OrganizationProjectsControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `get all projects with id`() {
val users = dbPopulator.createUsersAndOrganizations()
loginAsUser(users[1].username)
@@ -51,6 +54,7 @@ class OrganizationProjectsControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `get all projects with stats (id)`() {
val users = dbPopulator.createUsersAndOrganizations()
loginAsUser(users[1].username)
@@ -66,6 +70,7 @@ class OrganizationProjectsControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `get all projects with stats (slug)`() {
val users = dbPopulator.createUsersAndOrganizations()
loginAsUser(users[1].username)
@@ -81,6 +86,7 @@ class OrganizationProjectsControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `user wint none permissions cannot see the the project`() {
val testData = PermissionsTestData()
val user = testData.addUserWithPermissions(type = ProjectPermissionType.NONE)
@@ -93,6 +99,7 @@ class OrganizationProjectsControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `user with no direct permission cannot see the the project in organization with none base permissions`() {
val testData = PermissionsTestData()
val user =
@@ -116,6 +123,7 @@ class OrganizationProjectsControllerTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `user with scopes can see the project`() {
val testData = PermissionsTestData()
val user = testData.addUserWithPermissions(scopes = listOf(Scope.ADMIN))
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/tags/TagsControllerComplexOperationTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/tags/TagsControllerComplexOperationTest.kt
index 1bc1cbab88..4f8b029be1 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/tags/TagsControllerComplexOperationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/tags/TagsControllerComplexOperationTest.kt
@@ -15,6 +15,7 @@ class TagsControllerComplexOperationTest : ProjectAuthControllerTest("/v2/projec
@BeforeEach
fun setup() {
testData = TagsTestData()
+ testData.root.makeUsernamesUnique = true
testData.addNamespacedKey()
projectSupplier = { testData.projectBuilder.self }
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/tags/TagsControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/tags/TagsControllerTest.kt
index bc252c3c12..a132b3f95b 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/tags/TagsControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/tags/TagsControllerTest.kt
@@ -21,6 +21,7 @@ class TagsControllerTest : ProjectAuthControllerTest("/v2/projects/") {
@BeforeEach
fun setup() {
testData = TagsTestData()
+ testData.root.makeUsernamesUnique = true
projectSupplier = { testData.projectBuilder.self }
testDataService.saveTestData(testData.root)
userAccount = testData.user
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerMtTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerMtTest.kt
index 3727e4c68b..2aecb9878d 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerMtTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerMtTest.kt
@@ -25,6 +25,7 @@ import io.tolgee.fixtures.andPrettyPrint
import io.tolgee.fixtures.mapResponseTo
import io.tolgee.fixtures.node
import io.tolgee.model.mtServiceConfig.Formality
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.annotations.ProjectJWTAuthTestMethod
import io.tolgee.testing.assert
import io.tolgee.testing.assertions.Assertions.assertThat
@@ -53,6 +54,7 @@ import software.amazon.awssdk.services.translate.model.TranslateTextResponse
import java.util.*
import software.amazon.awssdk.services.translate.model.Formality as AwsFormality
+@ContextRecreatingTest
class TranslationSuggestionControllerMtTest : ProjectAuthControllerTest("/v2/projects/") {
lateinit var testData: SuggestionTestData
@@ -185,6 +187,7 @@ class TranslationSuggestionControllerMtTest : ProjectAuthControllerTest("/v2/pro
private fun initTestData() {
testData = SuggestionTestData()
+ testData.root.makeUsernamesUnique = true
projectSupplier = { testData.projectBuilder.self }
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerStreamingTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerStreamingTest.kt
index 7b82b0b397..551e720a4d 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerStreamingTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerStreamingTest.kt
@@ -9,6 +9,7 @@ import io.tolgee.fixtures.andAssertThatJson
import io.tolgee.fixtures.andPrettyPrint
import io.tolgee.model.Language
import io.tolgee.service.machineTranslation.MtService
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.annotations.ProjectJWTAuthTestMethod
import io.tolgee.testing.assert
import org.junit.jupiter.api.BeforeEach
@@ -19,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.mock.mockito.MockBean
import org.springframework.boot.test.mock.mockito.SpyBean
+@ContextRecreatingTest
class TranslationSuggestionControllerStreamingTest : ProjectAuthControllerTest("/v2/projects/") {
@Suppress("LateinitVarOverridesLateinitVar")
@SpyBean
@@ -48,6 +50,7 @@ class TranslationSuggestionControllerStreamingTest : ProjectAuthControllerTest("
czechLanguage = projectBuilder.addCzech().self
hindiLanguage = projectBuilder.addHindi().self
}
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerTmTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerTmTest.kt
index 0e4eddeaa2..1a0067feb7 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerTmTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionControllerTmTest.kt
@@ -24,6 +24,7 @@ class TranslationSuggestionControllerTmTest : ProjectAuthControllerTest("/v2/pro
@BeforeEach
fun initTestData() {
testData = SuggestionTestData()
+ testData.root.makeUsernamesUnique = true
projectSupplier = { testData.projectBuilder.self }
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionWithCacheTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionWithCacheTest.kt
index 46948c26a2..73c3f067c5 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionWithCacheTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translationSuggestionController/TranslationSuggestionWithCacheTest.kt
@@ -97,6 +97,7 @@ class TranslationSuggestionWithCacheTest : ProjectAuthControllerTest("/v2/projec
private fun initTestData() {
testData = SuggestionTestData()
+ testData.root.makeUsernamesUnique = true
projectSupplier = { testData.projectBuilder.self }
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/TranslationCommentControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/TranslationCommentControllerTest.kt
index 90107d2eeb..4bce4ae23c 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/TranslationCommentControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/TranslationCommentControllerTest.kt
@@ -29,6 +29,7 @@ class TranslationCommentControllerTest : ProjectAuthControllerTest("/v2/projects
@BeforeEach
fun setup() {
testData = TranslationCommentsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
this.projectSupplier = { testData.project }
userAccount = testData.user
@@ -43,7 +44,7 @@ class TranslationCommentControllerTest : ProjectAuthControllerTest("/v2/projects
node("id").isValidId
node("text").isEqualTo("First comment")
node("state").isEqualTo("NEEDS_RESOLUTION")
- node("author.username").isEqualTo("franta")
+ node("author.username").isString.contains("franta")
node("createdAt").isNumber.isGreaterThan(BigDecimal(1624985181827))
node("updatedAt").isNumber.isGreaterThan(BigDecimal(1624985181827))
}
@@ -58,7 +59,7 @@ class TranslationCommentControllerTest : ProjectAuthControllerTest("/v2/projects
node("id").isValidId
node("text").isEqualTo("First comment")
node("state").isEqualTo("NEEDS_RESOLUTION")
- node("author.username").isEqualTo("franta")
+ node("author.username").isString.contains("franta")
node("createdAt").isNumber.isGreaterThan(BigDecimal(1624985181827))
node("updatedAt").isNumber.isGreaterThan(BigDecimal(1624985181827))
}
@@ -77,7 +78,7 @@ class TranslationCommentControllerTest : ProjectAuthControllerTest("/v2/projects
node("id").isValidId
node("text").isEqualTo("Test")
node("state").isEqualTo("RESOLUTION_NOT_NEEDED")
- node("author.username").isEqualTo("franta")
+ node("author.username").isString.contains("franta")
node("createdAt").isNumber.isGreaterThan(BigDecimal(1624985181827))
node("updatedAt").isNumber.isGreaterThan(BigDecimal(1624985181827))
}
@@ -100,7 +101,7 @@ class TranslationCommentControllerTest : ProjectAuthControllerTest("/v2/projects
node("id").isValidId
node("text").isEqualTo("Test")
node("state").isEqualTo("RESOLUTION_NOT_NEEDED")
- node("author.username").isEqualTo("franta")
+ node("author.username").isString.contains("franta")
node("createdAt").isNumber.isGreaterThan(BigDecimal(1624985181827))
node("updatedAt").isNumber.isGreaterThan(BigDecimal(1624985181827))
}
@@ -167,7 +168,7 @@ class TranslationCommentControllerTest : ProjectAuthControllerTest("/v2/projects
node("id").isValidId
node("text").isEqualTo("Updated")
node("state").isEqualTo("RESOLVED")
- node("author.username").isEqualTo("franta")
+ node("author.username").isString.contains("franta")
node("createdAt").isNumber.isGreaterThan(BigDecimal(1624985181827))
node("updatedAt").isNumber.isGreaterThan(BigDecimal(1624985181827))
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerCachingTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerCachingTest.kt
index a45c94f8d2..e932feb29e 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerCachingTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerCachingTest.kt
@@ -26,6 +26,7 @@ class TranslationsControllerCachingTest : ProjectAuthControllerTest("/v2/project
@BeforeEach
fun setup() {
testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
this.projectSupplier = { testData.project }
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerCursorTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerCursorTest.kt
index ecfb0b8dab..413368129b 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerCursorTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerCursorTest.kt
@@ -21,6 +21,7 @@ class TranslationsControllerCursorTest : ProjectAuthControllerTest("/v2/projects
@BeforeEach
fun setup() {
testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
this.projectSupplier = { testData.project }
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerFilterTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerFilterTest.kt
index c0420b8ced..e630be15cb 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerFilterTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerFilterTest.kt
@@ -25,6 +25,7 @@ class TranslationsControllerFilterTest : ProjectAuthControllerTest("/v2/projects
@BeforeEach
fun setup() {
testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
this.projectSupplier = { testData.project }
}
@@ -78,6 +79,7 @@ class TranslationsControllerFilterTest : ProjectAuthControllerTest("/v2/projects
@Test
fun `filters by namespace`() {
val testData = NamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.projectBuilder.self }
@@ -105,6 +107,7 @@ class TranslationsControllerFilterTest : ProjectAuthControllerTest("/v2/projects
@ProjectJWTAuthTestMethod
fun `it filters by empty namespace`() {
val testData = NamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.projectBuilder.self }
@@ -119,6 +122,7 @@ class TranslationsControllerFilterTest : ProjectAuthControllerTest("/v2/projects
@ProjectJWTAuthTestMethod
fun `it doesn't filter when no namespace is provided`() {
val testData = NamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.projectBuilder.self }
@@ -335,6 +339,7 @@ class TranslationsControllerFilterTest : ProjectAuthControllerTest("/v2/projects
@Test
fun `filters by outdated`() {
val testData = TranslationSourceChangeStateTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.projectBuilder.self }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerHistoryTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerHistoryTest.kt
index 9274020808..aa5e144dd7 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerHistoryTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerHistoryTest.kt
@@ -32,6 +32,7 @@ class TranslationsControllerHistoryTest : ProjectAuthControllerTest("/v2/project
@BeforeEach
fun setup() {
testDataService.saveTestData {
+ this.makeUsernamesUnique = true
addUserAccount {
username = "franta"
name = "Frantisek"
@@ -93,7 +94,7 @@ class TranslationsControllerHistoryTest : ProjectAuthControllerTest("/v2/project
node("revisionType").isEqualTo("MOD")
node("author") {
node("id").isNumber.isGreaterThan(0.toBigDecimal())
- node("username").isEqualTo("franta")
+ node("username").isString.contains("franta")
node("name").isEqualTo("Frantisek")
node("avatar") {
node("large").isString.contains(".png")
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerLanguagePermissionTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerLanguagePermissionTest.kt
index d1b45ebba4..a05d50196a 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerLanguagePermissionTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerLanguagePermissionTest.kt
@@ -7,6 +7,7 @@ import io.tolgee.fixtures.andAssertThatJson
import io.tolgee.fixtures.andIsForbidden
import io.tolgee.fixtures.andIsOk
import io.tolgee.testing.annotations.ProjectJWTAuthTestMethod
+import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
@@ -20,10 +21,16 @@ class TranslationsControllerLanguagePermissionTest : ProjectAuthControllerTest("
@BeforeEach
fun setup() {
testData = LanguagePermissionsTestData()
+ testData.root.makeUsernamesUnique = true
this.projectSupplier = { testData.project }
testDataService.saveTestData(testData.root)
}
+ @AfterEach
+ fun cleanup() {
+ testDataService.cleanApiKeys(testData.root)
+ }
+
@ProjectJWTAuthTestMethod
@Test
fun `denies access for user without the language permission - update`() {
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerModificationTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerModificationTest.kt
index 92d490c44d..fa29e943c7 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerModificationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerModificationTest.kt
@@ -31,6 +31,7 @@ class TranslationsControllerModificationTest : ProjectAuthControllerTest("/v2/pr
@BeforeEach
fun setup() {
testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
}
@ProjectJWTAuthTestMethod
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerNamespacesTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerNamespacesTest.kt
index edd45f9fab..4470d47abd 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerNamespacesTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerNamespacesTest.kt
@@ -22,6 +22,7 @@ class TranslationsControllerNamespacesTest : ProjectAuthControllerTest("/v2/proj
@ProjectJWTAuthTestMethod
fun `it returns namespaces`() {
val testData = NamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.projectBuilder.self }
@@ -43,6 +44,7 @@ class TranslationsControllerNamespacesTest : ProjectAuthControllerTest("/v2/proj
@ProjectJWTAuthTestMethod
fun `creates key in namespace on set or create`() {
val testData = NamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.projectBuilder.self }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerViewTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerViewTest.kt
index 1fc38f8d30..c783c8fd5a 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerViewTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/translations/v2TranslationsController/TranslationsControllerViewTest.kt
@@ -35,6 +35,7 @@ class TranslationsControllerViewTest : ProjectAuthControllerTest("/v2/projects/"
@BeforeEach
fun setup() {
testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
this.projectSupplier = { testData.project }
}
@@ -299,6 +300,7 @@ class TranslationsControllerViewTest : ProjectAuthControllerTest("/v2/projects/"
@Test
fun `returns all translations by ns`() {
val testData = NamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.projectBuilder.self }
@@ -318,6 +320,7 @@ class TranslationsControllerViewTest : ProjectAuthControllerTest("/v2/projects/"
@Test
fun `returns all translations by default ns`() {
val testData = NamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.projectBuilder.self }
@@ -448,6 +451,7 @@ class TranslationsControllerViewTest : ProjectAuthControllerTest("/v2/projects/"
private fun prepareImportData() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.addManyTranslations()
testData.setAllResolved()
testData.setAllOverride()
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImageUploadController/V2ImageUploadControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImageUploadController/V2ImageUploadControllerTest.kt
index a9905114c0..3bfa978256 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImageUploadController/V2ImageUploadControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImageUploadController/V2ImageUploadControllerTest.kt
@@ -4,6 +4,7 @@
package io.tolgee.api.v2.controllers.v2ImageUploadController
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.component.MaxUploadedFilesByUserProvider
import io.tolgee.fixtures.andAssertThatJson
import io.tolgee.fixtures.andIsBadRequest
@@ -58,6 +59,7 @@ class V2ImageUploadControllerTest : AbstractV2ImageUploadControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `does not upload more then user limit`() {
whenever(maxUploadedFilesByUserProvider.invoke()).thenAnswer { 3L }
repeat((1..4).count()) {
@@ -76,6 +78,7 @@ class V2ImageUploadControllerTest : AbstractV2ImageUploadControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `returns file`() {
val image = imageUploadService.store(screenshotFile, userAccount!!, null)
val result =
@@ -91,6 +94,7 @@ class V2ImageUploadControllerTest : AbstractV2ImageUploadControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun delete() {
whenever(maxUploadedFilesByUserProvider.invoke()).thenAnswer { 30L }
val list =
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/SingleStepImportControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/SingleStepImportControllerTest.kt
index 199a56d6e7..96fa3acd8e 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/SingleStepImportControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/SingleStepImportControllerTest.kt
@@ -362,6 +362,7 @@ class SingleStepImportControllerTest : ProjectAuthControllerTest("/v2/projects/"
}
private fun saveAndPrepare() {
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.project }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerAddFilesTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerAddFilesTest.kt
index 9de9f0bb4c..855b472371 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerAddFilesTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerAddFilesTest.kt
@@ -286,6 +286,7 @@ class V2ImportControllerAddFilesTest : ProjectAuthControllerTest("/v2/projects/"
@Test
fun `correctly computes conflicts on import`() {
val testData = ImportCleanTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
loginAsUser(testData.userAccount.username)
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerApplicationTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerApplicationTest.kt
index ad38f96bfc..fa6482600a 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerApplicationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerApplicationTest.kt
@@ -20,6 +20,7 @@ class V2ImportControllerApplicationTest : ProjectAuthControllerTest("/v2/project
val testData = ImportTestData()
testData.setAllResolved()
testData.setAllOverride()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val user = testData.root.data.userAccounts[0].self
val projectId = testData.project.id
@@ -34,6 +35,7 @@ class V2ImportControllerApplicationTest : ProjectAuthControllerTest("/v2/project
@Test
fun `it applies the import with force override`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val user = testData.root.data.userAccounts[0].self
val projectId = testData.project.id
@@ -48,6 +50,7 @@ class V2ImportControllerApplicationTest : ProjectAuthControllerTest("/v2/project
@Test
fun `it applies the import with force keep`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val user = testData.root.data.userAccounts[0].self
val projectId = testData.project.id
@@ -60,6 +63,7 @@ class V2ImportControllerApplicationTest : ProjectAuthControllerTest("/v2/project
fun `it imports empty keys`() {
val testData = ImportTestData()
testData.addEmptyKey()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val user = testData.root.data.userAccounts[0].self
val projectId = testData.project.id
@@ -75,7 +79,7 @@ class V2ImportControllerApplicationTest : ProjectAuthControllerTest("/v2/project
@Test
fun `it checks permissions`() {
val testData = ImportTestData()
-
+ testData.root.makeUsernamesUnique = true
val user = testData.useTranslateOnlyUser()
testDataService.saveTestData(testData.root)
@@ -93,6 +97,7 @@ class V2ImportControllerApplicationTest : ProjectAuthControllerTest("/v2/project
@Test
fun `it checks language permissions`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.importBuilder.data.importFiles[0].data.importKeys.removeIf { it.self == testData.newLongKey }
val resolveFrench = testData.addFrenchTranslations()
resolveFrench()
@@ -100,6 +105,7 @@ class V2ImportControllerApplicationTest : ProjectAuthControllerTest("/v2/project
val user = testData.useTranslateOnlyUser()
testDataService.saveTestData(testData.root)
+ testData.root.makeUsernamesUnique = true
val projectId = testData.project.id
loginAsUser(user.username)
@@ -116,6 +122,7 @@ class V2ImportControllerApplicationTest : ProjectAuthControllerTest("/v2/project
@Test
fun `it checks permissions (view only)`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.importBuilder.data.importFiles[0].data.importKeys.removeIf { it.self == testData.newLongKey }
val resolveFrench = testData.addFrenchTranslations()
resolveFrench()
@@ -134,6 +141,7 @@ class V2ImportControllerApplicationTest : ProjectAuthControllerTest("/v2/project
@ProjectApiKeyAuthTestMethod(scopes = [Scope.TRANSLATIONS_VIEW])
fun `it checks permissions with API key (view only)`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.importBuilder.data.importFiles[0].data.importKeys.removeIf { it.self == testData.newLongKey }
val resolveFrench = testData.addFrenchTranslations()
resolveFrench()
@@ -149,6 +157,7 @@ class V2ImportControllerApplicationTest : ProjectAuthControllerTest("/v2/project
@Test
fun `it sets outdated on update`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val user = testData.root.data.userAccounts[0].self
val projectId = testData.project.id
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerConflictsBetweenFilesTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerConflictsBetweenFilesTest.kt
index 94d34c8419..d47852203d 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerConflictsBetweenFilesTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerConflictsBetweenFilesTest.kt
@@ -260,6 +260,7 @@ class V2ImportControllerConflictsBetweenFilesTest : ProjectAuthControllerTest("/
private fun prepareTestData(): ImportCleanTestData {
val testData = ImportCleanTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
loginAsUser(testData.userAccount.username)
projectSupplier = { testData.projectBuilder.self }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerManipulationTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerManipulationTest.kt
index 894940abce..4211392326 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerManipulationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerManipulationTest.kt
@@ -15,6 +15,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@Test
fun `it deletes import`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val user = testData.root.data.userAccounts[0].self
val projectId = testData.project.id
@@ -28,6 +29,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@Test
fun `it deletes import language`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val user = testData.root.data.userAccounts[0].self
val projectId = testData.project.id
@@ -40,6 +42,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@Test
fun `it resolves import translation conflict (override)`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val user = testData.root.data.userAccounts[0].self
val projectId = testData.project.id
@@ -56,6 +59,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@Test
fun `it resolves import translation conflict (keep)`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val user = testData.root.data.userAccounts[0].self
val projectId = testData.project.id
@@ -72,6 +76,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@Test
fun `it resolves all language translation conflicts (override)`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val user = testData.root.data.userAccounts[0].self
val projectId = testData.project.id
@@ -86,6 +91,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@Test
fun `it resolves all language translation conflicts (keep)`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val user = testData.root.data.userAccounts[0].self
val projectId = testData.project.id
@@ -102,6 +108,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@Test
fun `it selects language`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.setAllResolved()
testData.setAllOverride()
testDataService.saveTestData(testData.root)
@@ -120,6 +127,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@ProjectJWTAuthTestMethod
fun `it selects namespace, resets conflicts`() {
val testData = ImportNamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
projectSupplier = { testData.project }
userAccount = testData.userAccount
@@ -144,6 +152,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@ProjectJWTAuthTestMethod
fun `returns all namespaces`() {
val testData = ImportNamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
projectSupplier = { testData.project }
userAccount = testData.userAccount
@@ -159,6 +168,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@Test
fun `it selects same language for different namespaces`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
// assign the existing french to the import french
testData.importFrench.existingLanguage = testData.french
val nsData = testData.addFilesWithNamespaces()
@@ -178,6 +188,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@Test
fun `conflicts are refreshed when changing namespace`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
// assign the existing french to the import french
testData.importFrench.existingLanguage = testData.french
val nsData = testData.addFilesWithNamespaces()
@@ -197,6 +208,7 @@ class V2ImportControllerManipulationTest : ProjectAuthControllerTest("/v2/projec
@Test
fun `it resets selected language`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.setAllResolved()
testData.setAllOverride()
testDataService.saveTestData(testData.root)
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerPluralizationTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerPluralizationTest.kt
index 7e27c1fbc3..375d715b0d 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerPluralizationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerPluralizationTest.kt
@@ -32,6 +32,7 @@ class V2ImportControllerPluralizationTest : ProjectAuthControllerTest("/v2/proje
private fun saveTestDataAndApplyImport() {
testData = ImportPluralizationTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.userAccount
projectSupplier = { testData.projectBuilder.self }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerResultTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerResultTest.kt
index cbf903a5d3..08cbe614b1 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerResultTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/V2ImportControllerResultTest.kt
@@ -28,6 +28,7 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `it returns correct result data`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
loginAsUser(testData.root.data.userAccounts[0].self.username)
@@ -50,6 +51,7 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `it removes expired import`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
setForcedDate(DateUtils.addHours(Date(), 2))
@@ -66,6 +68,7 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `it returns correct specific language`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
loginAsUser(testData.root.data.userAccounts[0].self.username)
@@ -86,6 +89,7 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `it paginates result`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
loginAsUser(testData.root.data.userAccounts[0].self.username)
@@ -97,6 +101,7 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `it return correct translation data (all)`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.addPluralImport()
testDataService.saveTestData(testData.root)
loginAsUser(testData.root.data.userAccounts[0].self.username)
@@ -121,6 +126,7 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `it return correct translation data (only conflicts)`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.addPluralImport()
testDataService.saveTestData(testData.root)
loginAsUser(testData.root.data.userAccounts[0].self.username)
@@ -150,6 +156,7 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `it searches for translation data`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
loginAsUser(testData.root.data.userAccounts[0].self.username)
@@ -186,6 +193,7 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `it pages translation data`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
loginAsUser(testData.root.data.userAccounts[0].self.username)
@@ -200,6 +208,7 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `onlyConflict filter on translations works`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
loginAsUser(testData.root.data.userAccounts[0].self.username)
@@ -220,6 +229,7 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `onlyUnresolved filter on translations works`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.translationWithConflict.resolve()
testDataService.saveTestData(testData.root)
loginAsUser(testData.root.data.userAccounts[0].self.username)
@@ -241,12 +251,14 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `import is isolated`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
loginAsUser(testData.root.data.userAccounts[0].self.username)
performAuthGet("/v2/projects/${testData.project.id}/import/result").andIsOk
val testData2 = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData2.userAccount.username = "user2"
testDataService.saveTestData(testData2.root)
loginAsUser(testData2.root.data.userAccounts[0].self.username)
@@ -275,6 +287,7 @@ class V2ImportControllerResultTest : AuthorizedControllerTest() {
@Test
fun `it returns correct file issues`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.addManyFileIssues()
testData.setAllResolved()
testData.setAllOverride()
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/importSettings/ImportSettingsControllerApplicationTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/importSettings/ImportSettingsControllerApplicationTest.kt
index 1fe0de882a..86eb5386d8 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/importSettings/ImportSettingsControllerApplicationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/importSettings/ImportSettingsControllerApplicationTest.kt
@@ -217,6 +217,7 @@ class ImportSettingsControllerApplicationTest : ProjectAuthControllerTest("/v2/p
}
private fun saveAndPrepare() {
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.project }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/importSettings/ImportSettingsControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/importSettings/ImportSettingsControllerTest.kt
index a88f86e93d..3be328eb42 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/importSettings/ImportSettingsControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/importSettings/ImportSettingsControllerTest.kt
@@ -15,6 +15,7 @@ class ImportSettingsControllerTest : ProjectAuthControllerTest("/v2/projects/")
@ProjectJWTAuthTestMethod
fun `stores settings`() {
val testData = BaseTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.project }
@@ -46,6 +47,7 @@ class ImportSettingsControllerTest : ProjectAuthControllerTest("/v2/projects/")
overrideKeyDescriptions = true
convertPlaceholdersToIcu = false
}
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.project }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerComplexEditTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerComplexEditTest.kt
index 0a30d1b55d..d6af278049 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerComplexEditTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerComplexEditTest.kt
@@ -51,6 +51,7 @@ class KeyControllerComplexEditTest : ProjectAuthControllerTest("/v2/projects/")
@BeforeEach
fun setup() {
testData = KeysTestData()
+ testData.root.makeUsernamesUnique = true
testData.projectBuilder.addCzech()
testDataService.saveTestData(testData.root)
userAccount = testData.user
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerCreationTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerCreationTest.kt
index 3207ac7ddf..ad0fa53dcb 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerCreationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerCreationTest.kt
@@ -49,6 +49,7 @@ class KeyControllerCreationTest : ProjectAuthControllerTest("/v2/projects/") {
@BeforeEach
fun setup() {
testData = KeysTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
this.projectSupplier = { testData.project }
@@ -371,6 +372,7 @@ class KeyControllerCreationTest : ProjectAuthControllerTest("/v2/projects/") {
stateChangeTags: List?,
) {
val testData = PermissionsTestData()
+ testData.root.makeUsernamesUnique = true
val user =
testData.addUserWithPermissions(
scopes = scopes,
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerDeleteManyKeysTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerDeleteManyKeysTest.kt
index 9f9ff1fa16..c75052443e 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerDeleteManyKeysTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerDeleteManyKeysTest.kt
@@ -24,6 +24,7 @@ class KeyControllerDeleteManyKeysTest : ProjectAuthControllerTest("/v2/projects/
@BeforeEach
fun setup() {
testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testData.generateLotOfData(100)
testDataService.saveTestData(testData.root)
userAccount = testData.user
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerInfoTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerInfoTest.kt
index d75413e315..1bdbeec5a2 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerInfoTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerInfoTest.kt
@@ -24,6 +24,7 @@ class KeyControllerInfoTest : ProjectAuthControllerTest("/v2/projects/") {
fun setup() {
executeInNewTransaction {
testData = KeysInfoTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
projectSupplier = { testData.projectBuilder.self }
userAccount = testData.user
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerKeySearchTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerKeySearchTest.kt
index a467ae1424..09cee63cc1 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerKeySearchTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerKeySearchTest.kt
@@ -29,6 +29,7 @@ class KeyControllerKeySearchTest : ProjectAuthControllerTest("/v2/projects/"), L
@BeforeEach
fun setup() {
testData = KeySearchTestData()
+ testData.root.makeUsernamesUnique = true
}
fun saveAndPrepare() {
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerLanguageDisablingTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerLanguageDisablingTest.kt
index ba6a3465cc..7533a2a2f3 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerLanguageDisablingTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerLanguageDisablingTest.kt
@@ -24,6 +24,7 @@ class KeyControllerLanguageDisablingTest : ProjectAuthControllerTest("/v2/projec
@BeforeEach
fun setup() {
testData = KeyLanguageDisablingTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
this.projectSupplier = { testData.project.self }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerLanguagePermissionTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerLanguagePermissionTest.kt
index cef6e8dc7d..d293560f46 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerLanguagePermissionTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerLanguagePermissionTest.kt
@@ -6,6 +6,7 @@ import io.tolgee.fixtures.andIsForbidden
import io.tolgee.fixtures.andIsOk
import io.tolgee.testing.annotations.ProjectApiKeyAuthTestMethod
import io.tolgee.testing.annotations.ProjectJWTAuthTestMethod
+import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
@@ -20,10 +21,16 @@ class KeyControllerLanguagePermissionTest : ProjectAuthControllerTest("/v2/proje
@BeforeEach
fun setup() {
testData = LanguagePermissionsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
this.projectSupplier = { testData.project }
}
+ @AfterEach
+ fun cleanup() {
+ testDataService.cleanApiKeys(testData.root)
+ }
+
@ProjectJWTAuthTestMethod
@Test
fun `denies access for user without the language permission - Token Auth`() {
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerPluralizationTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerPluralizationTest.kt
index 787ab793f7..c9d67d6d74 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerPluralizationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerPluralizationTest.kt
@@ -44,6 +44,7 @@ class KeyControllerPluralizationTest : ProjectAuthControllerTest("/v2/projects/"
}
private fun saveAndPrepare() {
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
this.projectSupplier = { testData.project }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerResolvableImportAutomationsTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerResolvableImportAutomationsTest.kt
index 79a754ac1a..eb79f10ed4 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerResolvableImportAutomationsTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerResolvableImportAutomationsTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers.v2KeyController
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.development.testDataBuilder.data.ResolvableImportTestData
import io.tolgee.fixtures.MachineTranslationTest
import io.tolgee.fixtures.andIsOk
@@ -26,6 +27,7 @@ class KeyControllerResolvableImportAutomationsTest : MachineTranslationTest() {
}
@Test
+ @CleanDbBeforeMethod
@ProjectJWTAuthTestMethod
fun `auto translates on import`() {
val keyName = "test"
@@ -35,6 +37,7 @@ class KeyControllerResolvableImportAutomationsTest : MachineTranslationTest() {
}
@Test
+ @CleanDbBeforeMethod
@ProjectJWTAuthTestMethod
fun `sets outdated flag on base changed`() {
val keyName = "keyWith2Translations"
@@ -61,6 +64,7 @@ class KeyControllerResolvableImportAutomationsTest : MachineTranslationTest() {
}
fun saveTestData() {
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerResolvableImportTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerResolvableImportTest.kt
index 6930d9b642..353eb70549 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerResolvableImportTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerResolvableImportTest.kt
@@ -34,6 +34,7 @@ class KeyControllerResolvableImportTest : ProjectAuthControllerTest("/v2/project
@BeforeEach
fun setup() {
testData = ResolvableImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
projectSupplier = { testData.projectBuilder.self }
userAccount = testData.user
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerTest.kt
index 02ea742685..a2a0951420 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerTest.kt
@@ -402,6 +402,7 @@ class KeyControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
private fun saveTestDataAndPrepare() {
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
this.projectSupplier = { testData.project }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerWithNamespacesTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerWithNamespacesTest.kt
index 1697bdbdc6..4a28e6d844 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerWithNamespacesTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerWithNamespacesTest.kt
@@ -30,6 +30,7 @@ class KeyControllerWithNamespacesTest : ProjectAuthControllerTest("/v2/projects/
@BeforeEach
fun setup() {
testData = NamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
this.projectSupplier = { testData.projectBuilder.self }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerCreateTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerCreateTest.kt
index 5151156059..a5130d0074 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerCreateTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerCreateTest.kt
@@ -1,6 +1,7 @@
package io.tolgee.api.v2.controllers.v2ProjectsController
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.dtos.request.LanguageRequest
import io.tolgee.dtos.request.project.CreateProjectRequest
import io.tolgee.fixtures.AuthorizedRequestFactory
@@ -17,11 +18,9 @@ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMock
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.http.MediaType
import org.springframework.test.web.servlet.result.MockMvcResultMatchers
-import org.springframework.transaction.annotation.Transactional
@SpringBootTest
@AutoConfigureMockMvc
-@Transactional
class ProjectsControllerCreateTest : AuthorizedControllerTest() {
private val languageDTO =
LanguageRequest(
@@ -61,6 +60,7 @@ class ProjectsControllerCreateTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun createProject() {
dbPopulator.createBase("test")
testCreateValidationSizeShort()
@@ -69,6 +69,7 @@ class ProjectsControllerCreateTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun createProjectOrganization() {
val userAccount = dbPopulator.createUserIfNotExists("testuser")
val organization = dbPopulator.createOrganization("Test Organization", userAccount)
@@ -86,6 +87,7 @@ class ProjectsControllerCreateTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testCreateValidationEmptyLanguages() {
val request =
CreateProjectRequest(
@@ -96,6 +98,7 @@ class ProjectsControllerCreateTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `validates languages`() {
val request =
CreateProjectRequest(
@@ -116,7 +119,10 @@ class ProjectsControllerCreateTest : AuthorizedControllerTest() {
}
private fun testCreateCorrectRequest() {
- val organization = dbPopulator.createOrganizationIfNotExist("nice", userAccount = userAccount!!)
+ val organization =
+ executeInNewTransaction {
+ dbPopulator.createOrganizationIfNotExist("nice", userAccount = userAccount!!)
+ }
val request = CreateProjectRequest("aaa", listOf(languageDTO), organizationId = organization.id)
mvc.perform(
AuthorizedRequestFactory.loggedPost("/v2/projects")
@@ -126,16 +132,19 @@ class ProjectsControllerCreateTest : AuthorizedControllerTest() {
)
.andExpect(MockMvcResultMatchers.status().isOk)
.andReturn()
- val projectDto = projectService.findAllPermitted(userAccount!!).find { it.name == "aaa" }
- assertThat(projectDto).isNotNull
- val project = projectService.get(projectDto!!.id!!)
- assertThat(project.languages).isNotEmpty
- val language = project.languages.stream().findFirst().orElse(null)
- assertThat(language).isNotNull
- assertThat(language.tag).isEqualTo("en")
- assertThat(language.name).isEqualTo("English")
- assertThat(language.originalName).isEqualTo("Original English")
- assertThat(language.flagEmoji).isEqualTo("\uD83C\uDDEC\uD83C\uDDE7")
+
+ executeInNewTransaction {
+ val projectDto = projectService.findAllPermitted(userAccount!!).find { it.name == "aaa" }
+ assertThat(projectDto).isNotNull
+ val project = projectService.get(projectDto!!.id!!)
+ assertThat(project.languages).isNotEmpty
+ val language = project.languages.stream().findFirst().orElse(null)
+ assertThat(language).isNotNull
+ assertThat(language.tag).isEqualTo("en")
+ assertThat(language.name).isEqualTo("English")
+ assertThat(language.originalName).isEqualTo("Original English")
+ assertThat(language.flagEmoji).isEqualTo("\uD83C\uDDEC\uD83C\uDDE7")
+ }
}
private fun testCreateValidationSizeShort() {
@@ -155,26 +164,33 @@ class ProjectsControllerCreateTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `sets proper baseLanguage on create when provided`() {
performAuthPost("/v2/projects", createForLanguagesDto).andPrettyPrint.andIsOk.andAssertThatJson {
node("id").asNumber().satisfies {
- assertThat(projectService.get(it.toLong()).baseLanguage!!.tag)!!.isEqualTo("cs")
+ executeInNewTransaction { _ ->
+ assertThat(projectService.get(it.toLong()).baseLanguage!!.tag)!!.isEqualTo("cs")
+ }
}
}
}
@Test
+ @CleanDbBeforeMethod
fun `sets proper baseLanguage on create when not provided`() {
performAuthPost("/v2/projects", createForLanguagesDto.copy(baseLanguageTag = null))
.andIsOk.andAssertThatJson {
node("id").asNumber().satisfies {
- assertThat(projectService.get(it.toLong()).baseLanguage!!.tag)!!
- .isEqualTo("en")
+ executeInNewTransaction { _ ->
+ assertThat(projectService.get(it.toLong()).baseLanguage!!.tag)!!
+ .isEqualTo("en")
+ }
}
}
}
@Test
+ @CleanDbBeforeMethod
fun `sets proper baseLanguage on create when not exists`() {
performAuthPost("/v2/projects", createForLanguagesDto.apply { this.baseLanguageTag = "not_exists" })
.andIsBadRequest
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerInvitationTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerInvitationTest.kt
index 71ad6f8a72..f3c062da47 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerInvitationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerInvitationTest.kt
@@ -2,6 +2,7 @@ package io.tolgee.api.v2.controllers.v2ProjectsController
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.ProjectAuthControllerTest
import io.tolgee.constants.Message
import io.tolgee.development.testDataBuilder.data.BaseTestData
@@ -77,6 +78,7 @@ class ProjectsControllerInvitationTest : ProjectAuthControllerTest("/v2/projects
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `invites user to project with languages (translate)`() {
val result =
invitationTestUtil.perform { getLang ->
@@ -92,6 +94,7 @@ class ProjectsControllerInvitationTest : ProjectAuthControllerTest("/v2/projects
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `invites user to project with languages (review)`() {
val result =
invitationTestUtil.perform { getLang ->
@@ -108,6 +111,7 @@ class ProjectsControllerInvitationTest : ProjectAuthControllerTest("/v2/projects
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `cannot set different languages (review)`() {
val result =
invitationTestUtil.perform { getLang ->
@@ -123,6 +127,7 @@ class ProjectsControllerInvitationTest : ProjectAuthControllerTest("/v2/projects
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `validates languages and permission (lower)`() {
invitationTestUtil.perform { getLang ->
type = ProjectPermissionType.VIEW
@@ -132,6 +137,7 @@ class ProjectsControllerInvitationTest : ProjectAuthControllerTest("/v2/projects
@Test
@ProjectJWTAuthTestMethod
+ @CleanDbBeforeMethod
fun `validates languages and permission (higher)`() {
invitationTestUtil.perform { getLang ->
type = ProjectPermissionType.EDIT
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerLeavingTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerLeavingTest.kt
index 947839cdfd..9e3871a24d 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerLeavingTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerLeavingTest.kt
@@ -20,6 +20,7 @@ class ProjectsControllerLeavingTest : ProjectAuthControllerTest("/v2/projects/")
@ProjectJWTAuthTestMethod
fun `user can leave project`() {
val testData = ProjectLeavingTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.project1nonOwner
projectSupplier = { testData.projectBuilder.self }
@@ -34,6 +35,7 @@ class ProjectsControllerLeavingTest : ProjectAuthControllerTest("/v2/projects/")
@ProjectJWTAuthTestMethod
fun `cannot leave project with organization role`() {
val testData = ProjectLeavingTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.userWithOrganizationRole
projectSupplier = { testData.organizationOwnedProject }
@@ -46,6 +48,7 @@ class ProjectsControllerLeavingTest : ProjectAuthControllerTest("/v2/projects/")
@ProjectJWTAuthTestMethod
fun `resets user preferred organization when leaves organization project with only base permissions`() {
val testData = OrganizationTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.kvetoslav
projectSupplier = { testData.projectBuilder.self }
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerPermissionsTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerPermissionsTest.kt
index a76c4bef38..9dc9330eba 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerPermissionsTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerPermissionsTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers.v2ProjectsController
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.ProjectAuthControllerTest
import io.tolgee.constants.Message
import io.tolgee.development.testDataBuilder.data.PermissionsTestData
@@ -23,6 +24,7 @@ class ProjectsControllerPermissionsTest : ProjectAuthControllerTest("/v2/project
private val permissionTestUtil: PermissionTestUtil by lazy { PermissionTestUtil(this, applicationContext) }
@Test
+ @CleanDbBeforeMethod
fun `sets user permissions`() {
permissionTestUtil.withPermissionsTestData { project, user ->
performAuthPut("/v2/projects/${project.id}/users/${user.id}/set-permissions/EDIT", null).andIsOk
@@ -33,6 +35,7 @@ class ProjectsControllerPermissionsTest : ProjectAuthControllerTest("/v2/project
}
@Test
+ @CleanDbBeforeMethod
@ProjectJWTAuthTestMethod
fun `changes from none to other`() {
val testData = PermissionsTestData()
@@ -44,6 +47,7 @@ class ProjectsControllerPermissionsTest : ProjectAuthControllerTest("/v2/project
}
@Test
+ @CleanDbBeforeMethod
@ProjectJWTAuthTestMethod
fun `cannot set permission to user outside of project or organization`() {
val testData = PermissionsTestData()
@@ -59,6 +63,7 @@ class ProjectsControllerPermissionsTest : ProjectAuthControllerTest("/v2/project
}
@Test
+ @CleanDbBeforeMethod
@ProjectJWTAuthTestMethod
fun `sets user permissions to organization base`() {
val testData = PermissionsTestData()
@@ -82,6 +87,7 @@ class ProjectsControllerPermissionsTest : ProjectAuthControllerTest("/v2/project
}
@Test
+ @CleanDbBeforeMethod
fun `sets user's permissions with languages`() {
permissionTestUtil.checkSetPermissionsWithLanguages("TRANSLATE", { getLang ->
"languages=${getLang("en")}&" +
@@ -96,6 +102,7 @@ class ProjectsControllerPermissionsTest : ProjectAuthControllerTest("/v2/project
}
@Test
+ @CleanDbBeforeMethod
fun `cannot save stateChangeLanguages when translate`() {
permissionTestUtil.performSetPermissions("TRANSLATE") { getLang ->
"stateChangeLanguages=${getLang("de")}"
@@ -103,6 +110,7 @@ class ProjectsControllerPermissionsTest : ProjectAuthControllerTest("/v2/project
}
@Test
+ @CleanDbBeforeMethod
fun `cannot save viewLanguages when none`() {
permissionTestUtil.performSetPermissions("NONE") { getLang ->
"viewLanguages=${getLang("de")}"
@@ -110,6 +118,7 @@ class ProjectsControllerPermissionsTest : ProjectAuthControllerTest("/v2/project
}
@Test
+ @CleanDbBeforeMethod
fun `cannot save stateChangeLanguages when view`() {
permissionTestUtil.performSetPermissions("VIEW") { getLang ->
"stateChangeLanguages=${getLang("de")}"
@@ -117,6 +126,7 @@ class ProjectsControllerPermissionsTest : ProjectAuthControllerTest("/v2/project
}
@Test
+ @CleanDbBeforeMethod
fun `cannot save translationEditLangueges when view`() {
permissionTestUtil.performSetPermissions("VIEW") { getLang ->
"translateLanguages=${getLang("de")}"
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerTest.kt
index fb0edd44ab..e95e8d19d8 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.api.v2.controllers.v2ProjectsController
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.ProjectAuthControllerTest
import io.tolgee.development.testDataBuilder.data.BaseTestData
import io.tolgee.development.testDataBuilder.data.ProjectsTestData
@@ -47,6 +48,7 @@ class ProjectsControllerTest : ProjectAuthControllerTest("/v2/projects/") {
@Test
fun `get all has language permissions`() {
val baseTestData = BaseTestData()
+ baseTestData.root.makeUsernamesUnique = true
var franta: UserAccount? = null
baseTestData.root.apply {
@@ -71,6 +73,7 @@ class ProjectsControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun getAllWithStats() {
val testData = ProjectsTestData()
testDataService.saveTestData(testData.root)
@@ -106,6 +109,7 @@ class ProjectsControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun `with-stats returns permitted languages`() {
val testData = ProjectsTestData()
testDataService.saveTestData(testData.root)
@@ -154,6 +158,7 @@ class ProjectsControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun getAllUsers() {
val usersAndOrganizations = dbPopulator.createUsersAndOrganizations()
val directPermissionProject = usersAndOrganizations[1].organizationRoles[0].organization!!.projects[0]
@@ -185,6 +190,7 @@ class ProjectsControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun setUsersPermissionsNoAccess() {
val usersAndOrganizations = dbPopulator.createUsersAndOrganizations()
val repo = usersAndOrganizations[1].organizationRoles[0].organization!!.projects[0]
@@ -199,6 +205,7 @@ class ProjectsControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun setUsersPermissionsOwner() {
val usersAndOrganizations = dbPopulator.createUsersAndOrganizations()
val repo = usersAndOrganizations[1].organizationRoles[0].organization!!.projects[0]
@@ -214,6 +221,7 @@ class ProjectsControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun setUsersPermissionsOwn() {
val usersAndOrganizations = dbPopulator.createUsersAndOrganizations()
val repo =
@@ -231,6 +239,7 @@ class ProjectsControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun revokeUsersAccess() {
val usersAndOrganizations = dbPopulator.createUsersAndOrganizations()
val repo = usersAndOrganizations[1].organizationRoles[0].organization!!.projects[0]
@@ -257,6 +266,7 @@ class ProjectsControllerTest : ProjectAuthControllerTest("/v2/projects/") {
}
@Test
+ @CleanDbBeforeMethod
fun revokeUsersAccessIsOrganizationMember() {
val usersAndOrganizations = dbPopulator.createUsersAndOrganizations()
val repo = usersAndOrganizations[1].organizationRoles[0].organization!!.projects[0]
diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerTransferringTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerTransferringTest.kt
index d05bcde62e..cb95208031 100644
--- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerTransferringTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ProjectsController/ProjectsControllerTransferringTest.kt
@@ -19,6 +19,7 @@ class ProjectsControllerTransferringTest : ProjectAuthControllerTest("/v2/projec
@ProjectJWTAuthTestMethod
fun `doesn't transfer to organization when not permitted`() {
val testData = ProjectTransferringTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user2
projectSupplier = { testData.project }
@@ -29,6 +30,7 @@ class ProjectsControllerTransferringTest : ProjectAuthControllerTest("/v2/projec
@ProjectJWTAuthTestMethod
fun `provides transfer options`() {
val testData = ProjectTransferringTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.user
projectSupplier = { testData.project }
diff --git a/backend/app/src/test/kotlin/io/tolgee/automation/AutomationIntegrationTest.kt b/backend/app/src/test/kotlin/io/tolgee/automation/AutomationIntegrationTest.kt
index e871f9937c..4e84846fc6 100644
--- a/backend/app/src/test/kotlin/io/tolgee/automation/AutomationIntegrationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/automation/AutomationIntegrationTest.kt
@@ -14,6 +14,7 @@ import io.tolgee.fixtures.node
import io.tolgee.fixtures.verifyWebhookSignatureHeader
import io.tolgee.fixtures.waitForNotThrowing
import io.tolgee.service.contentDelivery.ContentDeliveryConfigService
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.annotations.ProjectJWTAuthTestMethod
import io.tolgee.testing.assert
import io.tolgee.util.addSeconds
@@ -44,6 +45,7 @@ import java.util.*
@SpringBootTest
@AutoConfigureMockMvc
+@ContextRecreatingTest
class AutomationIntegrationTest : ProjectAuthControllerTest("/v2/projects/") {
@MockBean
@Autowired
@@ -87,6 +89,8 @@ class AutomationIntegrationTest : ProjectAuthControllerTest("/v2/projects/") {
fun `publishes to Content Delivery`() {
currentDateProvider.forcedDate = currentDateProvider.date
val testData = ContentDeliveryConfigTestData()
+ testData.root.makeUsernamesUnique = true
+
testDataService.saveTestData(testData.root)
userAccount = testData.user
this.projectSupplier = { testData.projectBuilder.self }
@@ -114,6 +118,8 @@ class AutomationIntegrationTest : ProjectAuthControllerTest("/v2/projects/") {
@ProjectJWTAuthTestMethod
fun `it executes webhook`() {
val testData = WebhooksTestData()
+ testData.root.makeUsernamesUnique = true
+
currentDateProvider.forcedDate = currentDateProvider.date
testDataService.saveTestData(testData.root)
@@ -130,6 +136,8 @@ class AutomationIntegrationTest : ProjectAuthControllerTest("/v2/projects/") {
@ProjectJWTAuthTestMethod
fun `it updates webhook config when failing`() {
val testData = WebhooksTestData()
+ testData.root.makeUsernamesUnique = true
+
currentDateProvider.forcedDate = currentDateProvider.date
testDataService.saveTestData(testData.root)
userAccount = testData.user
diff --git a/backend/app/src/test/kotlin/io/tolgee/batch/BatchJobsCleanerTest.kt b/backend/app/src/test/kotlin/io/tolgee/batch/BatchJobsCleanerTest.kt
index 4aef80dd86..ff637a5d03 100644
--- a/backend/app/src/test/kotlin/io/tolgee/batch/BatchJobsCleanerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/batch/BatchJobsCleanerTest.kt
@@ -1,10 +1,12 @@
package io.tolgee.batch
import io.tolgee.AbstractSpringTest
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.development.testDataBuilder.data.BaseTestData
import io.tolgee.fixtures.waitForNotThrowing
import io.tolgee.model.batch.BatchJobChunkExecutionStatus
import io.tolgee.model.batch.BatchJobStatus
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.assert
import io.tolgee.util.StuckBatchJobTestUtil
import org.junit.jupiter.api.AfterEach
@@ -12,12 +14,11 @@ import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.test.annotation.DirtiesContext
@SpringBootTest(
properties = ["tolgee.batch.scheduled-handle-stuck-job-delay=200"],
)
-@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
+@ContextRecreatingTest
class BatchJobsCleanerTest : AbstractSpringTest() {
@Autowired
lateinit var jobConcurrentLauncher: BatchJobConcurrentLauncher
@@ -42,6 +43,7 @@ class BatchJobsCleanerTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `fixes the batch job state`() {
val cancelledJob = createCancelledJob()
val failedJob = createFailedJob()
diff --git a/backend/app/src/test/kotlin/io/tolgee/batch/TolgeeTranslatorWithBatchTest.kt b/backend/app/src/test/kotlin/io/tolgee/batch/TolgeeTranslatorWithBatchTest.kt
index 23515ffc89..79f5a27a1a 100644
--- a/backend/app/src/test/kotlin/io/tolgee/batch/TolgeeTranslatorWithBatchTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/batch/TolgeeTranslatorWithBatchTest.kt
@@ -6,6 +6,7 @@ import io.tolgee.component.bucket.TokenBucketManager
import io.tolgee.component.machineTranslation.TranslationApiRateLimitException
import io.tolgee.component.machineTranslation.providers.tolgee.CloudTolgeeTranslateApiService
import io.tolgee.component.machineTranslation.providers.tolgee.TolgeeTranslateParams
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.assert
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
@@ -32,6 +33,7 @@ import org.springframework.web.client.HttpClientErrorException
import org.springframework.web.client.RestTemplate
@SpringBootTest
+@ContextRecreatingTest
class TolgeeTranslatorWithBatchTest {
@Autowired
@SpyBean
diff --git a/backend/app/src/test/kotlin/io/tolgee/component/LanguageStatsListenerTest.kt b/backend/app/src/test/kotlin/io/tolgee/component/LanguageStatsListenerTest.kt
index 90defd2a6d..0a3b54b834 100644
--- a/backend/app/src/test/kotlin/io/tolgee/component/LanguageStatsListenerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/component/LanguageStatsListenerTest.kt
@@ -19,6 +19,7 @@ class LanguageStatsListenerTest : AbstractControllerTest() {
@Test
fun `updates stats when added key`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val projectLanguages = languageService.getProjectLanguages(testData.project.id).associateBy { it.id }
diff --git a/backend/app/src/test/kotlin/io/tolgee/component/bucket/TokenBucketManagerTestWithoutRedis.kt b/backend/app/src/test/kotlin/io/tolgee/component/bucket/TokenBucketManagerTestWithoutRedis.kt
index 5272098a1d..703bcf0466 100644
--- a/backend/app/src/test/kotlin/io/tolgee/component/bucket/TokenBucketManagerTestWithoutRedis.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/component/bucket/TokenBucketManagerTestWithoutRedis.kt
@@ -1,6 +1,8 @@
package io.tolgee.component.bucket
+import io.tolgee.testing.ContextRecreatingTest
import org.springframework.boot.test.context.SpringBootTest
@SpringBootTest
+@ContextRecreatingTest
class TokenBucketManagerTestWithoutRedis : AbstractTokenBucketManagerTest()
diff --git a/backend/app/src/test/kotlin/io/tolgee/component/fileStorage/FileStorageFsTest.kt b/backend/app/src/test/kotlin/io/tolgee/component/fileStorage/FileStorageFsTest.kt
index 93f897fbe9..0a499ec8ee 100644
--- a/backend/app/src/test/kotlin/io/tolgee/component/fileStorage/FileStorageFsTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/component/fileStorage/FileStorageFsTest.kt
@@ -4,6 +4,7 @@
package io.tolgee.component.fileStorage
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.assert
import io.tolgee.testing.assertions.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach
@@ -14,6 +15,7 @@ import java.io.File
@SpringBootTest(
properties = ["tolgee.internal.use-in-memory-file-storage=false"],
)
+@ContextRecreatingTest
class FileStorageFsTest : AbstractFileStorageServiceTest() {
lateinit var file: File
diff --git a/backend/app/src/test/kotlin/io/tolgee/controllers/ExportControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/controllers/ExportControllerTest.kt
index 7efd338fc9..20d759c401 100644
--- a/backend/app/src/test/kotlin/io/tolgee/controllers/ExportControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/controllers/ExportControllerTest.kt
@@ -70,6 +70,7 @@ class ExportControllerTest : ProjectAuthControllerTest() {
@ProjectApiKeyAuthTestMethod(scopes = [Scope.TRANSLATIONS_VIEW])
fun `exports only permitted langs`() {
val testData = LanguagePermissionsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
userAccount = testData.viewEnOnlyUser
projectSupplier = { testData.project }
diff --git a/backend/app/src/test/kotlin/io/tolgee/controllers/MarketingEmailingTest.kt b/backend/app/src/test/kotlin/io/tolgee/controllers/MarketingEmailingTest.kt
index 2d1fbe2213..3714fa9e50 100644
--- a/backend/app/src/test/kotlin/io/tolgee/controllers/MarketingEmailingTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/controllers/MarketingEmailingTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.controllers
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.component.emailContacts.EmailServiceManager
import io.tolgee.component.emailContacts.MailJetEmailServiceManager
import io.tolgee.component.emailContacts.SendInBlueEmailServiceManager
@@ -10,6 +11,7 @@ import io.tolgee.fixtures.EmailTestUtil
import io.tolgee.fixtures.andIsOk
import io.tolgee.model.UserAccount
import io.tolgee.testing.AuthorizedControllerTest
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.assert
import io.tolgee.util.GitHubAuthUtil
import jakarta.servlet.http.HttpServletRequest
@@ -34,6 +36,7 @@ import org.springframework.web.client.RestTemplate
@SpringBootTest
@AutoConfigureMockMvc
+@ContextRecreatingTest
class MarketingEmailingTest : AuthorizedControllerTest() {
@Autowired
lateinit var sendInBlueProperties: SendInBlueProperties
@@ -89,6 +92,7 @@ class MarketingEmailingTest : AuthorizedControllerTest() {
val testName = "Pavel Novak"
@Test
+ @CleanDbBeforeMethod
fun `adds contact on user sign up `() {
val dto = SignUpDto(name = testName, password = "aaaaaaaaaa", email = testMail)
performPost("/api/public/sign_up", dto)
@@ -97,6 +101,7 @@ class MarketingEmailingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `adds contact after verification when needs-verification is on`() {
tolgeeProperties.frontEndUrl = "https://aaa"
tolgeeProperties.authentication.needsEmailVerification = true
@@ -114,6 +119,7 @@ class MarketingEmailingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `updates contact when user is updated`() {
val user = dbPopulator.createUserIfNotExists(username = testMail, name = testName)
userAccount = user
@@ -123,6 +129,7 @@ class MarketingEmailingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `updates contact email when verified`() {
tolgeeProperties.authentication.needsEmailVerification = true
val user = dbPopulator.createUserIfNotExists(username = testMail, name = testName)
@@ -143,6 +150,7 @@ class MarketingEmailingTest : AuthorizedControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `adds contact when registered via github`() {
gitHubAuthUtil.authorizeGithubUser()
verifyCreateContactCalled("fake_email@email.com", "fakeName")
diff --git a/backend/app/src/test/kotlin/io/tolgee/controllers/PublicControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/controllers/PublicControllerTest.kt
index b28bc94348..ee1345380d 100644
--- a/backend/app/src/test/kotlin/io/tolgee/controllers/PublicControllerTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/controllers/PublicControllerTest.kt
@@ -1,6 +1,7 @@
package io.tolgee.controllers
import com.posthog.java.PostHog
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.dtos.misc.CreateProjectInvitationParams
import io.tolgee.dtos.request.auth.SignUpDto
import io.tolgee.fixtures.andAssertResponse
@@ -48,6 +49,7 @@ class PublicControllerTest :
lateinit var postHog: PostHog
@Test
+ @CleanDbBeforeMethod
fun `creates organization`() {
val dto =
SignUpDto(
@@ -61,6 +63,7 @@ class PublicControllerTest :
}
@Test
+ @CleanDbBeforeMethod
fun `creates organization when no invitation`() {
val dto = SignUpDto(name = "Pavel Novak", password = "aaaaaaaaa", email = "aaaa@aaaa.com")
performPost("/api/public/sign_up", dto).andIsOk
@@ -68,6 +71,7 @@ class PublicControllerTest :
}
@Test
+ @CleanDbBeforeMethod
fun `logs event to external monitor`() {
val dto = SignUpDto(name = "Pavel Novak", password = "aaaaaaaaa", email = "aaaa@aaaa.com")
performPost(
@@ -98,6 +102,7 @@ class PublicControllerTest :
}
@Test
+ @CleanDbBeforeMethod
fun `doesn't create organization when invitation provided`() {
val base = dbPopulator.createBase(generateUniqueString())
val project = base.project
@@ -117,6 +122,7 @@ class PublicControllerTest :
}
@Test
+ @CleanDbBeforeMethod
fun `doesn't create orgs when disabled`() {
tolgeeProperties.authentication.userCanCreateOrganizations = false
val dto =
@@ -131,6 +137,7 @@ class PublicControllerTest :
}
@Test
+ @CleanDbBeforeMethod
fun testSignUpValidationBlankEmail() {
val dto = SignUpDto(name = "Pavel Novak", password = "aaaa", email = "")
performPost("/api/public/sign_up", dto)
@@ -139,6 +146,7 @@ class PublicControllerTest :
}
@Test
+ @CleanDbBeforeMethod
fun testSignUpValidationBlankName() {
val dto = SignUpDto(name = "", password = "aaaa", email = "aaa@aaa.cz")
performPost("/api/public/sign_up", dto)
@@ -147,6 +155,7 @@ class PublicControllerTest :
}
@Test
+ @CleanDbBeforeMethod
fun testSignUpValidationInvalidEmail() {
val dto = SignUpDto(name = "", password = "aaaa", email = "aaaaaa.cz")
performPost("/api/public/sign_up", dto)
diff --git a/backend/app/src/test/kotlin/io/tolgee/jobs/migration/allOrganizationOwner/AllOrganizationOwnerJobTest.kt b/backend/app/src/test/kotlin/io/tolgee/jobs/migration/allOrganizationOwner/AllOrganizationOwnerJobTest.kt
index 76edaa98b7..6053a3a8e0 100644
--- a/backend/app/src/test/kotlin/io/tolgee/jobs/migration/allOrganizationOwner/AllOrganizationOwnerJobTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/jobs/migration/allOrganizationOwner/AllOrganizationOwnerJobTest.kt
@@ -1,6 +1,7 @@
package io.tolgee.jobs.migration.allOrganizationOwner
import io.tolgee.AbstractSpringTest
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.development.testDataBuilder.data.AllOrganizationOwnerMigrationTestData
import io.tolgee.model.Permission
import io.tolgee.model.Project
@@ -78,6 +79,7 @@ class AllOrganizationOwnerJobTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `creates organizations and moves projects`() {
allOrganizationOwnerJobRunner.run()
transactionTemplate.execute {
@@ -92,6 +94,7 @@ class AllOrganizationOwnerJobTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `deletes permission`() {
allOrganizationOwnerJobRunner.run()
transactionTemplate.execute {
@@ -101,6 +104,7 @@ class AllOrganizationOwnerJobTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `reuses existing organization`() {
allOrganizationOwnerJobRunner.run()
transactionTemplate.execute {
@@ -110,6 +114,7 @@ class AllOrganizationOwnerJobTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `creates the organization for user with no organization membership`() {
allOrganizationOwnerJobRunner.run()
transactionTemplate.execute {
@@ -121,6 +126,7 @@ class AllOrganizationOwnerJobTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it keeps user direct permissions`() {
allOrganizationOwnerJobRunner.run()
transactionTemplate.execute {
@@ -130,6 +136,7 @@ class AllOrganizationOwnerJobTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it does not run multiple times for same params`() {
// first - it really runs
val instance = allOrganizationOwnerJobRunner.run()
diff --git a/backend/app/src/test/kotlin/io/tolgee/jobs/migration/translationStats/TranslationStatsJobTest.kt b/backend/app/src/test/kotlin/io/tolgee/jobs/migration/translationStats/TranslationStatsJobTest.kt
index bd471211e3..c8693e6db1 100644
--- a/backend/app/src/test/kotlin/io/tolgee/jobs/migration/translationStats/TranslationStatsJobTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/jobs/migration/translationStats/TranslationStatsJobTest.kt
@@ -1,6 +1,7 @@
package io.tolgee.jobs.migration.translationStats
import io.tolgee.AbstractSpringTest
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.development.testDataBuilder.data.TranslationsTestData
import io.tolgee.repository.TranslationRepository
import io.tolgee.testing.assertions.Assertions.assertThat
@@ -18,6 +19,7 @@ class TranslationStatsJobTest : AbstractSpringTest() {
lateinit var translationRepository: TranslationRepository
@Test
+ @CleanDbBeforeMethod
fun `it adds the stats`() {
prepareData(10)
val instance = translationsStatsUpdateJobRunner.run()
@@ -26,6 +28,7 @@ class TranslationStatsJobTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it does not run multiple times for same params`() {
prepareData()
@@ -39,6 +42,7 @@ class TranslationStatsJobTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `it runs again when new translation without stats is created`() {
val testData = prepareData()
diff --git a/backend/app/src/test/kotlin/io/tolgee/repository/UserAccountRepositoryTest.kt b/backend/app/src/test/kotlin/io/tolgee/repository/UserAccountRepositoryTest.kt
index a00c95d443..21b8d2d9d1 100644
--- a/backend/app/src/test/kotlin/io/tolgee/repository/UserAccountRepositoryTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/repository/UserAccountRepositoryTest.kt
@@ -1,6 +1,7 @@
package io.tolgee.repository
import io.tolgee.AbstractSpringTest
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.development.DbPopulatorReal
import io.tolgee.dtos.request.task.UserAccountFilters
import io.tolgee.model.views.UserAccountWithOrganizationRoleView
@@ -21,6 +22,7 @@ class UserAccountRepositoryTest : AbstractSpringTest() {
lateinit var dbPopulatorReal: DbPopulatorReal
@Test
+ @CleanDbBeforeMethod
fun getAllInOrganizationHasMemberRole() {
val usersAndOrganizations = dbPopulatorReal.createUsersAndOrganizations()
val org = usersAndOrganizations[1].organizationRoles[0].organization
@@ -30,6 +32,7 @@ class UserAccountRepositoryTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun getAllInOrganizationCorrectAccounts() {
val usersAndOrganizations = dbPopulatorReal.createUsersAndOrganizations()
val user = entityManager.merge(usersAndOrganizations[2])
@@ -41,6 +44,7 @@ class UserAccountRepositoryTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun getAllInProjectSearch() {
val franta = dbPopulatorReal.createUserIfNotExists("franta")
val usersAndOrganizations = dbPopulatorReal.createUsersAndOrganizations()
diff --git a/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportFileIssueRepositoryTest.kt b/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportFileIssueRepositoryTest.kt
index e3239ff7db..02e0a9783f 100644
--- a/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportFileIssueRepositoryTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportFileIssueRepositoryTest.kt
@@ -21,6 +21,7 @@ class ImportFileIssueRepositoryTest : AbstractSpringTest() {
@Test
fun `view query returns correct result`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.addFileIssues()
testDataService.saveTestData(testData.root)
val result =
diff --git a/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportLanguageRepositoryTest.kt b/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportLanguageRepositoryTest.kt
index 3360386d61..d0172213bd 100644
--- a/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportLanguageRepositoryTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportLanguageRepositoryTest.kt
@@ -16,6 +16,7 @@ class ImportLanguageRepositoryTest : AbstractSpringTest() {
@Test
fun `view query returns correct result`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.addFileIssues()
testDataService.saveTestData(testData.root)
val result =
diff --git a/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportTranslationRepositoryTest.kt b/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportTranslationRepositoryTest.kt
index 33b1f10778..f64b16197d 100644
--- a/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportTranslationRepositoryTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/repository/dataImport/ImportTranslationRepositoryTest.kt
@@ -16,6 +16,7 @@ class ImportTranslationRepositoryTest : AbstractSpringTest() {
@Test
fun `view returns correct data`() {
val importTestData = ImportTestData()
+ importTestData.root.makeUsernamesUnique = true
testDataService.saveTestData(importTestData.root)
val result =
@@ -37,6 +38,7 @@ class ImportTranslationRepositoryTest : AbstractSpringTest() {
@Test
fun `view filters`() {
val importTestData = ImportTestData()
+ importTestData.root.makeUsernamesUnique = true
testDataService.saveTestData(importTestData.root)
val result =
diff --git a/backend/app/src/test/kotlin/io/tolgee/security/EmailVerificationTest.kt b/backend/app/src/test/kotlin/io/tolgee/security/EmailVerificationTest.kt
index 40be051008..cc8819a29e 100644
--- a/backend/app/src/test/kotlin/io/tolgee/security/EmailVerificationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/security/EmailVerificationTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.security
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.configuration.tolgee.TolgeeProperties
import io.tolgee.dtos.request.auth.SignUpDto
import io.tolgee.exceptions.NotFoundException
@@ -43,6 +44,7 @@ class EmailVerificationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun loginWhenNotVerified() {
val createUser = dbPopulator.createUserIfNotExists(initialUsername)
emailVerificationService.createForUser(createUser)
@@ -52,6 +54,7 @@ class EmailVerificationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun doesLoginWhenVerified() {
dbPopulator.createUserIfNotExists(initialUsername)
val result = doAuthentication(initialUsername, initialPassword)
@@ -59,6 +62,7 @@ class EmailVerificationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun verifiesEmail() {
val createUser = dbPopulator.createUserIfNotExists(initialUsername)
val emailVerification = emailVerificationService.createForUser(createUser)
@@ -69,6 +73,7 @@ class EmailVerificationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
@Transactional
fun verifiesNewEmail() {
val createUser = dbPopulator.createUserIfNotExists(initialUsername)
@@ -80,6 +85,7 @@ class EmailVerificationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun doesNotVerifyWithWrongCode() {
val createUser = dbPopulator.createUserIfNotExists(initialUsername)
val emailVerification = emailVerificationService.createForUser(createUser)
@@ -90,6 +96,7 @@ class EmailVerificationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
@Transactional
fun doesNotVerifyWithWrongUser() {
val createUser = dbPopulator.createUserIfNotExists(initialUsername)
@@ -113,6 +120,7 @@ class EmailVerificationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun signUpSavesVerification() {
perform()
val user = userAccountService.findActive(signUpDto.email) ?: throw NotFoundException()
@@ -126,6 +134,7 @@ class EmailVerificationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `uses frontend url over provided callback url`() {
signUpDto.callbackUrl = "dummyCallbackUrl"
perform()
@@ -142,6 +151,7 @@ class EmailVerificationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `uses callback url when no frontendUrl provided`() {
signUpDto.callbackUrl = "dummyCallbackUrl"
tolgeeProperties.frontEndUrl = null
diff --git a/backend/app/src/test/kotlin/io/tolgee/security/ProjectApiKeyAuthenticationTest.kt b/backend/app/src/test/kotlin/io/tolgee/security/ProjectApiKeyAuthenticationTest.kt
index e98310c476..deaac11f5b 100644
--- a/backend/app/src/test/kotlin/io/tolgee/security/ProjectApiKeyAuthenticationTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/security/ProjectApiKeyAuthenticationTest.kt
@@ -1,6 +1,7 @@
package io.tolgee.security
import io.tolgee.API_KEY_HEADER_NAME
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.development.testDataBuilder.data.ApiKeysTestData
import io.tolgee.fixtures.andAssertThatJson
import io.tolgee.fixtures.andIsForbidden
@@ -12,6 +13,7 @@ import io.tolgee.model.enums.Scope
import io.tolgee.security.authentication.JwtService
import io.tolgee.testing.AbstractControllerTest
import io.tolgee.testing.assert
+import org.junit.After
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
@@ -24,17 +26,19 @@ class ProjectApiKeyAuthenticationTest : AbstractControllerTest() {
@Autowired
private lateinit var jwtService: JwtService
- @Test
+ @After
fun after() {
currentDateProvider.forcedDate = null
}
@Test
+ @CleanDbBeforeMethod
fun accessWithApiKey_failure() {
mvc.perform(MockMvcRequestBuilders.get("/v2/projects/translations")).andIsForbidden
}
@Test
+ @CleanDbBeforeMethod
fun `access with legacy key works`() {
val base = dbPopulator.createBase(generateUniqueString())
val apiKey = apiKeyService.create(base.userAccount, setOf(*Scope.values()), base.project)
@@ -42,12 +46,14 @@ class ProjectApiKeyAuthenticationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun accessWithApiKey_failure_wrong_key() {
mvc.perform(MockMvcRequestBuilders.get("/v2/projects/translations?ak=wrong_api_key"))
.andExpect(MockMvcResultMatchers.status().isUnauthorized).andReturn()
}
@Test
+ @CleanDbBeforeMethod
fun accessWithApiKey_failure_api_path() {
val base = dbPopulator.createBase(generateUniqueString())
val apiKey = apiKeyService.create(base.userAccount, setOf(*Scope.entries.toTypedArray()), base.project)
@@ -55,8 +61,10 @@ class ProjectApiKeyAuthenticationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `works with tgpak_ prefix`() {
val testData = ApiKeysTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
currentDateProvider.forcedDate = currentDateProvider.date
@@ -79,8 +87,10 @@ class ProjectApiKeyAuthenticationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `expired key is unauthorized`() {
val testData = ApiKeysTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
performGet(
@@ -92,8 +102,10 @@ class ProjectApiKeyAuthenticationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `access to different project is forbidden`() {
val testData = ApiKeysTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
performGet(
@@ -105,8 +117,10 @@ class ProjectApiKeyAuthenticationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `access to authorized project is OK`() {
val testData = ApiKeysTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
performGet(
@@ -118,8 +132,10 @@ class ProjectApiKeyAuthenticationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `malformed API key is unauthorized`() {
val testData = ApiKeysTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
performGet(
@@ -131,8 +147,10 @@ class ProjectApiKeyAuthenticationTest : AbstractControllerTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `permissions get correctly revoked when the user no longer have them`() {
val testData = ApiKeysTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
performPut(
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/ActivityVIewByRevisionsProviderTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/ActivityVIewByRevisionsProviderTest.kt
index 9e31a494fb..edb80b76b7 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/ActivityVIewByRevisionsProviderTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/ActivityVIewByRevisionsProviderTest.kt
@@ -12,6 +12,7 @@ class ActivityVIewByRevisionsProviderTest : ProjectAuthControllerTest() {
@Test
fun `it returns limited number of modified entities`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testData.setAllResolved()
testData.setAllOverride()
testDataService.saveTestData(testData.root)
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/DbPopulatorTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/DbPopulatorTest.kt
deleted file mode 100644
index 934ab3e012..0000000000
--- a/backend/app/src/test/kotlin/io/tolgee/service/DbPopulatorTest.kt
+++ /dev/null
@@ -1,58 +0,0 @@
-package io.tolgee.service
-
-import io.tolgee.configuration.tolgee.TolgeeProperties
-import io.tolgee.development.DbPopulatorReal
-import io.tolgee.exceptions.NotFoundException
-import io.tolgee.model.UserAccount
-import io.tolgee.repository.ProjectRepository
-import io.tolgee.repository.UserAccountRepository
-import io.tolgee.service.security.ApiKeyService
-import io.tolgee.testing.AbstractTransactionalTest
-import org.assertj.core.api.Assertions
-import org.junit.jupiter.api.BeforeEach
-import org.junit.jupiter.api.Test
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.transaction.annotation.Transactional
-
-@SpringBootTest
-class DbPopulatorTest : AbstractTransactionalTest() {
- @Autowired
- lateinit var populator: DbPopulatorReal
-
- @Autowired
- lateinit var userAccountRepository: UserAccountRepository
-
- @Autowired
- lateinit var projectRepository: ProjectRepository
-
- @Autowired
- lateinit var apiKeyService: ApiKeyService
-
- @Autowired
- lateinit var tolgeeProperties: TolgeeProperties
-
- lateinit var userAccount: UserAccount
-
- @BeforeEach
- fun setup() {
- populator.autoPopulate()
- userAccount =
- userAccountRepository.findByUsername(tolgeeProperties.authentication.initialUsername)
- .orElseThrow { NotFoundException() }
- }
-
- @Test
- @Transactional
- fun createsUser() {
- Assertions.assertThat(userAccount.name).isEqualTo(tolgeeProperties.authentication.initialUsername)
- }
-
- @Test
- @Transactional
- fun createsApiKey() {
- val key = apiKeyService.getAllByUser(userAccount.id).stream().findFirst()
- Assertions.assertThat(key).isPresent
- Assertions.assertThat(key.get().key).isEqualTo(null)
- }
-}
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/ExportServiceTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/ExportServiceTest.kt
index 7c1630d8db..02b9d8dcdf 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/ExportServiceTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/ExportServiceTest.kt
@@ -19,6 +19,7 @@ class ExportServiceTest : AbstractSpringTest() {
@Test
fun `returns correct export data`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val exportParams = ExportParams(filterState = null)
@@ -33,6 +34,7 @@ class ExportServiceTest : AbstractSpringTest() {
@Test
fun `returns empty translations correct export data`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val exportParams = ExportParams(filterState = listOf(TranslationState.UNTRANSLATED))
@@ -47,6 +49,7 @@ class ExportServiceTest : AbstractSpringTest() {
@Test
fun `selects languages for export data`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val exportParams = ExportParams(languages = setOf("de"))
@@ -60,6 +63,7 @@ class ExportServiceTest : AbstractSpringTest() {
@Test
fun `filters keyIdIn for export data`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val exportParams = ExportParams(filterKeyId = listOf(testData.aKey.id))
@@ -74,6 +78,7 @@ class ExportServiceTest : AbstractSpringTest() {
@Test
fun `filters keyNotIdIn for export data`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val exportParams = ExportParams(filterKeyIdNot = listOf(testData.aKey.id))
@@ -87,6 +92,7 @@ class ExportServiceTest : AbstractSpringTest() {
@Test
fun `filters export data by tag`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val tag = "Cool tag"
@@ -103,6 +109,7 @@ class ExportServiceTest : AbstractSpringTest() {
@Test
fun `filters export data by tag in`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
var result = getResultFilteredByTagIn(testData, listOf("Cool tag", "Lame tag"))
@@ -117,6 +124,7 @@ class ExportServiceTest : AbstractSpringTest() {
@Test
fun `filters export data by tag not in`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
var result = getResultFilteredByTagNotIn(testData, listOf("Cool tag", "Lame tag"))
@@ -150,6 +158,7 @@ class ExportServiceTest : AbstractSpringTest() {
@Test
fun `filters export data by key prefix`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val exportParams = ExportParams(filterKeyPrefix = "A")
@@ -163,6 +172,7 @@ class ExportServiceTest : AbstractSpringTest() {
@Test
fun `filters export data by state`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testData.addTranslationsWithStates()
testDataService.saveTestData(testData.root)
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/LanguageCachingTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/LanguageCachingTest.kt
index 6801026763..d321d48f27 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/LanguageCachingTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/LanguageCachingTest.kt
@@ -39,6 +39,7 @@ class LanguageCachingTest : AbstractSpringTest() {
@BeforeEach
fun setup() {
testData = BaseTestData()
+ testData.root.makeUsernamesUnique = true
germanLanguage = testData.projectBuilder.addGerman().self
testDataService.saveTestData(testData.root)
clearCaches()
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/LanguageDeletePermissionTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/LanguageDeletePermissionTest.kt
index c5809bc9f1..ee0242fd44 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/LanguageDeletePermissionTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/LanguageDeletePermissionTest.kt
@@ -12,6 +12,7 @@ import io.tolgee.model.enums.ProjectPermissionType
import io.tolgee.model.enums.Scope
import io.tolgee.testing.assert
import io.tolgee.testing.assertions.Assertions.assertThat
+import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.springframework.boot.test.context.SpringBootTest
@@ -24,6 +25,7 @@ class LanguageDeletePermissionTest : AbstractSpringTest() {
@BeforeEach
fun beforeEach() {
testData = LanguagePermissionsTestData()
+ testData.root.makeUsernamesUnique = true
testData.project.baseLanguage = testData.germanLanguage
testDataService.saveTestData(testData.root)
entityManager.flush()
@@ -32,6 +34,11 @@ class LanguageDeletePermissionTest : AbstractSpringTest() {
languageService.findEntity(testData.englishLanguage.id).assert.isNull()
}
+ @AfterEach
+ fun afterEach() {
+ testDataService.cleanApiKeys(testData.root)
+ }
+
@Test
@Transactional
fun `lowers permissions for translate langs`() {
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/LanguageServiceTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/LanguageServiceTest.kt
index e4220fe33b..050e1dcf34 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/LanguageServiceTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/LanguageServiceTest.kt
@@ -40,6 +40,7 @@ class LanguageServiceTest : AbstractSpringTest() {
@Transactional
fun `remove of language removes existing language reference from import language`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
var foundImportLanguage = importService.findLanguages(testData.import).first()
@@ -55,6 +56,8 @@ class LanguageServiceTest : AbstractSpringTest() {
@Transactional
fun `deletes language with MT Service Config`() {
val testData = MtSettingsTestData()
+ testData.root.makeUsernamesUnique = true
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
entityManager.flush()
languageService.hardDeleteLanguage(testData.germanLanguage.id)
@@ -65,6 +68,7 @@ class LanguageServiceTest : AbstractSpringTest() {
@Transactional
fun `deletes language with Comments`() {
val testData = TranslationCommentsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
entityManager.flush()
languageService.hardDeleteLanguage(testData.englishLanguage.id)
@@ -74,6 +78,7 @@ class LanguageServiceTest : AbstractSpringTest() {
@Test
fun `hard deletes language`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
executeInNewTransaction {
@@ -92,6 +97,7 @@ class LanguageServiceTest : AbstractSpringTest() {
@Test
fun `hard deletes language without n+1s`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testData.generateLotOfData(100)
testDataService.saveTestData(testData.root)
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/OrganizationServiceTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/OrganizationServiceTest.kt
index 1ca558378b..429bcc6994 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/OrganizationServiceTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/OrganizationServiceTest.kt
@@ -4,6 +4,7 @@ import io.tolgee.AbstractSpringTest
import io.tolgee.development.testDataBuilder.data.OrganizationTestData
import io.tolgee.model.MtCreditBucket
import io.tolgee.model.Organization
+import io.tolgee.testing.ContextRecreatingTest
import io.tolgee.testing.assert
import io.tolgee.testing.assertions.Assertions.assertThat
import org.hibernate.SessionFactory
@@ -20,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional
"spring.jpa.show-sql=true",
],
)
+@ContextRecreatingTest
class OrganizationServiceTest : AbstractSpringTest() {
@Suppress("SpringJavaInjectionPointsAutowiringInspection")
@Autowired
@@ -28,6 +30,7 @@ class OrganizationServiceTest : AbstractSpringTest() {
@Test
fun `deletes organization with preferences`() {
val testData = OrganizationTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
organizationService.delete(testData.jirinaOrg)
entityManager.flush()
@@ -39,6 +42,7 @@ class OrganizationServiceTest : AbstractSpringTest() {
@Test
fun `fetches organization without mt bucket (tests the one-to-one lazy initialization)`() {
val testData = OrganizationTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val organization =
@@ -55,6 +59,7 @@ class OrganizationServiceTest : AbstractSpringTest() {
@Test
fun `mt bucket fetches only mt bucket (tests the one-to-one lazy initialization)`() {
val testData = OrganizationTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
executeInNewTransaction {
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/ProjectStatsServiceTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/ProjectStatsServiceTest.kt
index b0e7ae4a67..3ce0c99129 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/ProjectStatsServiceTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/ProjectStatsServiceTest.kt
@@ -14,6 +14,7 @@ internal class ProjectStatsServiceTest : AbstractSpringTest() {
@Test
fun getProjectStats() {
val testData = ProjectStatsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val data = projectStatsService.getProjectStats(testData.projectBuilder.self.id)
assertThat(data.id).isPositive
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/SoftDeleteTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/SoftDeleteTest.kt
index 6d5fb84cce..372d12ca6e 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/SoftDeleteTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/SoftDeleteTest.kt
@@ -10,6 +10,8 @@ class SoftDeleteTest : AbstractSpringTest() {
@Test
fun `project is soft deleted`() {
val testData = BaseTestData()
+ testData.root.makeUsernamesUnique = true
+
executeInNewTransaction {
testDataService.saveTestData(testData.root)
}
@@ -27,6 +29,7 @@ class SoftDeleteTest : AbstractSpringTest() {
@Test
fun `queries don't return deleted projects`() {
val testData = BaseTestData()
+ testData.root.makeUsernamesUnique = true
executeInNewTransaction {
testDataService.saveTestData(testData.root)
}
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/TagServiceTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/TagServiceTest.kt
index 0bea73ab3c..b4afa7f312 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/TagServiceTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/TagServiceTest.kt
@@ -29,7 +29,9 @@ class TagServiceTest : AbstractSpringTest() {
fun `deletes many keys fast enough`() {
val tagsTestData = TagsTestData()
tagsTestData.generateVeryLotOfData()
+ tagsTestData.root.makeUsernamesUnique = true
testDataService.saveTestData(tagsTestData.root)
+
entityManager.flush()
entityManager.clear()
val start = System.currentTimeMillis()
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/TelemetryServiceTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/TelemetryServiceTest.kt
index ba4b2dab34..c4d43cb621 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/TelemetryServiceTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/TelemetryServiceTest.kt
@@ -7,6 +7,7 @@ package io.tolgee.service
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
import io.tolgee.AbstractSpringTest
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.configuration.tolgee.TelemetryProperties
import io.tolgee.development.testDataBuilder.data.BaseTestData
import io.tolgee.dtos.TelemetryReportRequest
@@ -59,6 +60,7 @@ class TelemetryServiceTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `reports when enabled`() {
telemetryProperties.enabled = true
val testData =
@@ -73,6 +75,7 @@ class TelemetryServiceTest : AbstractSpringTest() {
}
}
}
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
mockHttpRequest(restTemplate) {
whenReq {
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/TranslationServiceTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/TranslationServiceTest.kt
index 03bb64f652..cfeec5e2af 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/TranslationServiceTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/TranslationServiceTest.kt
@@ -49,6 +49,7 @@ class TranslationServiceTest : AbstractSpringTest() {
val testData =
executeInNewTransaction {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
val translation = testData.aKeyGermanTranslation
assertThat(translation.wordCount).isEqualTo(2)
@@ -72,6 +73,7 @@ class TranslationServiceTest : AbstractSpringTest() {
@Test
fun `clears auto translation when set empty`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
translationService.setForKey(testData.aKey, mapOf("de" to ""))
val translation = translationService.get(testData.aKeyGermanTranslation.id)
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/dataImport/ImportServiceTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/dataImport/ImportServiceTest.kt
index 2fb91a9a93..946beb2d60 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/dataImport/ImportServiceTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/dataImport/ImportServiceTest.kt
@@ -25,6 +25,7 @@ class ImportServiceTest : AbstractSpringTest() {
@BeforeEach
fun setup() {
importTestData = ImportTestData()
+ importTestData.root.makeUsernamesUnique = true
importTestData.addFrenchTranslations()
}
@@ -52,6 +53,7 @@ class ImportServiceTest : AbstractSpringTest() {
val testData =
executeInNewTransaction {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
assertThat(importService.findLanguage(testData.importEnglish.id)).isNotNull
testData
@@ -71,6 +73,7 @@ class ImportServiceTest : AbstractSpringTest() {
@Test
fun `hard deletes import`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
executeInNewTransaction {
testData.addFileIssues()
testData.addKeyMetadata()
@@ -94,6 +97,7 @@ class ImportServiceTest : AbstractSpringTest() {
@Test
fun `soft deletes import`() {
val testData = ImportTestData()
+ testData.root.makeUsernamesUnique = true
executeInNewTransaction {
testData.addFileIssues()
testData.addKeyMetadata()
@@ -119,6 +123,7 @@ class ImportServiceTest : AbstractSpringTest() {
val testData =
executeInNewTransaction {
val testData = ImportNamespacesTestData()
+ testData.root.makeUsernamesUnique = true
testDataService.saveTestData(testData.root)
SecurityContextHolder.getContext().authentication =
TolgeeAuthentication(
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/dataImport/StoredDataImporterTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/dataImport/StoredDataImporterTest.kt
index f65357dadb..78b17d768d 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/dataImport/StoredDataImporterTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/dataImport/StoredDataImporterTest.kt
@@ -31,6 +31,7 @@ class StoredDataImporterTest : AbstractSpringTest() {
@BeforeEach
fun setup() {
importTestData = ImportTestData()
+ importTestData.root.makeUsernamesUnique = true
storedDataImporter =
StoredDataImporter(
applicationContext,
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/organizationRole/OrganizationRoleCachingTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/organizationRole/OrganizationRoleCachingTest.kt
index 05c5330fcd..177580411e 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/organizationRole/OrganizationRoleCachingTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/organizationRole/OrganizationRoleCachingTest.kt
@@ -47,6 +47,8 @@ class OrganizationRoleCachingTest : AbstractSpringTest() {
@BeforeEach
fun setup() {
testData = OrganizationTestData()
+ testData.root.makeUsernamesUnique = true
+
testDataService.saveTestData(testData.root)
clearCaches()
Mockito.reset(organizationRoleRepository)
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/project/ProjectServiceTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/project/ProjectServiceTest.kt
index 744dde8beb..ed439fce90 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/project/ProjectServiceTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/project/ProjectServiceTest.kt
@@ -5,6 +5,7 @@
package io.tolgee.service.project
import io.tolgee.AbstractSpringTest
+import io.tolgee.CleanDbBeforeMethod
import io.tolgee.batch.BatchJobService
import io.tolgee.batch.data.BatchJobType
import io.tolgee.batch.request.DeleteKeysRequest
@@ -40,6 +41,7 @@ class ProjectServiceTest : AbstractSpringTest() {
private lateinit var bigMetaService: BigMetaService
@Test
+ @CleanDbBeforeMethod
fun testFindAllPermitted() {
executeInNewTransaction {
val users = dbPopulator.createUsersAndOrganizations()
@@ -50,6 +52,7 @@ class ProjectServiceTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testFindAllEmpty() {
executeInNewTransaction {
dbPopulator.createUsersAndOrganizations() // create some data
@@ -60,6 +63,7 @@ class ProjectServiceTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testFindAllSingleProject() {
executeInNewTransaction {
dbPopulator.createUsersAndOrganizations() // create some data
@@ -71,6 +75,7 @@ class ProjectServiceTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testFindMultiple() {
executeInNewTransaction {
val usersWithOrganizations = dbPopulator.createUsersAndOrganizations("helga") // create some data
@@ -91,6 +96,7 @@ class ProjectServiceTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testFindMultiplePermissions() {
executeInNewTransaction(platformTransactionManager) {
val usersWithOrganizations = dbPopulator.createUsersAndOrganizations("agnes") // create some data
@@ -130,6 +136,7 @@ class ProjectServiceTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun testDeleteProjectWithTags() {
executeInNewTransaction(platformTransactionManager) {
val testData = TagsTestData()
@@ -147,6 +154,7 @@ class ProjectServiceTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `deletes project with MT Settings`() {
val testData =
executeInNewTransaction {
@@ -160,6 +168,7 @@ class ProjectServiceTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `deletes project with batch jobs`() {
val testData = BatchJobsTestData()
val keys = testData.addTranslationOperationData(10)
@@ -192,6 +201,7 @@ class ProjectServiceTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `deletes project with big meta`() {
val testData = BaseTestData()
val key1 = testData.projectBuilder.addKey(keyName = "hello").self
@@ -217,6 +227,7 @@ class ProjectServiceTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `deletes project with Content Delivery Configs`() {
val testData = ContentDeliveryConfigTestData()
testDataService.saveTestData(testData.root)
@@ -226,6 +237,7 @@ class ProjectServiceTest : AbstractSpringTest() {
}
@Test
+ @CleanDbBeforeMethod
fun `deletes project with webhooks`() {
val testData = WebhooksTestData()
testDataService.saveTestData(testData.root)
diff --git a/backend/app/src/test/kotlin/io/tolgee/service/queryBuilders/TranslationViewDataProviderTest.kt b/backend/app/src/test/kotlin/io/tolgee/service/queryBuilders/TranslationViewDataProviderTest.kt
index 130487abed..3cc49c469e 100644
--- a/backend/app/src/test/kotlin/io/tolgee/service/queryBuilders/TranslationViewDataProviderTest.kt
+++ b/backend/app/src/test/kotlin/io/tolgee/service/queryBuilders/TranslationViewDataProviderTest.kt
@@ -102,6 +102,7 @@ class TranslationViewDataProviderTest : AbstractSpringTest() {
@Test
fun `returns failed keys`() {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
val job = testData.addFailedBatchJob()
testDataService.saveTestData(testData.root)
val result =
@@ -124,6 +125,7 @@ class TranslationViewDataProviderTest : AbstractSpringTest() {
private fun generateCommentStatesTestData(): TranslationsTestData {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testData.addCommentStatesData()
testDataService.saveTestData(testData.root)
return testData
@@ -131,6 +133,7 @@ class TranslationViewDataProviderTest : AbstractSpringTest() {
private fun prepareLotOfData(): TranslationsTestData {
val testData = TranslationsTestData()
+ testData.root.makeUsernamesUnique = true
testData.generateLotOfData()
testDataService.saveTestData(testData.root)
return testData
diff --git a/backend/data/src/main/kotlin/io/tolgee/development/testDataBuilder/TestDataService.kt b/backend/data/src/main/kotlin/io/tolgee/development/testDataBuilder/TestDataService.kt
index e28bc46a2f..3ada8c74f8 100644
--- a/backend/data/src/main/kotlin/io/tolgee/development/testDataBuilder/TestDataService.kt
+++ b/backend/data/src/main/kotlin/io/tolgee/development/testDataBuilder/TestDataService.kt
@@ -46,6 +46,7 @@ import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.stereotype.Service
import org.springframework.transaction.PlatformTransactionManager
import org.springframework.transaction.annotation.Transactional
+import java.util.concurrent.atomic.AtomicLong
@Service
class TestDataService(
@@ -433,9 +434,15 @@ class TestDataService(
private fun saveAllUsers(builder: TestDataBuilder) {
val userAccountBuilders = builder.data.userAccounts
userAccountService.saveAll(
- userAccountBuilders.map {
- it.self.password = passwordEncoder.encode(it.rawPassword)
- it.self
+ userAccountBuilders.map { userBuilder ->
+ if (builder.makeUsernamesUnique) {
+ userBuilder.self.username = userBuilder.self.username.getUniqueUsername()
+ }
+ userBuilder.self.password =
+ passwordHashCache.computeIfAbsent(userBuilder.rawPassword) {
+ passwordEncoder.encode(userBuilder.rawPassword)
+ }
+ userBuilder.self
},
)
saveUserAvatars(userAccountBuilders)
@@ -500,4 +507,26 @@ class TestDataService(
private fun clearEntityManager() {
entityManager.clear()
}
+
+ fun cleanApiKeys(testData: TestDataBuilder) {
+ val ids = testData.data.projects.flatMap { project -> project.data.apiKeys.map { apiKey -> apiKey.self.id } }
+ executeInNewTransaction(transactionManager) {
+ entityManager.createNativeQuery("DELETE FROM postgres.public.api_key_scopes_enum WHERE api_key_id IN (:ids)")
+ .setParameter("ids", ids)
+ .executeUpdate()
+ entityManager.createNativeQuery("DELETE FROM api_key WHERE id IN (:ids)")
+ .setParameter("ids", ids)
+ .executeUpdate()
+ }
+ }
+
+ companion object {
+ private val userUniqueCounter by lazy { AtomicLong() }
+
+ private fun String.getUniqueUsername(): String {
+ return "${this}_${userUniqueCounter.incrementAndGet()}"
+ }
+
+ private val passwordHashCache = mutableMapOf()
+ }
}
diff --git a/backend/data/src/main/kotlin/io/tolgee/development/testDataBuilder/builders/TestDataBuilder.kt b/backend/data/src/main/kotlin/io/tolgee/development/testDataBuilder/builders/TestDataBuilder.kt
index f5f07b21ad..ae0dde264d 100644
--- a/backend/data/src/main/kotlin/io/tolgee/development/testDataBuilder/builders/TestDataBuilder.kt
+++ b/backend/data/src/main/kotlin/io/tolgee/development/testDataBuilder/builders/TestDataBuilder.kt
@@ -25,6 +25,12 @@ class TestDataBuilder(fn: (TestDataBuilder.() -> Unit) = {}) {
val data = DATA()
+ /**
+ * If true, testDataSaver will make the usernames unique for each user account,
+ * so we don't need to clean the database each time
+ */
+ var makeUsernamesUnique = false
+
fun addUserAccountWithoutOrganization(ft: UserAccount.() -> Unit): UserAccountBuilder {
val builder = UserAccountBuilder(this)
data.userAccounts.add(builder)
diff --git a/backend/testing/src/main/kotlin/io/tolgee/BatchJobCleanerListener.kt b/backend/testing/src/main/kotlin/io/tolgee/BatchJobCleanerListener.kt
new file mode 100644
index 0000000000..0522957e08
--- /dev/null
+++ b/backend/testing/src/main/kotlin/io/tolgee/BatchJobCleanerListener.kt
@@ -0,0 +1,13 @@
+package io.tolgee
+
+import io.tolgee.BatchJobTestUtil.pauseAndClearBatchJobs
+import io.tolgee.BatchJobTestUtil.resumeBatchJobs
+import org.springframework.test.context.TestContext
+import org.springframework.test.context.TestExecutionListener
+
+class BatchJobCleanerListener : TestExecutionListener {
+ override fun beforeTestMethod(testContext: TestContext) {
+ pauseAndClearBatchJobs(testContext)
+ resumeBatchJobs(testContext)
+ }
+}
diff --git a/backend/testing/src/main/kotlin/io/tolgee/BatchJobTestUtil.kt b/backend/testing/src/main/kotlin/io/tolgee/BatchJobTestUtil.kt
new file mode 100644
index 0000000000..3d4264c279
--- /dev/null
+++ b/backend/testing/src/main/kotlin/io/tolgee/BatchJobTestUtil.kt
@@ -0,0 +1,24 @@
+package io.tolgee
+
+import io.tolgee.batch.BatchJobChunkExecutionQueue
+import io.tolgee.batch.BatchJobConcurrentLauncher
+import org.springframework.test.context.TestContext
+
+object BatchJobTestUtil {
+ fun resumeBatchJobs(testContext: TestContext) {
+ getBatchJobConcurrentLauncher(testContext).pause = false
+ }
+
+ fun pauseAndClearBatchJobs(testContext: TestContext) {
+ getBatchJobConcurrentLauncher(testContext).pause = true
+ getBatchJobExecutionQueue(testContext).clear()
+ }
+
+ private fun getBatchJobExecutionQueue(testContext: TestContext): BatchJobChunkExecutionQueue {
+ return testContext.applicationContext.getBean(BatchJobChunkExecutionQueue::class.java)
+ }
+
+ private fun getBatchJobConcurrentLauncher(testContext: TestContext): BatchJobConcurrentLauncher {
+ return testContext.applicationContext.getBean(BatchJobConcurrentLauncher::class.java)
+ }
+}
diff --git a/backend/testing/src/main/kotlin/io/tolgee/CleanDbBeforeMethod.kt b/backend/testing/src/main/kotlin/io/tolgee/CleanDbBeforeMethod.kt
new file mode 100644
index 0000000000..3e6c249916
--- /dev/null
+++ b/backend/testing/src/main/kotlin/io/tolgee/CleanDbBeforeMethod.kt
@@ -0,0 +1,6 @@
+package io.tolgee
+
+/**
+ * Tells whether database should be clean before class instead of before method
+ */
+annotation class CleanDbBeforeMethod()
diff --git a/backend/testing/src/main/kotlin/io/tolgee/CleanDbTestListener.kt b/backend/testing/src/main/kotlin/io/tolgee/CleanDbTestListener.kt
index a0f4ddad36..dc31cbabe3 100644
--- a/backend/testing/src/main/kotlin/io/tolgee/CleanDbTestListener.kt
+++ b/backend/testing/src/main/kotlin/io/tolgee/CleanDbTestListener.kt
@@ -1,7 +1,6 @@
package io.tolgee
-import io.tolgee.batch.BatchJobChunkExecutionQueue
-import io.tolgee.batch.BatchJobConcurrentLauncher
+import io.tolgee.api.EeSubscriptionProvider
import kotlinx.coroutines.TimeoutCancellationException
import org.postgresql.util.PSQLException
import org.slf4j.LoggerFactory
@@ -14,6 +13,8 @@ import java.util.concurrent.Future
import java.util.concurrent.TimeUnit
import java.util.concurrent.TimeoutException
import javax.sql.DataSource
+import kotlin.reflect.KMutableProperty1
+import kotlin.reflect.full.memberProperties
import kotlin.system.measureTimeMillis
class CleanDbTestListener : TestExecutionListener {
@@ -26,28 +27,29 @@ class CleanDbTestListener : TestExecutionListener {
)
override fun beforeTestMethod(testContext: TestContext) {
- if (!shouldClenBeforeClass(testContext)) {
+ val provider = testContext.applicationContext.getBean(EeSubscriptionProvider::class.java)
+
+ (provider::class.memberProperties.singleOrNull { it.name == "bypassSeatCountCheck" } as KMutableProperty1).setter.call(
+ provider,
+ true,
+ )
+
+ if (shouldCleanBeforeMethod(testContext)) {
cleanWithRetries(testContext)
}
}
private fun cleanWithRetries(testContext: TestContext) {
logger.info("Cleaning DB")
-
- val appContext: ApplicationContext = testContext.applicationContext
- val batchJobConcurrentLauncher = appContext.getBean(BatchJobConcurrentLauncher::class.java)
- val batchJobQueue = appContext.getBean(BatchJobChunkExecutionQueue::class.java)
-
- batchJobConcurrentLauncher.pause = true
- batchJobQueue.clear()
-
val time =
measureTimeMillis {
var i = 0
while (true) {
try {
withTimeout(3000) {
+ BatchJobTestUtil.pauseAndClearBatchJobs(testContext)
doClean(testContext)
+ BatchJobTestUtil.resumeBatchJobs(testContext)
}
break
} catch (e: Exception) {
@@ -64,7 +66,6 @@ class CleanDbTestListener : TestExecutionListener {
}
}
- batchJobConcurrentLauncher.pause = false
logger.info("DB cleaned in ${time}ms")
}
@@ -75,31 +76,26 @@ class CleanDbTestListener : TestExecutionListener {
val stmt = conn.createStatement()
val databaseName: Any = "postgres"
val ignoredTablesString = ignoredTables.joinToString(", ") { "'$it'" }
- try {
- val rs: ResultSet =
- stmt.executeQuery(
- String.format(
- "SELECT table_schema, table_name" +
- " FROM information_schema.tables" +
- " WHERE table_catalog = '%s' and (table_schema in ('public', 'billing', 'ee'))" +
- " and table_name not in ($ignoredTablesString)",
- databaseName,
- ),
- )
- val tables: MutableList> = ArrayList()
- while (rs.next()) {
- tables.add(rs.getString(1) to rs.getString(2))
- }
- stmt.execute(
- java.lang.String.format(
- "TRUNCATE TABLE %s",
- tables.joinToString(",") { it.first + "." + it.second },
+ val rs: ResultSet =
+ stmt.executeQuery(
+ String.format(
+ "SELECT table_schema, table_name" +
+ " FROM information_schema.tables" +
+ " WHERE table_catalog = '%s' and (table_schema in ('public', 'billing', 'ee'))" +
+ " and table_name not in ($ignoredTablesString)",
+ databaseName,
),
)
- } catch (e: InterruptedException) {
- stmt.cancel()
- throw e
+ val tables: MutableList> = ArrayList()
+ while (rs.next()) {
+ tables.add(rs.getString(1) to rs.getString(2))
}
+ stmt.execute(
+ java.lang.String.format(
+ "TRUNCATE TABLE %s",
+ tables.joinToString(",") { it.first + "." + it.second },
+ ),
+ )
}
}
@@ -113,14 +109,24 @@ class CleanDbTestListener : TestExecutionListener {
@Throws(Exception::class)
override fun beforeTestClass(testContext: TestContext) {
- if (shouldClenBeforeClass(testContext)) {
+ // we need to clean the db before each tests start
+ if (!databaseCleanedOnInit) {
+ cleanWithRetries(testContext)
+ databaseCleanedOnInit = true
+ return
+ }
+
+ if (shouldCleanBeforeClass(testContext)) {
cleanWithRetries(testContext)
}
}
- private fun shouldClenBeforeClass(testContext: TestContext) =
+ private fun shouldCleanBeforeClass(testContext: TestContext) =
testContext.testClass.isAnnotationPresent(CleanDbBeforeClass::class.java)
+ private fun shouldCleanBeforeMethod(testContext: TestContext) =
+ testContext.testMethod.isAnnotationPresent(CleanDbBeforeMethod::class.java)
+
@Throws(Exception::class)
override fun prepareTestInstance(testContext: TestContext) {
}
@@ -141,4 +147,8 @@ class CleanDbTestListener : TestExecutionListener {
executor.shutdownNow()
}
+
+ companion object {
+ var databaseCleanedOnInit = false
+ }
}
diff --git a/backend/testing/src/main/kotlin/io/tolgee/testing/AbstractTransactionalTest.kt b/backend/testing/src/main/kotlin/io/tolgee/testing/AbstractTransactionalTest.kt
index 4079edb18b..c358039252 100644
--- a/backend/testing/src/main/kotlin/io/tolgee/testing/AbstractTransactionalTest.kt
+++ b/backend/testing/src/main/kotlin/io/tolgee/testing/AbstractTransactionalTest.kt
@@ -1,5 +1,6 @@
package io.tolgee.testing
+import io.tolgee.BatchJobCleanerListener
import io.tolgee.CleanDbTestListener
import jakarta.persistence.EntityManager
import org.springframework.beans.factory.annotation.Autowired
@@ -16,6 +17,7 @@ import org.springframework.test.context.transaction.TransactionalTestExecutionLi
DependencyInjectionTestExecutionListener::class,
CleanDbTestListener::class,
DirtiesContextTestExecutionListener::class,
+ BatchJobCleanerListener::class,
],
)
@ActiveProfiles(profiles = ["local"])