git-lfs/vendor/github.com/ThomsonReutersEikon/go-ntlm/ntlm/message_challenge_test.go
Taylor Blau 4593d0a641 vendor: vendor dependencies in vendor/ using Glide
- script/vendor received an update in order to work with Glide
- import paths have been rewritten to work with GO15VENDOREXPERIMENT
2016-05-23 12:10:35 -06:00

66 lines
2.3 KiB
Go

//Copyright 2013 Thomson Reuters Global Resources. BSD License please see License file for more information
package ntlm
import (
"bytes"
"encoding/base64"
"encoding/hex"
"fmt"
"testing"
)
func TestDecodeChallenge(t *testing.T) {
challengeMessage := "TlRMTVNTUAACAAAAAAAAADgAAADzgpjiuaopAbx9ejQAAAAAAAAAAKIAogA4AAAABQLODgAAAA8CAA4AUgBFAFUAVABFAFIAUwABABwAVQBLAEIAUAAtAEMAQgBUAFIATQBGAEUAMAA2AAQAFgBSAGUAdQB0AGUAcgBzAC4AbgBlAHQAAwA0AHUAawBiAHAALQBjAGIAdAByAG0AZgBlADAANgAuAFIAZQB1AHQAZQByAHMALgBuAGUAdAAFABYAUgBlAHUAdABlAHIAcwAuAG4AZQB0AAAAAAA="
challengeData, err := base64.StdEncoding.DecodeString(challengeMessage)
if err != nil {
t.Error("Could not base64 decode message data")
}
challenge, err := ParseChallengeMessage(challengeData)
if err != nil || challenge == nil {
t.Error("Failed to parse challenge message " + err.Error())
}
if challenge.TargetName.Len != 0 || challenge.TargetName.MaxLen != 0 || challenge.TargetName.Offset != 56 {
values := fmt.Sprintf("TargetName Len:%v MaxLen:%v Offset:%v", challenge.TargetName.Len, challenge.TargetName.MaxLen, challenge.TargetName.Offset)
t.Error("Failed to parse Target Name in challenge: " + values)
}
if challenge.NegotiateFlags != uint32(3801645811) {
t.Errorf("Challenge negotiate flags not correct should be %v got %d", uint32(3801645811), challenge.NegotiateFlags)
}
serverChallenge, err := hex.DecodeString("B9AA2901BC7D7A34")
if !bytes.Equal(challenge.ServerChallenge, serverChallenge) {
hex := hex.EncodeToString(challenge.ServerChallenge)
t.Error("Server challenge is not correct '" + hex + "'")
}
if challenge.Version.ProductMajorVersion != 5 || challenge.Version.ProductMinorVersion != 2 || challenge.Version.ProductBuild != 3790 || challenge.Version.NTLMRevisionCurrent != 15 {
t.Error("Version information is not correct: '" + challenge.Version.String() + "'")
}
if len(challenge.Payload) != int(challenge.TargetInfoPayloadStruct.Len) {
t.Error("Payload length is not long enough")
}
challenge.String()
outBytes := challenge.Bytes()
if len(outBytes) > 0 {
reparsed, err := ParseChallengeMessage(outBytes)
if err != nil {
t.Error("Could not re-parse challenge message")
}
if reparsed.String() != challenge.String() {
t.Error("Reparsed message is not the same")
}
} else {
t.Error("Invalid challenge messsage bytes")
}
}