diff --git a/integration/inspect_test.go b/integration/inspect_test.go new file mode 100644 index 000000000..8d9d0d71d --- /dev/null +++ b/integration/inspect_test.go @@ -0,0 +1,106 @@ +package integration + +import ( + "fmt" + "log" + "net/http" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func Inspect(volume string, file string, enc bool) (*http.Response, error) { + requestURL := fmt.Sprintf("http://localhost:9090/api/v1/admin/inspect?volume=%s&file=%s&encrypt=%t", volume, file, enc) + request, err := http.NewRequest( + "GET", requestURL, nil) + if err != nil { + log.Println(err) + } + request.Header.Add("Cookie", fmt.Sprintf("token=%s", token)) + request.Header.Add("Content-Type", "application/json") + client := &http.Client{ + Timeout: 2 * time.Second, + } + response, err := client.Do(request) + return response, err +} + +func TestInspect(t *testing.T) { + assert := assert.New(t) + + type args struct { + volume string + file string + encrypt bool + } + + // Inspect returns successful response always + tests := []struct { + name string + args args + expStatusCode int + expectedError bool + }{ + { + name: "Test Invalid Path", + args: args{ + volume: "/test-with-slash", + file: "/test-with-slash", + encrypt: false, + }, + expStatusCode: 200, + expectedError: false, + }, + + { + name: "Test Invalid characters in Path", + args: args{ + volume: "//test", + file: "//bucket", + encrypt: false, + }, + expStatusCode: 200, + expectedError: true, + }, + { + name: "Test valid bucket", + args: args{ + volume: "test-bucket", + file: "test.txt", + encrypt: true, + }, + expStatusCode: 200, + expectedError: false, + }, + { + name: "Test Empty Path", // Un processable entity error + args: args{ + volume: "", + file: "", + encrypt: false, + }, + expStatusCode: 422, + expectedError: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + resp, err := Inspect(tt.args.volume, tt.args.file, tt.args.encrypt) + if tt.expectedError { + assert.Nil(err) + if err != nil { + log.Println(err) + return + } + } + if resp != nil { + assert.Equal( + tt.expStatusCode, + resp.StatusCode, + ) + } + }) + } +}