当前位置: 首页 > 知识库问答 >
问题:

如何配置带有身份验证的嵌入式MongoDB以用于Spring Boot集成测试?

符允晨
2023-03-14

所以我真正的问题是:

有没有一种方法可以用身份验证初始化嵌入式数据库?我一直在挖掘源代码,但没有发现任何东西。

共有1个答案

彭成天
2023-03-14

我也有同样的问题。这就是它对我的工作方式(使用Kotlin):

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = ["spring.data.mongodb.port="])
class IntegrationTests {

@Autowired
private val webClient: WebTestClient? = null

@Autowired
private val mongoConfig: IMongodConfig? = null
var collection: MongoCollection<Document>? = null

fun createDBAndCollection(collectionName: String){
    val mongo = MongoClient("127.0.0.1", mongoConfig!!.net().port)
    val db = mongo.getDatabase("local")
    db.createCollection(collectionName)
    collection = db.getCollection(collectionName)
}

@Test
fun `Find all tracks on JSON REST endpoint`() {
    createDBAndCollection("track")
    collection?.insertOne(Document("key", "val"))

    webClient!!.get().uri("/reactive/tracks")
            .accept(APPLICATION_JSON)
            .exchange()
            .expectStatus().is2xxSuccessful
            .expectBodyList<Track>()
            .hasSize(1);
}
}
  • 不需要更改application.properties。使用SprintBootTest注释清空端口设置就足够了(其他方法对我不起作用,例如@testpropertysource)
  • MongoConfig被注入并用于检索FlapDoodle生成的随机端口
  • 数据库名称必须与application.properties中的数据库名称匹配(但我确信有一种方法可以在运行时动态读取该名称)。

我的分级测试依赖项是:

testImplementation('de.flapdoodle.embed:de.flapdoodle.embed.mongo')
testImplementation('io.projectreactor:reactor-test')
testImplementation('org.springframework.boot:spring-boot-starter-test')
testImplementation("org.junit.jupiter:junit-jupiter-api")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
 类似资料:
  • 看起来它与我们在正常项目中的websecurity配置有冲突。这是文件: 我尝试添加来修复上述问题,但最终仍然以结束

  • 我有一个简单的spring boot(1.3.5)应用程序,它有一个简单的集成测试,在我引入Spring-boot-starter-security之前可以工作。我在application.properties中设置了security.user.name和security.user.password,这似乎是保护我的endpoint密码所需要的全部(如果可能的话,我不希望添加不必要的角色或安全配置

  • 我的问题是,我们有一组运行SiteMinder但非常糟糕的遗留代码。它允许IIS匿名并避免使用Active Directory。 我们正在重建此应用程序,并希望将SiteMinder与IIS和集成。净额4.0。我知道我可以构建自己的安全框架,无需用户名和密码即可完成所有工作(因为我们不希望SiteMinder提供),但我想知道是否有办法使用内置的Windows身份验证(窗体或Windows)与Si

  • 问题内容: 我看到了很多教程,展示了如何使用Java在mongodb中进行身份验证 我将mongodb配置为启用身份验证。在控制台中,我使用 使用管理员 db.auth(“ myUser”,“ newPassword”)并运行良好。 在Java中,在每个访问过的网站中,代码都是 大问题是代码对我不起作用,我也不知道为什么。我测试了显式更改为管理数据库。 这对我来说有效,但这不是解决方案,因为我试图

  • 我正在尝试使用Key斗篷在我的web应用程序和IDP Azure广告之间进行saml代理。 我在Azure广告中创建了几个用户,并将我的webapp添加为应用程序。我已经用SAML IDP配置了Key斗篷,并在Key斗篷中导入了Azure AD federation数据。 但在某个地方出现了一些问题,因为我并没有在网络上获得任何链接,这些链接可以让我一步一步地将Keyclope与Azure广告集成

  • 我正在尝试将Spring身份验证与嵌入式ldap集成。 我在本地ldif文件中有用户信息。 用户1 用户2 Spring网络安全配置文件 配置文件中的userDnPattern我使用了ou=people(uid={0},ou=people),所以我可以对bob进行身份验证。说到乔,他的目录路径是不同的。所以我无法使用joe的用户名和密码登录。 无论目录结构如何,我对所有用户进行身份验证的Sprin