rieckpil / blog-tutorials

:star: Codebase for various tutorials about Java, Spring Boot, AWS, Kotlin, and Testing
https://rieckpil.de/
MIT License
770 stars 756 forks source link

test insert with mongodb by making get request #156

Open dhanyn10 opened 1 year ago

dhanyn10 commented 1 year ago

Blog post you are referring to

blog from url: https://rieckpil.de/mongodb-testcontainers-setup-for-datamongotest/

Your Question

im trying to make simple insert database testing, below is my test code

@Testcontainers
@SpringBootTest
@DisplayName("users testing")
@DataMongoTest(excludeAutoConfiguration = EmbeddedMongoAutoConfiguration.class)
class OrderApplicationUsersTests {

    @Container
    static MongoDBContainer mongoDBContainer = new MongoDBContainer(DockerImageName.parse("mongo:6.0.3"));

    @DynamicPropertySource
    static void setProperties(DynamicPropertyRegistry registry) {
        registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
    }

    private UserRepository userRepo;

    private String uriContainer = mongoDBContainer.getIpAddress();

    @Test
    @DisplayName("add admin")
    void isertAdmin() throws IOException {
        userRepo.deleteAll();
        URL url = new URL(uriContainer + "/users/admin");
        URLConnection conn = url.openConnection();
        InputStream in = conn.getInputStream();
        String encoding = conn.getContentEncoding();
        encoding = encoding == null ? "UTF-8" : encoding;
        String body = IOUtils.toString(in, encoding);
        MatcherAssert.assertThat(body, CoreMatchers.containsString("admin generated"));
    }

    @Test
    @DisplayName("add admin failed")
    void isertAdminTwice() throws IOException {
        URL url = new URL(uriContainer + "/users/admin");
        URLConnection conn = url.openConnection();
        InputStream in = conn.getInputStream();
        String encoding = conn.getContentEncoding();
        encoding = encoding == null ? "UTF-8" : encoding;
        String body = IOUtils.toString(in, encoding);
        MatcherAssert.assertThat(body, CoreMatchers.containsString("admin only generated once"));
    }

also already post question to stackoverflow https://stackoverflow.com/questions/75198138/how-to-keep-data-when-testing-insert-to-mongodb-collection-with-spring-inside-do

Context (Environment, Dependency Versions, Framework)

dna@dna:~$ java --version
openjdk 17.0.5 2022-10-18
OpenJDK Runtime Environment (build 17.0.5+8-Ubuntu-2ubuntu122.04)
OpenJDK 64-Bit Server VM (build 17.0.5+8-Ubuntu-2ubuntu122.04, mixed mode, sharing)
dna@dna:~$ mvn --version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 17.0.5, vendor: Private Build, runtime: /usr/lib/jvm/java-17-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-41-generic", arch: "amd64", family: "unix"

my pom.xml https://github.com/dhanyn10/tes-jejakin-be/blob/main/order/pom.xml im using Linux Mint 21 Cinnamon my error log: https://github.com/dhanyn10/tes-jejakin-be/actions/runs/3980299926/jobs/6823284040

rieckpil commented 3 months ago

What is the error you get? @dhanyn10