View Javadoc
1   /*
2    *  Copyright 2022 Red Hat
3    *
4    *  Licensed under the Apache License, Version 2.0 (the "License");
5    *  you may not use this file except in compliance with the License.
6    *  You may obtain a copy of the License at
7    *
8    *      https://www.apache.org/licenses/LICENSE-2.0
9    *
10   *  Unless required by applicable law or agreed to in writing, software
11   *  distributed under the License is distributed on an "AS IS" BASIS,
12   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *  See the License for the specific language governing permissions and
14   *  limitations under the License.
15   */
16  package org.jboss.hal.testsuite.test.configuration.iiop;
17  
18  import org.jboss.arquillian.core.api.annotation.Inject;
19  import org.jboss.arquillian.graphene.page.Page;
20  import org.jboss.hal.resources.Ids;
21  import org.jboss.hal.testsuite.Console;
22  import org.jboss.hal.testsuite.CrudOperations;
23  import org.jboss.hal.testsuite.Random;
24  import org.jboss.hal.testsuite.container.WildFlyContainer;
25  import org.jboss.hal.testsuite.fragment.FormFragment;
26  import org.jboss.hal.testsuite.page.configuration.IIOPPage;
27  import org.jboss.hal.testsuite.test.Manatoko;
28  import org.junit.jupiter.api.BeforeAll;
29  import org.junit.jupiter.api.BeforeEach;
30  import org.junit.jupiter.api.Test;
31  import org.testcontainers.junit.jupiter.Container;
32  import org.testcontainers.junit.jupiter.Testcontainers;
33  import org.wildfly.extras.creaper.core.online.OnlineManagementClient;
34  import org.wildfly.extras.creaper.core.online.operations.Operations;
35  
36  import static org.jboss.hal.dmr.ModelDescriptionConstants.GROUP;
37  import static org.jboss.hal.dmr.ModelDescriptionConstants.IDENTITY;
38  import static org.jboss.hal.dmr.ModelDescriptionConstants.IIOP_OPENJDK;
39  import static org.jboss.hal.dmr.ModelDescriptionConstants.NAMING;
40  import static org.jboss.hal.dmr.ModelDescriptionConstants.NONE;
41  import static org.jboss.hal.dmr.ModelDescriptionConstants.PROPERTIES;
42  import static org.jboss.hal.dmr.ModelDescriptionConstants.SECURITY;
43  import static org.jboss.hal.dmr.ModelDescriptionConstants.SECURITY_DOMAIN;
44  import static org.jboss.hal.dmr.ModelDescriptionConstants.SOCKET_BINDING;
45  import static org.jboss.hal.dmr.ModelDescriptionConstants.TRANSACTIONS;
46  import static org.jboss.hal.testsuite.container.WildFlyConfiguration.FULL;
47  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.AUTH_METHOD;
48  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.CALLER_PROPAGATION;
49  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.DEFAULT_ROOT_CONTEXT;
50  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.EXPORT_CORBALOC;
51  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.HIGH_WATER_MARK;
52  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.IIOP;
53  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.PERSISTENT_SERVER_ID;
54  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.ROOT_CONTEXT;
55  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.SPEC;
56  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.SUBSYSTEM_ADDRESS;
57  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.SUPPORTED;
58  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.SUPPORT_SSL;
59  import static org.jboss.hal.testsuite.fixtures.IIOPFixtures.USERNAME_PASSWORD;
60  import static org.jboss.hal.testsuite.page.configuration.IIOPPage.IIOP_PREFIX;
61  import static org.junit.jupiter.api.Assertions.assertEquals;
62  import static org.junit.jupiter.api.Assertions.assertTrue;
63  
64  @Manatoko
65  @Testcontainers
66  class IIOPTest {
67  
68      @Container static WildFlyContainer wildFly = WildFlyContainer.standalone(FULL);
69      private static Operations operations;
70  
71      @BeforeAll
72      static void setupModel() throws Exception {
73          OnlineManagementClient client = wildFly.managementClient();
74          operations = new Operations(client);
75          operations.undefineAttribute(SUBSYSTEM_ADDRESS, PERSISTENT_SERVER_ID);
76          operations.undefineAttribute(SUBSYSTEM_ADDRESS, EXPORT_CORBALOC);
77          operations.writeAttribute(SUBSYSTEM_ADDRESS, SECURITY, IDENTITY);
78          operations.writeAttribute(SUBSYSTEM_ADDRESS, TRANSACTIONS, SPEC);
79          operations.undefineAttribute(SUBSYSTEM_ADDRESS, AUTH_METHOD);
80          operations.undefineAttribute(SUBSYSTEM_ADDRESS, CALLER_PROPAGATION);
81          operations.undefineAttribute(SUBSYSTEM_ADDRESS, HIGH_WATER_MARK);
82          operations.undefineAttribute(SUBSYSTEM_ADDRESS, ROOT_CONTEXT);
83          operations.undefineAttribute(SUBSYSTEM_ADDRESS, PROPERTIES);
84          operations.undefineAttribute(SUBSYSTEM_ADDRESS, SUPPORT_SSL);
85          operations.undefineAttribute(SUBSYSTEM_ADDRESS, SECURITY_DOMAIN);
86      }
87  
88      @Inject Console console;
89      @Inject CrudOperations crud;
90      @Page IIOPPage page;
91      FormFragment form;
92  
93      @BeforeEach
94      void prepare() {
95          page.navigate();
96      }
97  
98      @Test
99      void updateOrbPersistentId() throws Exception {
100         page.getTabs().select(Ids.build(IIOP_PREFIX, GROUP, "orb", Ids.TAB));
101         form = page.getOrbForm();
102         crud.update(SUBSYSTEM_ADDRESS, form, PERSISTENT_SERVER_ID, "23");
103     }
104 
105     @Test
106     void showOrbSocketBindingSensitive() {
107         page.getTabs().select(Ids.build(IIOP_PREFIX, GROUP, "orb", Ids.TAB));
108         form = page.getOrbForm();
109         form.showSensitive(SOCKET_BINDING);
110 
111         String val = form.value(SOCKET_BINDING);
112         assertEquals(val, IIOP);
113     }
114 
115     @Test
116     void updateNaming() throws Exception {
117         page.getTabs().select(Ids.build(IIOP_PREFIX, GROUP, NAMING, Ids.TAB));
118         form = page.getNamingForm();
119         crud.update(SUBSYSTEM_ADDRESS, form, EXPORT_CORBALOC, false);
120     }
121 
122     @Test
123     void resetNaming() throws Exception {
124         page.getTabs().select(Ids.build(IIOP_PREFIX, GROUP, NAMING, Ids.TAB));
125         form = page.getNamingForm();
126         crud.reset(SUBSYSTEM_ADDRESS, form, resourceVerifier -> {
127             resourceVerifier.verifyAttribute(EXPORT_CORBALOC, true);
128             resourceVerifier.verifyAttribute(ROOT_CONTEXT, DEFAULT_ROOT_CONTEXT);
129         });
130     }
131 
132     @Test
133     void resetInitializers() throws Exception {
134         page.getTabs().select(Ids.build(IIOP_PREFIX, GROUP, "initializers", Ids.TAB));
135         form = page.getInitializersForm();
136         crud.reset(SUBSYSTEM_ADDRESS, form, resourceVerifier -> {
137             resourceVerifier.verifyAttribute(SECURITY, NONE);
138             resourceVerifier.verifyAttribute(TRANSACTIONS, NONE);
139         });
140     }
141 
142     @Test
143     void updateAsContext() throws Exception {
144         page.getTabs().select(Ids.build(IIOP_PREFIX, GROUP, "as-context", Ids.TAB));
145         form = page.getAsContextForm();
146         crud.update(SUBSYSTEM_ADDRESS, form,
147                 f -> f.select(AUTH_METHOD, NONE),
148                 resourceVerifier -> resourceVerifier.verifyAttribute(AUTH_METHOD, NONE));
149     }
150 
151     @Test
152     void resetAsContext() throws Exception {
153         page.getTabs().select(Ids.build(IIOP_PREFIX, GROUP, "as-context", Ids.TAB));
154         form = page.getAsContextForm();
155         crud.reset(SUBSYSTEM_ADDRESS, form,
156                 resourceVerifier -> resourceVerifier.verifyAttribute(AUTH_METHOD, USERNAME_PASSWORD));
157     }
158 
159     @Test
160     void updateSasContext() throws Exception {
161         page.getTabs().select(Ids.build(IIOP_PREFIX, GROUP, "sas-context", Ids.TAB));
162         form = page.getSasContextForm();
163         crud.update(SUBSYSTEM_ADDRESS, form,
164                 f -> f.select(CALLER_PROPAGATION, SUPPORTED),
165                 resourceVerifier -> resourceVerifier.verifyAttribute(CALLER_PROPAGATION, SUPPORTED));
166     }
167 
168     @Test
169     void updateSecurity() throws Exception {
170         boolean clientRequiresSSL = operations.readAttribute(SUBSYSTEM_ADDRESS, "client-requires-ssl").booleanValue();
171         boolean serverRequiresSSL = operations.readAttribute(SUBSYSTEM_ADDRESS, "client-requires-ssl").booleanValue();
172         boolean supportSSL = operations.readAttribute(SUBSYSTEM_ADDRESS, "support-ssl").booleanValue();
173         page.getTabs().select(Ids.build(IIOP_PREFIX, GROUP, SECURITY, Ids.TAB));
174         form = page.getSecurityForm();
175         crud.update(SUBSYSTEM_ADDRESS, form,
176                 formFragment -> {
177                     formFragment.flip("client-requires-ssl", !clientRequiresSSL);
178                     formFragment.flip("server-requires-ssl", !serverRequiresSSL);
179                     formFragment.flip("support-ssl", !supportSSL);
180                 },
181                 resourceVerifier -> {
182                     resourceVerifier.verifyAttribute("client-requires-ssl", !clientRequiresSSL);
183                     resourceVerifier.verifyAttribute("server-requires-ssl", !serverRequiresSSL);
184                     resourceVerifier.verifyAttribute("support-ssl", !supportSSL);
185                 });
186     }
187 
188     @Test
189     void updateTcp() throws Exception {
190         page.getTabs().select(Ids.build(IIOP_PREFIX, GROUP, "tcp", Ids.TAB));
191         form = page.getTcpForm();
192         crud.update(SUBSYSTEM_ADDRESS, form, HIGH_WATER_MARK, 11);
193     }
194 
195     @Test
196     void updateProperties() throws Exception {
197         page.getTabs().select(Ids.build(IIOP_OPENJDK, PROPERTIES, Ids.TAB));
198         form = page.getPropertiesForm();
199         crud.update(SUBSYSTEM_ADDRESS, form, PROPERTIES, Random.properties());
200     }
201 
202     @Test
203     void resetProperties() throws Exception {
204         page.getTabs().select(Ids.build(IIOP_OPENJDK, PROPERTIES, Ids.TAB));
205         form = page.getPropertiesForm();
206         crud.reset(SUBSYSTEM_ADDRESS, form,
207                 resourceVerifier -> resourceVerifier.verifyAttributeIsUndefined(PROPERTIES));
208     }
209 
210     @Test
211     void cancelEditTcp() {
212         page.getTabs().select(Ids.build(IIOP_PREFIX, GROUP, "tcp", Ids.TAB));
213         form = page.getTcpForm();
214         form.edit();
215         form.cancel();
216         assertTrue(console.verifyNoError());
217     }
218 
219     @Test
220     void cancelEditProperties() {
221         page.getTabs().select(Ids.build(IIOP_OPENJDK, PROPERTIES, Ids.TAB));
222         form = page.getPropertiesForm();
223         form.edit();
224         form.cancel();
225         assertTrue(console.verifyNoError());
226     }
227 }