package ru.forbion.f7cloud.core.network

import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test

/** Разбор параметров nc-login QR. Фиксирует баг: пароль с `&` терялся (split('&')+size>3). */
class LoginFlowClientTest {

    @Test fun `пароль с амперсандом и двоеточием не теряется`() {
        val r = LoginFlowClient.parseCredentialParams(
            "server:https://cloud.f7.ru&user:ivan&password:a&b:c&d",
        )!!
        assertEquals("https://cloud.f7.ru", r.server)
        assertEquals("ivan", r.user)
        assertEquals("a&b:c&d", r.password)
    }

    @Test fun `порядок полей произвольный`() {
        val r = LoginFlowClient.parseCredentialParams(
            "user:masha&password:p@ss&server:https://x.ru",
        )!!
        assertEquals("https://x.ru", r.server)
        assertEquals("masha", r.user)
        assertEquals("p@ss", r.password)
    }

    @Test fun `простой пароль без спецсимволов`() {
        val r = LoginFlowClient.parseCredentialParams(
            "server:https://x.ru&user:u&password:simple",
        )!!
        assertEquals("simple", r.password)
    }

    @Test fun `нет обязательного поля — null`() {
        assertNull(LoginFlowClient.parseCredentialParams("server:https://x.ru&user:u"))
    }
}
