@@ -2,6 +2,8 @@ package gojenkins
22
33import (
44 "context"
5+ "net/http"
6+ "net/http/httptest"
57 "os"
68 "testing"
79 "time"
@@ -383,3 +385,80 @@ func getFileAsString(path string) string {
383385
384386 return string (buf )
385387}
388+
389+
390+ func TestDeleteView (t * testing.T ) {
391+ if _ , ok := os .LookupEnv (integration_test ); ! ok {
392+ return
393+ }
394+ tests := []struct {
395+ name string
396+ statusCode int
397+ hasError bool
398+ expectError bool
399+ errorMessage string
400+ }{
401+ {
402+ name : "success - 200" ,
403+ statusCode : 200 ,
404+ expectError : false ,
405+ },
406+ {
407+ name : "failure - 404" ,
408+ statusCode : 404 ,
409+ expectError : true ,
410+ errorMessage : "404" ,
411+ },
412+ {
413+ name : "failure - network error" ,
414+ hasError : true ,
415+ expectError : true ,
416+ errorMessage : "network error" ,
417+ },
418+ }
419+
420+ for _ , tt := range tests {
421+ t .Run (tt .name , func (t * testing.T ) {
422+ // create mock HTTP server
423+ var ts * httptest.Server
424+ if tt .hasError {
425+ // Simulated network error: server not started, or error returned
426+ ts = httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
427+ }))
428+ ts .Close () // close server
429+ } else {
430+ ts = httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
431+ if r .URL .Path != "/view/test-view/doDelete" {
432+ t .Errorf ("expected path /view/test-view/doDelete, got %s" , r .URL .Path )
433+ w .WriteHeader (500 )
434+ return
435+ }
436+ if r .Method != "POST" {
437+ t .Errorf ("expected POST, got %s" , r .Method )
438+ w .WriteHeader (500 )
439+ return
440+ }
441+ w .WriteHeader (tt .statusCode )
442+ }))
443+ defer ts .Close ()
444+ }
445+
446+ // Create a Jenkins instance using the URL of the mock server
447+ ctx := context .Background ()
448+ err := jenkins .DeleteView (ctx , "test-view" )
449+
450+ if tt .expectError {
451+ if err == nil {
452+ t .Fatal ("expected error, got nil" )
453+ }
454+ if tt .errorMessage != "" && err .Error () != tt .errorMessage {
455+ t .Errorf ("expected error %q, got %q" , tt .errorMessage , err .Error ())
456+ }
457+ } else {
458+ if err != nil {
459+ t .Fatalf ("unexpected error: %v" , err )
460+ }
461+ }
462+ })
463+ }
464+ }
0 commit comments