/*
* SoapUI, Copyright (C) 2004-2016 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/
package com.eviware.soapui.impl.wsdl.panels.testcase.actions;
import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase;
import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep;
import com.eviware.soapui.model.testsuite.TestStep;
import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.components.SimpleForm;
import com.jgoodies.forms.factories.ButtonBarFactory;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
/**
* Set the credentials for all requests in a testcase
*
* @author Ole.Matzura
*/
public class SetCredentialsAction extends AbstractAction {
private final WsdlTestCase testCase;
private JDialog dialog;
private SimpleForm form;
private static final String DOMAIN = "Domain";
private static final String PASSWORD = "Password";
private static final String USERNAME = "Username";
public SetCredentialsAction(WsdlTestCase testCase) {
this.testCase = testCase;
putValue(Action.SMALL_ICON, UISupport.createImageIcon("/set_credentials.png"));
putValue(Action.SHORT_DESCRIPTION, "Sets the credentials for all requests in this testcase");
}
public void actionPerformed(ActionEvent e) {
if (dialog == null) {
buildDialog();
}
UISupport.showDialog(dialog);
}
private void buildDialog() {
dialog = new JDialog(UISupport.getMainFrame(), "Set TestCase Credentials");
form = new SimpleForm();
form.appendTextField(USERNAME, "Username to use for authentication");
form.appendPasswordField(PASSWORD, "Password to use for authentication");
form.appendTextField(DOMAIN, "Domain to specify (for NTLM)");
form.getPanel().setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0));
JPanel panel = new JPanel(new BorderLayout());
panel.add(form.getPanel(), BorderLayout.CENTER);
JPanel buttonBar = ButtonBarFactory.buildOKCancelBar(new JButton(new OkAction()), new JButton(
new CancelAction()));
panel.add(buttonBar, BorderLayout.SOUTH);
panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
panel.setPreferredSize(new Dimension(270, (int) panel.getPreferredSize().getHeight()));
dialog.getContentPane().add(panel);
dialog.pack();
}
private class OkAction extends AbstractAction {
public OkAction() {
super("OK");
}
public void actionPerformed(ActionEvent e) {
for (int c = 0; c < testCase.getTestStepCount(); c++) {
TestStep step = testCase.getTestStepAt(c);
if (step instanceof WsdlTestRequestStep) {
WsdlTestRequestStep requestStep = (WsdlTestRequestStep) step;
requestStep.getTestRequest().setUsername(form.getComponentValue(USERNAME));
requestStep.getTestRequest().setPassword(form.getComponentValue(PASSWORD));
requestStep.getTestRequest().setDomain(form.getComponentValue(DOMAIN));
}
}
dialog.setVisible(false);
}
}
private class CancelAction extends AbstractAction {
public CancelAction() {
super("Cancel");
}
public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);
}
}
}