blob: 4923af67c90c7b13a0a65fe02077a2abb216ba96 [file] [log] [blame]
/*
* 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.assertions
import java.nio.charset.StandardCharsets
import org.apache.commons.lang3.StringUtils
import org.apache.jmeter.samplers.SampleResult
import spock.lang.Specification
import spock.lang.Unroll
@Unroll
class MD5HexAssertionSpec extends Specification {
def sut = new MD5HexAssertion()
def "unset allowable hash with empty response fails"() {
when:
def result = sut.getResult(sampleResult(""))
then:
result.isFailure()
StringUtils.isNotBlank(result.getFailureMessage())
}
def "incorrect hash #allowedHex causes result failure"() {
given:
sut.setAllowedMD5Hex(allowedHex)
when:
def result = sut.getResult(sampleResult("anything"))
then:
result.isFailure()
StringUtils.isNotBlank(result.getFailureMessage())
where:
allowedHex << ["", "anything", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]
}
def "example MD5s - '#sampleData' == '#hash'"() {
given:
sut.setAllowedMD5Hex(hash)
when:
def result = sut.getResult(sampleResult(sampleData))
then:
!result.isFailure()
!result.isError()
result.getFailureMessage() == null
where:
sampleData | hash
"anything" | "f0e166dc34d14d6c228ffac576c9a43c"
"anything" | "F0e166Dc34D14d6c228ffac576c9a43c"
}
def "empty array has MD5 hash of D41D8CD98F00B204E9800998ECF8427E"() {
given:
def emptyByteArray = [] as byte[]
expect:
MD5HexAssertion.md5Hex(emptyByteArray)
.toUpperCase(Locale.ENGLISH) == "D41D8CD98F00B204E9800998ECF8427E"
}
def sampleResult(String data) {
SampleResult response = new SampleResult()
response.setResponseData(data.getBytes(StandardCharsets.UTF_8))
return response
}
}