Add PasswordChangeRequiredException

This commit is contained in:
Mikołaj Pich 2019-03-26 19:33:38 +01:00
parent d032a0e10b
commit e2f9730fda
No known key found for this signature in database
GPG key ID: F62B26E36D4C4BAA
4 changed files with 79 additions and 0 deletions

View file

@ -3,6 +3,7 @@ package io.github.wulkanowy.api.interceptor
import io.github.wulkanowy.api.ApiException
import io.github.wulkanowy.api.login.AccountPermissionException
import io.github.wulkanowy.api.login.BadCredentialsException
import io.github.wulkanowy.api.login.PasswordChangeRequiredException
import okhttp3.Interceptor
import okhttp3.Response
import org.jsoup.Jsoup
@ -43,6 +44,7 @@ class ErrorInterceptor : Interceptor {
"Przerwa techniczna" -> throw ServiceUnavailableException(doc.title())
"Strona nie została odnaleziona" -> throw ApiException(doc.title())
"Strona nie znaleziona" -> throw ApiException(doc.selectFirst("div div").text())
"Zmiana hasła użytkownika" -> throw PasswordChangeRequiredException("Wymagana zmiana hasła użytkownika")
}
doc.select("h2").text().let {

View file

@ -0,0 +1,5 @@
package io.github.wulkanowy.api.login
import io.github.wulkanowy.api.ApiException
class PasswordChangeRequiredException internal constructor(message: String) : ApiException(message)

View file

@ -4,6 +4,7 @@ import io.github.wulkanowy.api.Api
import io.github.wulkanowy.api.BaseLocalTest
import io.github.wulkanowy.api.login.LoginTest
import io.github.wulkanowy.api.login.NotLoggedInException
import io.github.wulkanowy.api.login.PasswordChangeRequiredException
import io.github.wulkanowy.api.notes.Note
import io.reactivex.observers.TestObserver
import org.junit.Test
@ -57,4 +58,12 @@ class ErrorInterceptorTest : BaseLocalTest() {
notes.subscribe(observer)
observer.assertError(ServiceUnavailableException::class.java)
}
@Test
fun passwordChangeRequired() {
val notes = getSnpRepo(LoginTest::class.java, "PrzywracanieDostepu.html", Api.LoginType.ADFSLight).getNotes()
val observer = TestObserver<List<Note>>()
notes.subscribe(observer)
observer.assertError(PasswordChangeRequiredException::class.java)
}
}

View file

@ -0,0 +1,63 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8">
<title>Zmiana hasła użytkownika</title>
</head>
<body>
<form action="/AccountManage/SetNewPassword?username=jan123&amp;returnTo=/" method="post">
<div class="mainDiv">
<div class="innerDiv">
<div>
Mechanizm bezpieczeństwa (ochrona przeciwko robotom i robakom internetowym) może
poprosić Cię o dodatkowe potwierdzenie. Postępuj zgodnie ze wskazówkami na ekranie.
</div>
<table id="tblPassword" border="0" cellpadding="3" cellspacing="3">
<tr>
<td align="right">Login:</td>
<td colspan="2">
<input name="__RequestVerificationToken" type="hidden" value=""/>
<span style="font-weight : bold">jan123</span>
<input data-val="true" id="Username" name="Username" type="hidden" value="jan123"/></td>
</tr>
<tr>
<td align="right">Obecne hasło:</td>
<td>
<input aria-required="true" id="OldPassword" name="OldPassword" type="password"/>
<span class="field-validation-valid">(wymagane)</span>
</td>
</tr>
<tr>
<td align="right">Nowe hasło:</td>
<td>
<input aria-required="true" id="NewPassword" name="NewPassword" title="Wymagana właściwa złożoność hasła" type="password"/>
<div id="PasswordTooltip">
Hasło musi spełniać następujące wymagania: <br/>
- długość hasła: co najmniej <b>8</b> <br/>
- liczba wielkich liter: co najmniej <b>1</b><br/>
- liczba cyfr: co najmniej <b>1</b> <br/>
- ważność hasła (liczba dni po których hasło wygasa): <b>180</b> <br/>
- unikalność hasła (liczba dni w których hasło nie może się powtórzyć): <b>191</b>
</div>
<span class="field-validation-valid">(wymagane)</span>
</td>
</tr>
<tr>
<td align="right">Powtórz nowe hasło:</td>
<td>
<input aria-required="true" name="RepeatedNewPassword" type="password"/>
<span class="field-validation-valid">(wymagane)</span>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input type="image" alt="Ustaw nowe hasło"/>
</td>
</tr>
</table>
</div>
</div>
</form>
</body>
</html>