Skip to content
Snippets Groups Projects
cliIntegration_test.go 3.68 KiB
Newer Older
  • Learn to ignore specific revisions
  • package integration
    
    
    import (
    
    	"code.fbi.h-da.de/cocsn/gosdn/cli"
    
    	"os"
    	"testing"
    )
    
    func TestMain(m *testing.M) {
    	testSetupIntegration()
    	os.Exit(m.Run())
    }
    
    func TestCapabilities(t *testing.T) {
    	if testing.Short() {
    		t.Skip("skipping integration test")
    	}
    	type args struct {
    		a string
    		u string
    		p string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		wantErr bool
    	}{
    		{
    			name: "default",
    			args: args{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				a: testAddress,
    				u: testUsername,
    				p: testPassword,
    
    			},
    			wantErr: false,
    		},
    		{
    			name: "destination unreachable",
    			args: args{
    				a: unreachable,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				u: testUsername,
    				p: testPassword,
    
    			},
    			wantErr: true,
    		},
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    			if err := cli.Capabilities(tt.args.a, tt.args.u, tt.args.p); (err != nil) != tt.wantErr {
    
    				t.Errorf("Capabilities() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }
    
    func TestGet(t *testing.T) {
    	if testing.Short() {
    		t.Skip("skipping integration test")
    	}
    	type args struct {
    		a    string
    		u    string
    		p    string
    		args []string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		wantErr bool
    	}{
    		{
    			name: "default",
    			args: args{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				a:    testAddress,
    				u:    testUsername,
    				p:    testPassword,
    
    				args: defaultPath,
    			},
    			wantErr: false,
    		},
    		{
    			name: "destination unreachable",
    			args: args{
    				a:    unreachable,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				u:    testUsername,
    				p:    testPassword,
    
    				args: defaultPath,
    			},
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			wantErr: true,
    
    		},
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    			if _, err := cli.Get(tt.args.a, tt.args.u, tt.args.p, tt.args.args...); (err != nil) != tt.wantErr {
    
    				t.Errorf("Get() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }
    
    func TestHttpGet(t *testing.T) {
    	if testing.Short() {
    		t.Skip("skipping integration test")
    	}
    	type args struct {
    		apiEndpoint string
    		f           string
    		args        []string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		wantErr bool
    	}{
    		{
    			name: "default",
    			args: args{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				apiEndpoint: testAPIEndpoint,
    
    				f:           "init",
    				args:        nil,
    			},
    			wantErr: false,
    		},
    		{
    			name: "destination unreachable",
    			args: args{
    				apiEndpoint: "http://" + unreachable,
    				f:           "init",
    				args:        nil,
    			},
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			wantErr: true,
    
    		},
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    			if err := cli.HTTPGet(tt.args.apiEndpoint, tt.args.f, tt.args.args...); (err != nil) != tt.wantErr {
    
    				t.Errorf("HttpGet() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }
    
    func TestSet(t *testing.T) {
    	if testing.Short() {
    		t.Skip("skipping integration test")
    	}
    	type args struct {
    		a    string
    		u    string
    		p    string
    		typ  string
    		args []string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		wantErr bool
    	}{
    		{
    			name: "default",
    			args: args{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				a:    testAddress,
    				u:    testUsername,
    				p:    testPassword,
    
    				typ:  "update",
    				args: []string{"/system/config/hostname", "ceos3000"},
    			},
    			wantErr: false,
    		},
    		{
    			name: "destination unreachable",
    			args: args{
    				a:    unreachable,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				u:    testUsername,
    				p:    testPassword,
    
    				typ:  "update",
    				args: []string{"/system/config/hostname", "ceos3000"},
    			},
    			wantErr: true,
    		},
    		{
    			name: "invalid path",
    			args: args{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				a:    testAddress,
    				u:    testUsername,
    				p:    testPassword,
    
    				typ:  "update",
    				args: []string{"invalid/path", "ceos3000"},
    			},
    			wantErr: true,
    		},
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    			if err := cli.Set(tt.args.a, tt.args.u, tt.args.p, tt.args.typ, tt.args.args...); (err != nil) != tt.wantErr {
    
    				t.Errorf("Set() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }