(t *testing.T, keysPath string, expectedDomains []string, hdr textproto.Header, body []byte)
| 102 | } |
| 103 | |
| 104 | func verifyTestMsg(t *testing.T, keysPath string, expectedDomains []string, hdr textproto.Header, body []byte) { |
| 105 | t.Helper() |
| 106 | |
| 107 | domainsMap := make(map[string]bool) |
| 108 | zones := map[string]mockdns.Zone{} |
| 109 | for _, domain := range expectedDomains { |
| 110 | dnsRecord, err := os.ReadFile(filepath.Join(keysPath, domain+".dns")) |
| 111 | if err != nil { |
| 112 | t.Fatal(err) |
| 113 | } |
| 114 | |
| 115 | t.Log("DNS record:", string(dnsRecord)) |
| 116 | zones["default._domainkey."+domain+"."] = mockdns.Zone{TXT: []string{string(dnsRecord)}} |
| 117 | domainsMap[domain] = false |
| 118 | } |
| 119 | |
| 120 | var fullBody bytes.Buffer |
| 121 | if err := textproto.WriteHeader(&fullBody, hdr); err != nil { |
| 122 | t.Fatal(err) |
| 123 | } |
| 124 | if _, err := fullBody.Write(body); err != nil { |
| 125 | t.Fatal(err) |
| 126 | } |
| 127 | |
| 128 | resolver := &mockdns.Resolver{Zones: zones} |
| 129 | verifs, err := dkim.VerifyWithOptions(bytes.NewReader(fullBody.Bytes()), &dkim.VerifyOptions{ |
| 130 | LookupTXT: func(domain string) ([]string, error) { |
| 131 | return resolver.LookupTXT(context.Background(), domain) |
| 132 | }, |
| 133 | }) |
| 134 | if err != nil { |
| 135 | t.Fatal(err) |
| 136 | } |
| 137 | for _, v := range verifs { |
| 138 | if v.Err != nil { |
| 139 | t.Errorf("Verification error for %s: %v", v.Domain, v.Err) |
| 140 | } |
| 141 | if _, ok := domainsMap[v.Domain]; !ok { |
| 142 | t.Errorf("Unexpected verification for domain %s", v.Domain) |
| 143 | } |
| 144 | |
| 145 | domainsMap[v.Domain] = true |
| 146 | } |
| 147 | for domain, ok := range domainsMap { |
| 148 | if !ok { |
| 149 | t.Errorf("Missing verification for domain %s", domain) |
| 150 | } |
| 151 | } |
| 152 | } |
| 153 | |
| 154 | func TestGenerateSignVerify(t *testing.T) { |
| 155 | // This test verifies whether a freshly generated key can be used for |
no test coverage detected