1package epazote 2 3import ( 4 "bytes" 5 "fmt" 6 "io/ioutil" 7 "log" 8 "os" 9 "reflect" 10 "testing" 11) 12 13// just to cover 14func TestScanReturnFunc(t *testing.T) { 15 s := new(Epazote) 16 f := s.Scan("test") 17 ft := reflect.TypeOf(f).Kind() 18 if ft != reflect.Func { 19 t.Error("Expecting func()") 20 } 21} 22 23func TestScanSearchNonexistentRoot(t *testing.T) { 24 log.SetOutput(ioutil.Discard) 25 s := new(Epazote) 26 err := s.search("nonexistent", false) 27 if err == nil { 28 t.Error("Expecting: lstat nonexistent: no such file or directory") 29 } 30} 31 32func TestScanSearch(t *testing.T) { 33 s := new(Epazote) 34 err := s.search("test", false) 35 if err != nil { 36 t.Error(err) 37 } 38} 39 40func TestScanParseScanErr(t *testing.T) { 41 dir := "./" 42 prefix := "test-scan1-" 43 44 d, err := ioutil.TempDir(dir, prefix) 45 46 if err != nil { 47 fmt.Println(err) 48 } 49 50 defer os.RemoveAll(d) 51 52 f := []byte(`epazote 53 - bad`) 54 55 err = ioutil.WriteFile(fmt.Sprintf("%s/epazote.yml", d), f, 0644) 56 57 s := new(Epazote) 58 err = s.search(d, false) 59 if err == nil { 60 t.Error(err) 61 } 62} 63 64func TestScanParseScanSearchOk(t *testing.T) { 65 var buf bytes.Buffer 66 log.SetOutput(&buf) 67 log.SetFlags(0) 68 dir := "./" 69 prefix := "test-scan2-" 70 71 d, err := ioutil.TempDir(dir, prefix) 72 73 if err != nil { 74 fmt.Println(err) 75 } 76 77 defer os.RemoveAll(d) 78 79 f := []byte(` 80 service 1: 81 url: http://about.epazote.io 82 expect: 83 body: "123" 84`) 85 86 err = ioutil.WriteFile(fmt.Sprintf("%s/epazote.yml", d), f, 0644) 87 88 s := &Epazote{ 89 Services: make(map[string]*Service), 90 } 91 s.debug = true 92 err = s.search(d, false) 93 if err != nil { 94 t.Error(err) 95 } 96 if buf.Len() == 0 { 97 t.Error("Expecting log.Println error") 98 } 99} 100 101func TestScanParseScanSearchBadRegex(t *testing.T) { 102 var buf bytes.Buffer 103 log.SetOutput(&buf) 104 log.SetFlags(0) 105 dir := "./" 106 prefix := "test-scan2-" 107 108 d, err := ioutil.TempDir(dir, prefix) 109 110 if err != nil { 111 fmt.Println(err) 112 } 113 114 defer os.RemoveAll(d) 115 116 f := []byte(` 117 service 1: 118 url: http://about.epazote.io 119 expect: 120 body: ?(), 121`) 122 123 err = ioutil.WriteFile(fmt.Sprintf("%s/epazote.yml", d), f, 0644) 124 125 s := new(Epazote) 126 s.search(d, false) 127 if err != nil { 128 t.Error(err) 129 } 130 131 if buf.Len() == 0 { 132 t.Error("Expecting log.Println error") 133 } 134 sk := GetScheduler() 135 expect(t, len(sk.Schedulers), 1) 136} 137 138func TestScanParseScanLast(t *testing.T) { 139 var buf bytes.Buffer 140 log.SetOutput(&buf) 141 log.SetFlags(0) 142 dir := "./" 143 prefix := "test-scan2-" 144 145 d, err := ioutil.TempDir(dir, prefix) 146 147 if err != nil { 148 fmt.Println(err) 149 } 150 151 defer os.RemoveAll(d) 152 153 f := []byte(` 154 service 1: 155 url: http://about.epazote.io 156 expect: 157 status: 402 158`) 159 160 err = ioutil.WriteFile(fmt.Sprintf("%s/epazote.yml", d), f, 0644) 161 s := make(Services) 162 s["service 1"] = &Service{ 163 Name: "service 1", 164 Expect: Expect{ 165 Status: 200, 166 IfNot: Action{ 167 Notify: "yes", 168 }, 169 }, 170 status: 3, 171 action: &Action{Cmd: "matilde"}, 172 } 173 174 ez := &Epazote{ 175 Services: s, 176 } 177 ez.search(d, false) 178 if err != nil { 179 t.Error(err) 180 } 181 182 sk := GetScheduler() 183 184 expect(t, len(sk.Schedulers), 1) 185 expect(t, 402, s["service 1"].Expect.Status) 186 expect(t, 3, s["service 1"].status) 187 expect(t, "matilde", s["service 1"].action.Cmd) 188} 189