package tech.easyflow.auth.service.impl;

import cn.dev33.satoken.stp.SaLoginModel;
import org.junit.Assert;
import org.junit.Test;

/**
 * {@link AuthLoginSessionPolicy} 测试。
 */
public class AuthLoginSessionPolicyTest {

    /**
     * 验证 Web 登录设备类型和多端登录会话替换策略。
     */
    @Test
    public void shouldBuildExclusiveWebLoginModel() {
        SaLoginModel model = AuthLoginSessionPolicy.webLoginModel();

        Assert.assertEquals("WEB", model.getDevice());
        Assert.assertEquals("default-device", AuthLoginSessionPolicy.LEGACY_WEB_DEVICE);
        Assert.assertTrue(AuthLoginSessionPolicy.shouldReplaceExistingWebSession(false));
        Assert.assertFalse(AuthLoginSessionPolicy.shouldReplaceExistingWebSession(true));
    }

    /**
     * 验证 API Key 会话使用独立设备类型和指定有效期。
     */
    @Test
    public void shouldBuildIndependentApiKeyLoginModel() {
        SaLoginModel model = AuthLoginSessionPolicy.apiKeyLoginModel(120L);

        Assert.assertEquals("API_KEY", model.getDevice());
        Assert.assertEquals(Long.valueOf(120L), model.getTimeout());
    }
}
