• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hazendaz / httpunit / 755

14 Feb 2026 07:14PM UTC coverage: 80.526%. Remained the same
755

push

github

hazendaz
[ci] Fix badge

3213 of 4105 branches covered (78.27%)

Branch coverage included in aggregate %.

8245 of 10124 relevant lines covered (81.44%)

0.81 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

81.93
/src/main/java/com/meterware/httpunit/FixedURLWebRequestSource.java
1
/*
2
 * SPDX-License-Identifier: MIT
3
 * See LICENSE file for details.
4
 *
5
 * Copyright 2000-2026 Russell Gold
6
 * Copyright 2021-2000 hazendaz
7
 */
8
package com.meterware.httpunit;
9

10
import com.meterware.httpunit.protocol.ParameterProcessor;
11
import com.meterware.httpunit.protocol.UploadFileSpec;
12

13
import java.io.IOException;
14
import java.net.URL;
15
import java.util.ArrayList;
16
import java.util.Arrays;
17
import java.util.HashMap;
18
import java.util.Iterator;
19
import java.util.List;
20
import java.util.Map;
21

22
import org.w3c.dom.Node;
23

24
/**
25
 * An implementation of web request source whose URL does not change under user action.
26
 **/
27
abstract class FixedURLWebRequestSource extends WebRequestSource {
28

29
    /** The Constant NO_VALUES. */
30
    private static final String[] NO_VALUES = {};
1✔
31

32
    /** The preset parameter map. */
33
    private Map _presetParameterMap;
34

35
    /** The preset parameter list. */
36
    private ArrayList _presetParameterList;
37

38
    /** The character set. */
39
    private String _characterSet;
40

41
    /**
42
     * Instantiates a new fixed URL web request source.
43
     *
44
     * @param response
45
     *            the response
46
     * @param node
47
     *            the node
48
     * @param baseURL
49
     *            the base URL
50
     * @param attribute
51
     *            the attribute
52
     * @param frame
53
     *            the frame
54
     * @param defaultTarget
55
     *            the default target
56
     * @param characterSet
57
     *            the character set
58
     */
59
    public FixedURLWebRequestSource(WebResponse response, Node node, URL baseURL, String attribute, FrameSelector frame,
60
            String defaultTarget, String characterSet) {
61
        super(response, node, baseURL, attribute, frame, defaultTarget);
1✔
62
        _characterSet = characterSet;
1✔
63
    }
1✔
64

65
    // ------------------------------------------- WebRequestSource methods
66
    // -------------------------------------------------
67

68
    /**
69
     * Creates and returns a web request which will simulate clicking on this link.
70
     **/
71
    @Override
72
    public WebRequest getRequest() {
73
        return new GetMethodWebRequest(this);
1✔
74
    }
75

76
    /**
77
     * Returns an array containing the names of any parameters defined as part of this link's URL.
78
     **/
79
    @Override
80
    public String[] getParameterNames() {
81
        ArrayList parameterNames = new ArrayList(getPresetParameterMap().keySet());
×
82
        return (String[]) parameterNames.toArray(new String[parameterNames.size()]);
×
83
    }
84

85
    /**
86
     * Returns the multiple default values of the named parameter.
87
     **/
88
    @Override
89
    public String[] getParameterValues(String name) {
90
        final String[] values = (String[]) getPresetParameterMap().get(name);
1✔
91
        return values == null ? NO_VALUES : values;
1✔
92
    }
93

94
    @Override
95
    protected void addPresetParameter(String name, String value) {
96
        _presetParameterMap.put(name, HttpUnitUtils.withNewValue((String[]) _presetParameterMap.get(name), value));
1✔
97
        _presetParameterList.add(new PresetParameter(name, value));
1✔
98
    }
1✔
99

100
    @Override
101
    protected String getEmptyParameterValue() {
102
        return "";
1✔
103
    }
104

105
    @Override
106
    protected void setDestination(String destination) {
107
        super.setDestination(destination);
1✔
108
        _presetParameterList = null;
1✔
109
        _presetParameterMap = null;
1✔
110
    }
1✔
111

112
    // ------------------------------------------- ParameterHolder methods
113
    // --------------------------------------------------
114

115
    /**
116
     * Specifies the position at which an image button (if any) was clicked.
117
     **/
118
    @Override
119
    void selectImageButtonPosition(SubmitButton imageButton, int x, int y) {
120
        throw new IllegalNonFormParametersRequest();
×
121
    }
122

123
    /**
124
     * Iterates through the fixed, predefined parameters in this holder, recording them in the supplied parameter
125
     * processor.\ These parameters always go on the URL, no matter what encoding method is used.
126
     **/
127

128
    @Override
129
    void recordPredefinedParameters(ParameterProcessor processor) throws IOException {
130
    }
1✔
131

132
    /**
133
     * Iterates through the parameters in this holder, recording them in the supplied parameter processor.
134
     **/
135
    @Override
136
    public void recordParameters(ParameterProcessor processor) throws IOException {
137
        Iterator i = getPresetParameterList().iterator();
1✔
138
        while (i.hasNext()) {
1✔
139
            PresetParameter o = (PresetParameter) i.next();
1✔
140
            processor.addParameter(o.getName(), o.getValue(), getCharacterSet());
1✔
141
        }
1✔
142
    }
1✔
143

144
    /**
145
     * Removes a parameter name from this collection.
146
     **/
147
    @Override
148
    void removeParameter(String name) {
149
        throw new IllegalNonFormParametersRequest();
×
150
    }
151

152
    /**
153
     * Sets the value of a parameter in a web request.
154
     **/
155
    @Override
156
    void setParameter(String name, String value) {
157
        setParameter(name, new String[] { value });
×
158
    }
×
159

160
    /**
161
     * Sets the multiple values of a parameter in a web request.
162
     **/
163
    @Override
164
    void setParameter(String name, String[] values) {
165
        if (values == null) {
1!
166
            throw new IllegalArgumentException("May not supply a null argument array to setParameter()");
×
167
        }
168
        if (!getPresetParameterMap().containsKey(name) || !equals(getParameterValues(name), values)) {
1!
169
            throw new IllegalNonFormParametersRequest();
1✔
170
        }
171
    }
1✔
172

173
    @Override
174
    String getCharacterSet() {
175
        return _characterSet;
1✔
176
    }
177

178
    /**
179
     * Equals.
180
     *
181
     * @param left
182
     *            the left
183
     * @param right
184
     *            the right
185
     *
186
     * @return true, if successful
187
     */
188
    private boolean equals(String[] left, String[] right) {
189
        if (left.length != right.length) {
1✔
190
            return false;
1✔
191
        }
192
        List rightValues = Arrays.asList(right);
1✔
193
        for (String element : left) {
1✔
194
            if (!rightValues.contains(element)) {
1!
195
                return false;
×
196
            }
197
        }
198
        return true;
1✔
199
    }
200

201
    /**
202
     * Sets the multiple values of a file upload parameter in a web request.
203
     **/
204
    @Override
205
    void setParameter(String name, UploadFileSpec[] files) {
206
        throw new IllegalNonFormParametersRequest();
×
207
    }
208

209
    /**
210
     * Returns true if the specified parameter is a file field.
211
     **/
212
    @Override
213
    boolean isFileParameter(String name) {
214
        return false;
×
215
    }
216

217
    @Override
218
    boolean isSubmitAsMime() {
219
        return false;
×
220
    }
221

222
    /**
223
     * Gets the preset parameter map.
224
     *
225
     * @return the preset parameter map
226
     */
227
    private Map getPresetParameterMap() {
228
        if (_presetParameterMap == null) {
1✔
229
            loadPresetParameters();
1✔
230
        }
231
        return _presetParameterMap;
1✔
232
    }
233

234
    /**
235
     * Gets the preset parameter list.
236
     *
237
     * @return the preset parameter list
238
     */
239
    private ArrayList getPresetParameterList() {
240
        if (_presetParameterList == null) {
1✔
241
            loadPresetParameters();
1✔
242
        }
243
        return _presetParameterList;
1✔
244
    }
245

246
    /**
247
     * Load preset parameters.
248
     */
249
    private void loadPresetParameters() {
250
        _presetParameterMap = new HashMap<>();
1✔
251
        _presetParameterList = new ArrayList<>();
1✔
252
        loadDestinationParameters();
1✔
253
    }
1✔
254

255
}
256

257
class PresetParameter {
258
    private String _name;
259
    private String _value;
260

261
    public PresetParameter(String name, String value) {
1✔
262
        _name = name;
1✔
263
        _value = value;
1✔
264
    }
1✔
265

266
    public String getName() {
267
        return _name;
1✔
268
    }
269

270
    public String getValue() {
271
        return _value;
1✔
272
    }
273
}
274

275
class IllegalNonFormParametersRequest extends IllegalRequestParameterException {
276

277
    private static final long serialVersionUID = 1L;
278

279
    public IllegalNonFormParametersRequest() {
1✔
280
    }
1✔
281

282
    @Override
283
    public String getMessage() {
284
        return "May not modify parameters for a request not derived from a form with parameter checking enabled.";
×
285
    }
286

287
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc