blob: 2d22b271d8e7191dfce8c2b11d8d31b3cbdcb1b8 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.syncope.fit.enduser;
import static org.apache.syncope.fit.enduser.AbstractEnduserITCase.securityQuestionService;
import static org.apache.syncope.fit.enduser.AbstractEnduserITCase.userService;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import org.apache.syncope.client.enduser.pages.Login;
import org.apache.syncope.client.enduser.pages.SelfPasswordReset;
import org.apache.syncope.client.enduser.pages.SelfRegistration;
import org.apache.syncope.client.enduser.pages.SelfResult;
import org.apache.syncope.client.lib.SyncopeClient;
import org.apache.syncope.client.ui.commons.Constants;
import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.request.StringReplacePatchItem;
import org.apache.syncope.common.lib.request.UserUR;
import org.apache.syncope.common.lib.to.SecurityQuestionTO;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.rest.api.beans.AnyQuery;
import org.apache.wicket.util.tester.FormTester;
import org.junit.jupiter.api.Test;
public class AnonymousITCase extends AbstractEnduserITCase {
@Test
public void selfCreate() {
String username = "testUser";
TESTER.startPage(Login.class);
TESTER.assertRenderedPage(Login.class);
TESTER.clickLink("self-registration");
TESTER.assertRenderedPage(SelfRegistration.class);
String form = "body:contentWrapper:content:selfRegistrationPanel:form";
FormTester formTester = TESTER.newFormTester(form);
formTester.setValue("userDetailsPanelCard:contentPanel:username:textField", username);
formTester.setValue(
"userDetailsPanelCard:contentPanel:password:passwordPanel:passwordInnerForm:password:passwordField",
"Password123");
formTester.setValue(
"userDetailsPanelCard:contentPanel:password:passwordPanel:passwordInnerForm:confirmPassword:"
+ "passwordField",
"Password123");
formTester.setValue(
"plainAttrsPanelCard:contentPanel:plainSchemas:schemas:6:panel:textField",
"Fullname");
formTester.setValue(
"plainAttrsPanelCard:contentPanel:plainSchemas:schemas:12:panel:textField",
"Surname");
formTester.setValue(
"plainAttrsPanelCard:contentPanel:plainSchemas:schemas:14:panel:textField",
username + "@syncope.apache.org");
try {
TESTER.executeAjaxEvent(form + ":submit", Constants.ON_CLICK);
TESTER.assertRenderedPage(SelfResult.class);
assertFalse(userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
fiql(SyncopeClient.getUserSearchConditionBuilder().is("username").equalTo(username).query()).
build()).getResult().isEmpty());
assertNotNull(userService.read(username));
TESTER.cleanupFeedbackMessages();
} finally {
// cleanup
try {
userService.delete(username);
} catch (Exception e) {
// ignore
}
}
}
@Test
public void selfPasswordReset() {
SecurityQuestionTO question = securityQuestionService.read("887028ea-66fc-41e7-b397-620d7ea6dfbb");
UserTO selfpwdreset = userService.read("selfpwdreset");
userService.update(new UserUR.Builder(selfpwdreset.getKey()).
securityQuestion(new StringReplacePatchItem.Builder().value(question.getKey()).build()).
securityAnswer(new StringReplacePatchItem.Builder().value("ananswer").build()).
build());
TESTER.startPage(Login.class);
TESTER.assertRenderedPage(Login.class);
TESTER.clickLink("self-pwd-reset");
TESTER.assertRenderedPage(SelfPasswordReset.class);
String pwdResetForm = "body:contentWrapper:content:selfPwdResetForm";
FormTester formTester = TESTER.newFormTester(pwdResetForm);
// 1. set username to selfpwdreset
formTester.setValue("selfPasswordResetPanelCard:contentPanel:username", "selfpwdreset");
TESTER.executeAjaxEvent(
pwdResetForm + ":selfPasswordResetPanelCard:contentPanel:username", Constants.ON_BLUR);
// 2. check that the question has been populated
TESTER.assertModelValue(
pwdResetForm + ":selfPasswordResetPanelCard:contentPanel:securityQuestion",
question.getContent());
// 3. submit form and receive an error
TESTER.executeAjaxEvent(pwdResetForm + ":submit", Constants.ON_CLICK);
TESTER.assertErrorMessages("Invalid Security Answer");
TESTER.cleanupFeedbackMessages();
// 3.1 set the correct answer
formTester = TESTER.newFormTester(pwdResetForm);
formTester.setValue("selfPasswordResetPanelCard:contentPanel:username", "selfpwdreset");
TESTER.executeAjaxEvent(
pwdResetForm + ":selfPasswordResetPanelCard:contentPanel:username", Constants.ON_BLUR);
TESTER.assertModelValue(
pwdResetForm + ":selfPasswordResetPanelCard:contentPanel:securityQuestion",
question.getContent());
formTester.setValue("selfPasswordResetPanelCard:contentPanel:securityAnswer", "ananswer");
TESTER.executeAjaxEvent(
pwdResetForm + ":selfPasswordResetPanelCard:contentPanel:securityAnswer", Constants.ON_CHANGE);
// 4. submit form
TESTER.executeAjaxEvent(pwdResetForm + ":submit", Constants.ON_CLICK);
TESTER.assertRenderedPage(SelfResult.class);
TESTER.cleanupFeedbackMessages();
}
}