51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
package errors
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/letsencrypt/boulder/identifier"
 | 
						|
	"github.com/letsencrypt/boulder/test"
 | 
						|
)
 | 
						|
 | 
						|
// TestWithSubErrors tests that a boulder error can be created by adding
 | 
						|
// suberrors to an existing top level boulder error
 | 
						|
func TestWithSubErrors(t *testing.T) {
 | 
						|
	topErr := &BoulderError{
 | 
						|
		Type:   RateLimit,
 | 
						|
		Detail: "don't you think you have enough certificates already?",
 | 
						|
	}
 | 
						|
 | 
						|
	subErrs := []SubBoulderError{
 | 
						|
		{
 | 
						|
			Identifier: identifier.DNSIdentifier("example.com"),
 | 
						|
			BoulderError: &BoulderError{
 | 
						|
				Type:   RateLimit,
 | 
						|
				Detail: "everyone uses this example domain",
 | 
						|
			},
 | 
						|
		},
 | 
						|
		{
 | 
						|
			Identifier: identifier.DNSIdentifier("what about example.com"),
 | 
						|
			BoulderError: &BoulderError{
 | 
						|
				Type:   RateLimit,
 | 
						|
				Detail: "try a real identifier value next time",
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	outResult := topErr.WithSubErrors(subErrs)
 | 
						|
	// The outResult should be a new, distinct error
 | 
						|
	test.AssertNotEquals(t, topErr, outResult)
 | 
						|
	// The outResult error should have the correct sub errors
 | 
						|
	test.AssertDeepEquals(t, outResult.SubErrors, subErrs)
 | 
						|
	// Adding another suberr shouldn't squash the original sub errors
 | 
						|
	anotherSubErr := SubBoulderError{
 | 
						|
		Identifier: identifier.DNSIdentifier("another ident"),
 | 
						|
		BoulderError: &BoulderError{
 | 
						|
			Type:   RateLimit,
 | 
						|
			Detail: "another rate limit err",
 | 
						|
		},
 | 
						|
	}
 | 
						|
	outResult = outResult.WithSubErrors([]SubBoulderError{anotherSubErr})
 | 
						|
	test.AssertDeepEquals(t, outResult.SubErrors, append(subErrs, anotherSubErr))
 | 
						|
}
 |