diff options
Diffstat (limited to 'go/cmd/gitaly-upload-archive/main_test.go')
-rw-r--r-- | go/cmd/gitaly-upload-archive/main_test.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/go/cmd/gitaly-upload-archive/main_test.go b/go/cmd/gitaly-upload-archive/main_test.go new file mode 100644 index 0000000..e1fd919 --- /dev/null +++ b/go/cmd/gitaly-upload-archive/main_test.go @@ -0,0 +1,59 @@ +package main + +import ( + "testing" + + "github.com/stretchr/testify/require" + pb "gitlab.com/gitlab-org/gitaly-proto/go/gitalypb" +) + +func Test_deserialize(t *testing.T) { + tests := []struct { + name string + requestJSON string + want *pb.SSHUploadArchiveRequest + wantErr bool + }{ + { + name: "empty", + requestJSON: "", + want: nil, + wantErr: true, + }, + { + name: "empty_hash", + requestJSON: "{}", + want: &pb.SSHUploadArchiveRequest{}, + wantErr: false, + }, + { + name: "nil", + requestJSON: "null", + want: &pb.SSHUploadArchiveRequest{}, + wantErr: false, + }, + { + name: "values", + requestJSON: `{"repository": { "storage_name": "12345"} }`, + want: &pb.SSHUploadArchiveRequest{Repository: &pb.Repository{StorageName: "12345"}}, + wantErr: false, + }, + { + name: "invalid_json", + requestJSON: `{"gl_id": "1234`, + want: nil, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := deserialize(tt.requestJSON) + require.EqualValues(t, got, tt.want, "Got %+v, wanted %+v", got, tt.want) + if tt.wantErr { + require.Error(t, err, "Wanted an error, got %+v", err) + } else { + require.NoError(t, err, "Wanted no error, got %+v", err) + } + }) + } +} |