| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | package file
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-02 16:56:16 +01:00
										 |  |  | import (
 | 
					
						
							|  |  |  | 	"strings"
 | 
					
						
							|  |  |  | 	"testing"
 | 
					
						
							|  |  |  | )
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-18 19:50:38 +01:00
										 |  |  | func BenchmarkFileParseInsert(b *testing.B) {
 | 
					
						
							| 
									
										
										
										
											2025-09-10 23:08:27 +03:00
										 |  |  | 	for b.Loop() {
 | 
					
						
							| 
									
										
										
										
											2017-06-08 18:43:11 +01:00
										 |  |  | 		Parse(strings.NewReader(dbMiekENTNL), testzone, "stdin", 0)
 | 
					
						
							| 
									
										
										
										
											2016-04-02 16:56:16 +01:00
										 |  |  | 	}
 | 
					
						
							|  |  |  | }
 | 
					
						
							| 
									
										
										
										
											2017-06-13 12:51:52 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | func TestParseNoSOA(t *testing.T) {
 | 
					
						
							|  |  |  | 	_, err := Parse(strings.NewReader(dbNoSOA), "example.org.", "stdin", 0)
 | 
					
						
							|  |  |  | 	if err == nil {
 | 
					
						
							| 
									
										
										
										
											2018-05-07 22:47:25 +01:00
										 |  |  | 		t.Fatalf("Zone %q should have failed to load", "example.org.")
 | 
					
						
							| 
									
										
										
										
											2017-06-13 12:51:52 -07:00
										 |  |  | 	}
 | 
					
						
							|  |  |  | 	if !strings.Contains(err.Error(), "no SOA record") {
 | 
					
						
							| 
									
										
										
										
											2018-05-07 22:47:25 +01:00
										 |  |  | 		t.Fatalf("Zone %q should have failed to load with no soa error: %s", "example.org.", err)
 | 
					
						
							| 
									
										
										
										
											2017-06-13 12:51:52 -07:00
										 |  |  | 	}
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const dbNoSOA = `
 | 
					
						
							|  |  |  | $TTL         1M
 | 
					
						
							|  |  |  | $ORIGIN      example.org.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | www          IN  A      192.168.0.14
 | 
					
						
							|  |  |  | mail         IN  A      192.168.0.15
 | 
					
						
							|  |  |  | imap         IN  CNAME  mail
 | 
					
						
							|  |  |  | `
 | 
					
						
							| 
									
										
										
										
											2024-07-01 10:27:50 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | func TestParseSyntaxError(t *testing.T) {
 | 
					
						
							|  |  |  | 	_, err := Parse(strings.NewReader(dbSyntaxError), "example.org.", "stdin", 0)
 | 
					
						
							|  |  |  | 	if err == nil {
 | 
					
						
							|  |  |  | 		t.Fatalf("Zone %q should have failed to load", "example.org.")
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 	if !strings.Contains(err.Error(), "\"invalid\"") {
 | 
					
						
							|  |  |  | 		t.Fatalf("Zone %q should have failed with syntax error: %s", "example.org.", err)
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const dbSyntaxError = `
 | 
					
						
							|  |  |  | $TTL         1M
 | 
					
						
							|  |  |  | $ORIGIN      example.org.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @            IN  SOA    ns1.example.com. admin.example.com.  (
 | 
					
						
							|  |  |  |                                2005011437 ; Serial
 | 
					
						
							|  |  |  |                                1200       ; Refresh
 | 
					
						
							|  |  |  |                                144        ; Retry
 | 
					
						
							|  |  |  |                                1814400    ; Expire
 | 
					
						
							|  |  |  |                                2h )       ; Minimum
 | 
					
						
							|  |  |  | @            IN  NS     ns1.example.com.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # invalid comment
 | 
					
						
							|  |  |  | www          IN  A      192.168.0.14
 | 
					
						
							|  |  |  | mail         IN  A      192.168.0.15
 | 
					
						
							|  |  |  | imap         IN  CNAME  mail
 | 
					
						
							|  |  |  | `
 |