Skip to content
Snippets Groups Projects
integration_test.go 2.92 KiB
Newer Older
  • Learn to ignore specific revisions
  • package cmd
    
    import (
    	"code.fbi.h-da.de/cocsn/gosdn/cli"
    	guuid "github.com/google/uuid"
    	"github.com/spf13/viper"
    	"os"
    	"testing"
    )
    
    var testAddress = "141.100.70.171:6030"
    var testApiEndpoint = "http://141.100.70.171:8080"
    var testUsername = "admin"
    var testPassword = "arista"
    
    func testSetupIntegration() {
    	a := os.Getenv("GOSDN_TEST_ENDPOINT")
    	if a != "" {
    		testAddress = a
    	}
    	api := os.Getenv("GOSDN_TEST_API_ENDPOINT")
    	if api != "" {
    		testApiEndpoint = api
    	}
    	u := os.Getenv("GOSDN_TEST_USER")
    	if u != "" {
    		testUsername = u
    	}
    	p := os.Getenv("GOSDN_TEST_PASSWORD")
    	if p != "" {
    		testPassword = p
    	}
    }
    
    func TestMain(m *testing.M) {
    	testSetupIntegration()
    	os.Exit(m.Run())
    }
    
    func TestCliIntegration(t *testing.T) {
    	if testing.Short() {
    		t.Skip("skipping integration test")
    	}
    	tests := []struct {
    		name    string
    		wantErr bool
    	}{
    		{
    			name:    "default",
    			wantErr: false,
    		},
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			defer viper.Reset()
    
    			if err := cli.HTTPGet(testApiEndpoint, "init"); (err != nil) != tt.wantErr {
    
    				switch err.(type) {
    				case viper.ConfigFileNotFoundError:
    				default:
    					t.Errorf("gosdn cli init error = %v, wantErr %v", err, tt.wantErr)
    					return
    				}
    			}
    			cliPnd = viper.GetString("CLI_PND")
    			cliSbi = viper.GetString("CLI_SBI")
    
    
    			if err := cli.HTTPGet(
    
    				testApiEndpoint,
    				"addDevice",
    				"address="+testAddress,
    				"password="+testPassword,
    				"username="+testUsername,
    				"sbi="+cliSbi,
    				"pnd="+cliPnd,
    			); (err != nil) != tt.wantErr {
    				t.Errorf("gosdn cli add-device error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    			did := viper.GetString("LAST_DEVICE_UUID")
    
    
    			if err := cli.HTTPGet(
    
    				testApiEndpoint,
    				"request",
    				"uuid="+did,
    				"sbi="+cliSbi,
    				"pnd="+cliPnd,
    				"path=/system/config/hostname",
    			); (err != nil) != tt.wantErr {
    				t.Errorf("gosdn cli request error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    
    
    			if err := cli.HTTPGet(
    
    				testApiEndpoint,
    				"getDevice",
    				"address="+testAddress,
    				"uuid="+did,
    				"sbi="+cliSbi,
    				"pnd="+cliPnd,
    			); (err != nil) != tt.wantErr {
    				t.Errorf("gosdn cli get-device error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    
    			hostname := guuid.New().String()
    
    			if err := cli.HTTPGet(
    
    				testApiEndpoint,
    				"set",
    				"address="+testAddress,
    				"uuid="+did,
    				"sbi="+cliSbi,
    				"pnd="+cliPnd,
    				"path=/system/config/hostname",
    				"value="+hostname,
    			); (err != nil) != tt.wantErr {
    				t.Errorf("gosdn cli set error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    
    			resp, err := cli.Get(testAddress, testUsername, testPassword, "/system/config/hostname")
    			if (err != nil) != tt.wantErr {
    				t.Errorf("cli.Get() error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    			got := resp.Notification[0].Update[0].Val.GetStringVal()
    			if got != hostname {
    				t.Errorf("integration test failed = got: %v, want: %v", got, hostname)
    			}
    		})
    	}
    }