package com.codebyte.api.support;

import com.codebyte.api.config.AppProperties;
import java.time.Duration;
import java.util.List;

/**
 * Builds a fully-populated {@link AppProperties} for unit tests, so field additions touch one
 * place.
 */
public final class TestAppProperties {

    private TestAppProperties() {}

    public static AppProperties defaults() {
        return new AppProperties(
                new AppProperties.Mail("no-reply@demo.local"),
                new AppProperties.Activation(Duration.ofHours(24), "http://localhost:4455"),
                new AppProperties.Reset(Duration.ofHours(1)),
                new AppProperties.Jwt(
                        "test-secret-0123456789-0123456789-0123456789",
                        "demo",
                        "demo-clients",
                        Duration.ofMinutes(15),
                        Duration.ofDays(30)),
                new AppProperties.Login(5, Duration.ofMinutes(15)),
                new AppProperties.Cors(List.of()),
                new AppProperties.RateLimit(true, 20, Duration.ofMinutes(1)));
    }
}
