| 
									
										
										
										
											2016-10-17 18:37:56 +01:00
										 |  |  | package auto
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import (
 | 
					
						
							|  |  |  | 	"io/ioutil"
 | 
					
						
							|  |  |  | 	"log"
 | 
					
						
							|  |  |  | 	"os"
 | 
					
						
							|  |  |  | 	"path"
 | 
					
						
							|  |  |  | 	"regexp"
 | 
					
						
							|  |  |  | 	"testing"
 | 
					
						
							|  |  |  | )
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestWatcher(t *testing.T) {
 | 
					
						
							|  |  |  | 	log.SetOutput(ioutil.Discard)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	tempdir, err := createFiles()
 | 
					
						
							|  |  |  | 	if err != nil {
 | 
					
						
							|  |  |  | 		if tempdir != "" {
 | 
					
						
							|  |  |  | 			os.RemoveAll(tempdir)
 | 
					
						
							|  |  |  | 		}
 | 
					
						
							|  |  |  | 		t.Fatal(err)
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 	defer os.RemoveAll(tempdir)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	ldr := loader{
 | 
					
						
							|  |  |  | 		directory: tempdir,
 | 
					
						
							|  |  |  | 		re:        regexp.MustCompile(`db\.(.*)`),
 | 
					
						
							|  |  |  | 		template:  `${1}`,
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-26 10:01:52 +01:00
										 |  |  | 	a := Auto{
 | 
					
						
							|  |  |  | 		loader: ldr,
 | 
					
						
							|  |  |  | 		Zones:  &Zones{},
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							| 
									
										
										
										
											2016-10-17 18:37:56 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-26 10:01:52 +01:00
										 |  |  | 	a.Walk()
 | 
					
						
							| 
									
										
										
										
											2016-10-17 18:37:56 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// example.org and example.com should exist
 | 
					
						
							| 
									
										
										
										
											2016-10-26 10:01:52 +01:00
										 |  |  | 	if x := len(a.Zones.Z["example.org."].All()); x != 4 {
 | 
					
						
							| 
									
										
										
										
											2016-11-07 08:00:30 +00:00
										 |  |  | 		t.Fatalf("Expected 4 RRs, got %d", x)
 | 
					
						
							| 
									
										
										
										
											2016-10-17 18:37:56 +01:00
										 |  |  | 	}
 | 
					
						
							| 
									
										
										
										
											2016-10-26 10:01:52 +01:00
										 |  |  | 	if x := len(a.Zones.Z["example.com."].All()); x != 4 {
 | 
					
						
							| 
									
										
										
										
											2016-11-07 08:00:30 +00:00
										 |  |  | 		t.Fatalf("Expected 4 RRs, got %d", x)
 | 
					
						
							| 
									
										
										
										
											2016-10-17 18:37:56 +01:00
										 |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Now remove one file, rescan and see if it's gone.
 | 
					
						
							|  |  |  | 	if err := os.Remove(path.Join(tempdir, "db.example.com")); err != nil {
 | 
					
						
							|  |  |  | 		t.Fatal(err)
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-26 10:01:52 +01:00
										 |  |  | 	a.Walk()
 | 
					
						
							| 
									
										
										
										
											2016-11-07 08:00:30 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	if _, ok := a.Zones.Z["example.com."]; ok {
 | 
					
						
							|  |  |  | 		t.Errorf("Expected %q to be gone.", "example.com.")
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 	if _, ok := a.Zones.Z["example.org."]; !ok {
 | 
					
						
							|  |  |  | 		t.Errorf("Expected %q to still be there.", "example.org.")
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							| 
									
										
										
										
											2016-10-17 18:37:56 +01:00
										 |  |  | }
 |