114 lines
4.3 KiB
Go
114 lines
4.3 KiB
Go
// Copyright 2015 ISRG. All rights reserved
|
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
package core
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/url"
|
|
"testing"
|
|
|
|
"github.com/letsencrypt/boulder/test"
|
|
)
|
|
|
|
func TestRegistrationUpdate(t *testing.T) {
|
|
oldURL, _ := url.Parse("http://old.invalid")
|
|
newURL, _ := url.Parse("http://new.invalid")
|
|
|
|
reg := Registration{
|
|
ID: 1,
|
|
Contact: []AcmeURL{AcmeURL(*oldURL)},
|
|
Agreement: "",
|
|
}
|
|
update := Registration{
|
|
Contact: []AcmeURL{AcmeURL(*newURL)},
|
|
Agreement: "totally!",
|
|
}
|
|
|
|
reg.MergeUpdate(update)
|
|
test.Assert(t, len(reg.Contact) == 1 && reg.Contact[0] == update.Contact[0], "Contact was not updated %v != %v")
|
|
test.Assert(t, reg.Agreement == update.Agreement, "Agreement was not updated")
|
|
}
|
|
|
|
func TestSanityCheck(t *testing.T) {
|
|
tls := true
|
|
chall := Challenge{Type: ChallengeTypeSimpleHTTP, Status: StatusValid}
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.Status = StatusPending
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.R = "bad"
|
|
chall.S = "bad"
|
|
chall.Nonce = "bad"
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall = Challenge{Type: ChallengeTypeSimpleHTTP, Path: "bad", Status: StatusPending}
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.Token = ""
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.Token = "notlongenough"
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.Token = "evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ+PCt92wr+o!"
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.Token = "KQqLsiS5j0CONR_eUXTUSUDNVaHODtc-0pD6ACif7U4"
|
|
chall.Path = ""
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.TLS = &tls
|
|
test.Assert(t, chall.IsSane(false), "IsSane should be true")
|
|
|
|
test.Assert(t, !chall.IsSane(true), "IsSane should be false")
|
|
chall.Path = "../.."
|
|
test.Assert(t, !chall.IsSane(true), "IsSane should be false")
|
|
chall.Path = "/asd"
|
|
test.Assert(t, !chall.IsSane(true), "IsSane should be false")
|
|
chall.Path = "bad//test"
|
|
test.Assert(t, !chall.IsSane(true), "IsSane should be false")
|
|
chall.Path = "bad/./test"
|
|
test.Assert(t, !chall.IsSane(true), "IsSane should be false")
|
|
chall.Path = "good"
|
|
test.Assert(t, chall.IsSane(true), "IsSane should be true")
|
|
chall.Path = "good/test"
|
|
test.Assert(t, chall.IsSane(true), "IsSane should be true")
|
|
|
|
chall = Challenge{Type: ChallengeTypeDVSNI, Status: StatusPending}
|
|
chall.Path = "bad"
|
|
chall.Token = "bad"
|
|
chall.TLS = &tls
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall = Challenge{Type: ChallengeTypeDVSNI, Status: StatusPending}
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.Nonce = "wutwut"
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.Nonce = "!2345678901234567890123456789012"
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.Nonce = "12345678901234567890123456789012"
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.R = "notlongenough"
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.R = "evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ+PCt92wr+o!"
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
chall.R = "KQqLsiS5j0CONR_eUXTUSUDNVaHODtc-0pD6ACif7U4"
|
|
test.Assert(t, chall.IsSane(false), "IsSane should be true")
|
|
chall.S = "anything"
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
test.Assert(t, !chall.IsSane(true), "IsSane should be false")
|
|
chall.S = "evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ+PCt92wr+o!"
|
|
test.Assert(t, !chall.IsSane(true), "IsSane should be false")
|
|
chall.S = "KQqLsiS5j0CONR_eUXTUSUDNVaHODtc-0pD6ACif7U4"
|
|
test.Assert(t, chall.IsSane(true), "IsSane should be true")
|
|
|
|
chall = Challenge{Type: "bogus", Status: StatusPending}
|
|
test.Assert(t, !chall.IsSane(false), "IsSane should be false")
|
|
test.Assert(t, !chall.IsSane(true), "IsSane should be false")
|
|
}
|
|
|
|
func TestJSONBufferUnmarshal(t *testing.T) {
|
|
testStruct := struct {
|
|
Buffer JSONBuffer
|
|
}{}
|
|
|
|
notValidBase64 := []byte(`{"Buffer":"!!!!"}`)
|
|
err := json.Unmarshal(notValidBase64, &testStruct)
|
|
test.Assert(t, err != nil, "Should have choked on invalid base64")
|
|
}
|