Skip to content

Instantly share code, notes, and snippets.

@jakzal
jakzal / FooTest.java
Created May 19, 2021 09:47
JUnit extension for logger tests
package com.kaffeinelabs;
import com.kaffeinelabs.test.junit.extension.LoggerExtension;
import org.junit.jupiter.api.Test;
class FooTest {
@RegisterExtension
LoggerExtension loggerExtension = LoggerExtension.forLogger(Foo.class);
@Test
@jakzal
jakzal / EventBus.kt
Last active March 25, 2020 10:15
EventBus implementation in Kotlin
package pl.zalas.eventbus
interface EventBus<in E> {
fun publish(event: E)
}
@jakzal
jakzal / JacksonConfig.kt
Created January 10, 2020 15:31
Register Jackson subtypes automatically for a given list of parent classes
package pl.zalas.acme.config
import com.fasterxml.jackson.databind.Module
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import pl.zalas.jackson.module.subtype.SubTypeModule
@Configuration
class JacksonConfig {
@Bean
@jakzal
jakzal / build.gradle.kts
Created December 30, 2019 12:13
Run a Spring Boot application with the dev profile (Gradle Kotlin DSL)
tasks.register("bootRunDev") {
group = "application"
description = "Runs this project as a Spring Boot application with the dev profile"
doFirst {
tasks.bootRun.configure {
systemProperty("spring.profiles.active", "dev")
}
}
finalizedBy("bootRun")
}
@jakzal
jakzal / AuthTokenProvider.java
Last active December 18, 2022 13:09
Reload AWS RDS/Aurora token every x minutes in Spring Boot
package acme.aws;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.rds.auth.GetIamAuthTokenRequest;
import com.amazonaws.services.rds.auth.RdsIamAuthTokenGenerator;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.stereotype.Component;
@Component
@jakzal
jakzal / EnvironmentActiveProfileResolver.java
Created June 19, 2019 22:37
Overriding Spring Boot test configuration on the CI server
package acme.test;
import org.springframework.test.context.ActiveProfilesResolver;
public class EnvironmentActiveProfileResolver implements ActiveProfilesResolver {
@Override
public String[] resolve(Class<?> aClass) {
return new String[]{System.getenv("BUILD_ID") == null ? "test" : "test,ci"};
}
}
@jakzal
jakzal / DatabaseContainerExtension.java
Last active October 28, 2020 17:08
Test containers with Spring Boot
package acme.testcontainers;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.junit.jupiter.Testcontainers;
@Testcontainers
public class DatabaseContainerExtension implements BeforeAllCallback {
private final PostgreSQLContainer postgreSQLContainer = SharedPostgreSQLContainer.getInstance();
@jakzal
jakzal / SearchPage.php
Created February 8, 2019 15:28
Page objects
<?php declare(strict_types=1);
use Behat\Mink\Element\NodeElement;
use Behat\Mink\Session;
use Zalas\PageObject\Annotation\FindBy;
use Zalas\PageObject\Annotation\MinkSession;
class SearchPage
{
/**
@jakzal
jakzal / DoublesTest.php
Last active September 26, 2018 23:22
Test double examples
<?php declare(strict_types=1);
namespace App\Tests\Doubles;
use PHPUnit\Framework\TestCase;
class Item
{
}
@jakzal
jakzal / MockerTest.php
Last active July 27, 2018 13:16
[Idea] Automated injection of test doubles into phpunit test cases
<?php
declare(strict_types=1);
namespace Zalas\Injector\Tests\Service;
use PHPUnit\Framework\TestCase;
use Prophecy\Prophecy\ObjectProphecy;
use Psr\Container\ContainerInterface;
use Psr\Container\NotFoundExceptionInterface;
use Zalas\Injector\PHPUnit\TestCase\ServiceContainerTestCase;