You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by fs...@apache.org on 2017/11/25 16:55:45 UTC
svn commit: r1816322 - in
/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/util:
HTTPUtilsSpec.groovy TestHTTPUtils.java
Author: fschumacher
Date: Sat Nov 25 16:55:45 2017
New Revision: 1816322
URL: http://svn.apache.org/viewvc?rev=1816322&view=rev
Log:
Convert unit tests fpr HTTPUtils to use spock framework.
Part of pr #332 from github.
Contributed by Graham Russell
Added:
jmeter/trunk/test/src/org/apache/jmeter/protocol/http/util/HTTPUtilsSpec.groovy (with props)
Removed:
jmeter/trunk/test/src/org/apache/jmeter/protocol/http/util/TestHTTPUtils.java
Added: jmeter/trunk/test/src/org/apache/jmeter/protocol/http/util/HTTPUtilsSpec.groovy
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/util/HTTPUtilsSpec.groovy?rev=1816322&view=auto
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/protocol/http/util/HTTPUtilsSpec.groovy (added)
+++ jmeter/trunk/test/src/org/apache/jmeter/protocol/http/util/HTTPUtilsSpec.groovy Sat Nov 25 16:55:45 2017
@@ -0,0 +1,137 @@
+/*
+ * 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.jmeter.protocol.http.util
+
+import spock.lang.Specification
+import spock.lang.Unroll
+
+@Unroll
+class HTTPUtilsSpec extends Specification {
+
+ def "getEncoding returns #expectedEncoding from #contentType"() {
+ expect:
+ ConversionUtils.getEncodingFromContentType(contentType) == expectedEncoding
+ where:
+ contentType | expectedEncoding
+ "charset=utf8" | "utf8"
+ "charset=\"utf8\"" | "utf8"
+ "text/plain ;charset=utf8" | "utf8"
+ "text/html ;charset=utf8;charset=def" | "utf8"
+ "xyx" | null
+ "charset=" | null
+ ";charset=;" | null
+ ";charset=no-such-charset;" | null
+ }
+
+ def "makeRelativeURL works with a trailing file"() {
+ given:
+ URL baseURL = new URL("http://192.168.0.1/a/b/c")
+ when:
+ def relativeURL = ConversionUtils.makeRelativeURL(baseURL, path)
+ then:
+ relativeURL == new URL(expectedURL)
+ where:
+ path | expectedURL
+ "d" | "http://192.168.0.1/a/b/d"
+ "../d" | "http://192.168.0.1/a/d"
+ "../../d" | "http://192.168.0.1/d"
+ "../../../d" | "http://192.168.0.1/d"
+ "../../../../d" | "http://192.168.0.1/d"
+ "/../d" | "http://192.168.0.1/../d"
+ "./d" | "http://192.168.0.1/a/b/d"
+ }
+
+ def "makeRelativeURL works with a trailing directory"() {
+ given:
+ URL baseURL = new URL("http://192.168.0.1/a/b/c/")
+ when:
+ def relativeURL = ConversionUtils.makeRelativeURL(baseURL, path)
+ then:
+ relativeURL == new URL(expectedURL)
+ where:
+ path | expectedURL
+ "d" | "http://192.168.0.1/a/b/c/d"
+ "../d" | "http://192.168.0.1/a/b/d"
+ "../../d" | "http://192.168.0.1/a/d"
+ "../../../d" | "http://192.168.0.1/d"
+ "../../../../d" | "http://192.168.0.1/d"
+ "/../d" | "http://192.168.0.1/../d"
+ "./d" | "http://192.168.0.1/a/b/c/d"
+ }
+
+ // Test that location urls with a protocol are passed unchanged
+ def "makeRelativeURL given invalid path '#path' returns '#path'"() {
+ given:
+ URL baseURL = new URL("http://ahost.invalid/a/b/c")
+ when:
+ def relativeURL = ConversionUtils.makeRelativeURL(baseURL, path)
+ then:
+ relativeURL == new URL(path)
+ where:
+ path << ["http://host.invalid/e",
+ "https://host.invalid/e",
+ "http://host.invalid:8081/e",
+ "https://host.invalid:8081/e"]
+ }
+
+ def "removeSlashDotDot given a url or path #urlOrPath returns #expectedUrl"() {
+ expect:
+ ConversionUtils.removeSlashDotDot(urlOrPath) == expectedUrl
+ where:
+ urlOrPath | expectedUrl
+ "/path/" | "/path/"
+ "http://host/" | "http://host/"
+ "http://host/one" | "http://host/one"
+ "/one/../two" | "/two"
+ "http://host:8080/one/../two" | "http://host:8080/two"
+ "http://host:8080/one/../two/" | "http://host:8080/two/"
+ "http://usr@host:8080/one/../two/" | "http://usr@host:8080/two/"
+ "http://host:8080/one/../two/?query#anchor" | "http://host:8080/two/?query#anchor"
+ "one/two/.." | "one"
+ "../../path" | "../../path"
+ "/one/.." | "/"
+ "/one/../" | "/"
+ "/one/..?a" | "/?a"
+ "http://host/one/../one" | "http://host/one"
+ "http://host/one/two/../../one/two" | "http://host/one/two"
+ "http://host/.." | "http://host/.."
+ "http://host/../abc" | "http://host/../abc"
+ }
+
+ def testSanitizeUrl() {
+ expect:
+ ConversionUtils.sanitizeUrl(new URL(input)) == new URI(expected)
+ where:
+ input | expected
+ 'http://localhost/' | 'http://localhost/' // normal, no encoding needed
+ 'http://192.168.0.1/' | 'http://192.168.0.1/' // normal, no encoding needed
+ 'http://host/a/b/c|d' | 'http://host/a/b/c%7Cd' // pipe needs encoding
+ 'http://host:8080/%5B%5D' | 'http://host:8080/%5B%5D' // already encoded
+ 'http://host:8080/?%5B%5D' | 'http://host:8080/?%5B%5D' //already encoded
+ 'http://host:8080/?!£$*():@~;\'\"%^{}[]<>|\\#' | 'http://host:8080/?!£$*():@~;\'%22%25%5E%7B%7D[]%3C%3E%7C%5C#' // unencoded query
+ 'http://host/?!£$*():@~;\'%22%25%5E%7B%7D[]%3C%3E%7C%5C#' | 'http://host/?!£$*():@~;\'%22%25%5E%7B%7D[]%3C%3E%7C%5C#' // encoded
+ 'http://host:8080/!£$*():@~;\'"%^{}[]<>|\\#' | 'http://host:8080/!£$*():@~;\'%22%25%5E%7B%7D%5B%5D%3C%3E%7C%5C#' // unencoded path
+ 'http://host/!£$*():@~;\'%22%25%5E%7B%7D%5B%5D%3C%3E%7C%5C#' | 'http://host/!£$*():@~;\'%22%25%5E%7B%7D%5B%5D%3C%3E%7C%5C#' // encoded
+ 'http://host/?%25%5B%5D!@$%^*()#' | 'http://host/?%2525%255B%255D!@$%25%5E*()#'
+ 'http://host/?%2525%255B%255D!@$%25%5E*()#' | 'http://host/?%2525%255B%255D!@$%25%5E*()#'
+ 'http://host/%5B%5D?[]!@$%^*()#' | 'http://host/%255B%255D?[]!@$%25%5E*()#'
+ 'http://host/%255B%255D?[]!@$%25%5E*()#' | 'http://host/%255B%255D?[]!@$%25%5E*()#'
+ 'http://host/IqGo6EM1JEVZ+MSRJqUSo@qhjVMSFBTs/37/0/1' | 'http://host/IqGo6EM1JEVZ+MSRJqUSo@qhjVMSFBTs/37/0/1'
+ 'http://host/test?getItem={someID}' | 'http://host/test?getItem=%7BsomeID%7D'
+ }
+}
Propchange: jmeter/trunk/test/src/org/apache/jmeter/protocol/http/util/HTTPUtilsSpec.groovy
------------------------------------------------------------------------------
svn:eol-style = native