Skip to content
Snippets Groups Projects
controller_test.go 1.44 KiB
Newer Older
  • Learn to ignore specific revisions
  • package nucleus
    
    
    import (
    	"context"
    	"net/http"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"reflect"
    
    	"testing"
    )
    
    func TestRun(t *testing.T) {
    	type args struct {
    		request string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		want    interface{}
    	}{
    		{
    			name:    "liveliness indicator",
    			args:    args{request: apiEndpoint + "/livez"},
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			want:    http.StatusOK,
    
    		},
    		{
    			name:    "readyness indicator",
    			args:    args{request: apiEndpoint + "/readyz"},
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			want:    http.StatusOK,
    
    		},
    		{
    			name:    "init",
    			args:    args{request: apiEndpoint + "/api?q=init"},
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			want:    http.StatusOK,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	ctx, cancel := context.WithCancel(context.Background())
    	go func() {
    		if err := Run(ctx); err != nil{
    			t.Errorf("Run() error = %v", err)
    		}
    	}()
    	t.Run("Controller Start HTTP API", func(t *testing.T) {
    		got, err := http.Get(tests[0].args.request)
    		if err != nil {
    			t.Error(err)
    			return
    		}
    		if !reflect.DeepEqual(got.StatusCode, tests[0].want) {
    			t.Errorf("Run() got: %v, want %v", got.StatusCode, tests[0].want)
    		}
    		got, err = http.Get(tests[0].args.request)
    		if err != nil {
    			t.Error(err)
    			return
    		}
    		if !reflect.DeepEqual(got.StatusCode, tests[1].want) {
    			t.Errorf("Run() got: %v, want %v", got.StatusCode, tests[1].want)
    		}
    		got, err = http.Get(tests[0].args.request)
    		if err != nil {
    			t.Error(err)
    			return
    		}
    		if !reflect.DeepEqual(got.StatusCode, tests[2].want) {
    			t.Errorf("Run() got: %v, want %v", got.StatusCode, tests[2].want)
    		}
    	})
    
    	cancel()