github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/pvl/dns_stub.go (about)

     1  // Copyright 2016 Keybase, Inc. All rights reserved. Use of
     2  // this source code is governed by the included BSD license.
     3  
     4  package pvl
     5  
     6  import (
     7  	"fmt"
     8  )
     9  
    10  type stubDNSEngine struct {
    11  	canned cannedDNS
    12  	ok     bool
    13  }
    14  
    15  // Map from domain to list of records.
    16  // A string "ERROR" will cause an error to be returned.
    17  type cannedDNS map[string]([]string)
    18  
    19  func newStubDNSEngine(canned cannedDNS) *stubDNSEngine {
    20  	return &stubDNSEngine{
    21  		canned: canned,
    22  		ok:     true,
    23  	}
    24  }
    25  
    26  func (e *stubDNSEngine) LookupTXT(domain string) ([]string, error) {
    27  	defaultres := []string{}
    28  	txts, ok := e.canned[domain]
    29  	if !ok {
    30  		e.ok = false
    31  		return defaultres, nil
    32  	}
    33  	if len(txts) == 1 && txts[0] == "ERROR" {
    34  		return defaultres, fmt.Errorf("fake dns error")
    35  	}
    36  	return txts, nil
    37  }
    38  
    39  func (e *stubDNSEngine) IsOk() bool {
    40  	return e.ok
    41  }