Skip to content
Snippets Groups Projects
apiIntegration_test.go 2.7 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    import (
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"code.fbi.h-da.de/danet/api/go/gosdn/pnd"
    	tpb "code.fbi.h-da.de/danet/api/go/gosdn/transport"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"github.com/google/uuid"
    
    	guuid "github.com/google/uuid"
    	"github.com/spf13/viper"
    )
    
    
    func TestApiIntegration(t *testing.T) {
    	// TDOO: Remove once openshift grpc support is available
    	t.Skip("skipped due to openshift limitations")
    
    	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 := Init(testAPIEndpoint); (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")
    
    			suid, err := uuid.Parse(cliSbi)
    			if err != nil {
    				t.Error(err)
    			}
    			puid, err := uuid.Parse(cliPnd)
    			if err != nil {
    				t.Error(err)
    			}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    			opt := &tpb.TransportOption{
    				Address:  testAddress,
    				Username: testUsername,
    				Password: testPassword,
    				TransportOption: &tpb.TransportOption_GnmiTransportOption{
    					GnmiTransportOption: &tpb.GnmiTransportOption{},
    				},
    			}
    			if _, err := addDevice(
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				testAPIEndpoint,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				"test-device",
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				opt,
    
    				suid,
    				puid,
    
    			); (err != nil) != tt.wantErr {
    				t.Errorf("gosdn cli add-device error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    			did := viper.GetString("LAST_DEVICE_UUID")
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			_, err = getDevice(
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				testAPIEndpoint,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				cliPnd,
    				did,
    			)
    			if (err != nil) != tt.wantErr {
    
    				t.Errorf("gosdn cli request error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			_, err = getDevice(
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				testAPIEndpoint,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				cliPnd,
    				"",
    				did,
    			)
    			if (err != nil) != tt.wantErr {
    
    				t.Errorf("gosdn cli get-device error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    
    			hostname := guuid.New().String()
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			_, err = changeRequest(
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				testAPIEndpoint,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				did,
    				cliPnd,
    				testPath,
    				hostname,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				pnd.ApiOperation_UPDATE,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			)
    			if (err != nil) != tt.wantErr {
    
    				t.Errorf("gosdn cli set error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			resp, err := getDevice(testAddress, testUsername, testPassword, testPath)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			if err != nil {
    				if !tt.wantErr {
    
    					t.Errorf("Get() error = %v, wantErr %v", err, tt.wantErr)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    				}
    
    				return
    			}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			var got string
    			if resp != nil {
    				got = resp.Ond[0].Name
    			} else {
    				t.Errorf("integration test failed got cannot be nil")
    			}
    
    			if got != hostname {
    				t.Errorf("integration test failed = got: %v, want: %v", got, hostname)
    			}
    		})
    	}
    }