View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.syncope.client.console.panels.search;
20  
21  import static org.junit.jupiter.api.Assertions.assertEquals;
22  import static org.junit.jupiter.api.Assertions.assertNull;
23  import static org.mockito.Mockito.mock;
24  import static org.mockito.Mockito.when;
25  
26  import java.util.List;
27  import org.apache.syncope.client.console.AbstractAdminTest;
28  import org.apache.syncope.client.console.pages.BasePage;
29  import org.apache.syncope.client.ui.commons.Constants;
30  import org.apache.wicket.Component;
31  import org.apache.wicket.PageReference;
32  import org.apache.wicket.model.util.ListModel;
33  import org.apache.wicket.util.tester.FormTester;
34  import org.junit.jupiter.api.Test;
35  
36  public class UserSearchPanelTest extends AbstractAdminTest {
37  
38      @Test
39      public void test() {
40          BasePage page = new BasePage();
41          PageReference pageRef = mock(PageReference.class);
42          when(pageRef.getPage()).thenReturn(page);
43  
44          SearchClause clause = new SearchClause();
45          clause.setComparator(SearchClause.Comparator.EQUALS);
46          clause.setType(SearchClause.Type.ATTRIBUTE);
47          clause.setProperty("username");
48  
49          TESTER.startComponentInPage(new UserSearchPanel.Builder(
50                  new ListModel<>(List.of(clause)), pageRef).
51                  required(true).enableSearch().build("content"));
52  
53          FormTester formTester = TESTER.newFormTester(
54                  "content:searchFormContainer:search:multiValueContainer:innerForm");
55  
56          assertEquals("username", formTester.getForm().
57                  get("content:view:0:panel:container:property:textField").getDefaultModelObjectAsString());
58          assertNull(formTester.getForm().
59                  get("content:view:0:panel:container:value:textField").getDefaultModelObject());
60  
61          formTester.setValue("content:view:0:panel:container:property:textField", "firstname");
62          TESTER.executeAjaxEvent(formTester.getForm().
63                  get("content:view:0:panel:container:property:textField"), Constants.ON_KEYDOWN);
64          formTester.setValue("content:view:0:panel:container:value:textField", "vincenzo");
65          TESTER.executeAjaxEvent(formTester.getForm().
66                  get("content:view:0:panel:container:value:textField"), Constants.ON_KEYDOWN);
67  
68          Component searchButton = formTester.getForm().
69                  get("content:view:0:panel:container:operatorContainer:operator:search");
70          TESTER.clickLink(searchButton);
71          TESTER.executeAjaxEvent(searchButton.getPageRelativePath(), Constants.ON_CLICK);
72  
73          assertEquals("firstname", formTester.getForm().
74                  get("content:view:0:panel:container:property:textField").getDefaultModelObjectAsString());
75          assertEquals("vincenzo", formTester.getForm().
76                  get("content:view:0:panel:container:value:textField").getDefaultModelObjectAsString());
77      }
78  }