Skip to content

Commit a048dce

Browse files
Andrew Farriesroboquat
Andrew Farries
authored andcommitted
Add a test for the UsageReportService
Test that usageReportService.UploadURL interacts with PresignedAccess correctly to produce an upload URL for the correct bucket and filename.
1 parent 02bc08c commit a048dce

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2+
// Licensed under the GNU Affero General Public License (AGPL).
3+
// See License-AGPL.txt in the project root for license information.
4+
5+
package service
6+
7+
import (
8+
"context"
9+
"testing"
10+
11+
"github.com/gitpod-io/gitpod/content-service/api"
12+
"github.com/gitpod-io/gitpod/content-service/api/config"
13+
"github.com/gitpod-io/gitpod/content-service/pkg/storage"
14+
storagemock "github.com/gitpod-io/gitpod/content-service/pkg/storage/mock"
15+
"github.com/golang/mock/gomock"
16+
"github.com/stretchr/testify/require"
17+
)
18+
19+
// TestUploadURL tests that usageReportService.UploadURL interacts with PresignedAccess
20+
// correctly to produce an upload URL for the correct bucket and filename.
21+
func TestUploadURL(t *testing.T) {
22+
ctrl := gomock.NewController(t)
23+
s := storagemock.NewMockPresignedAccess(ctrl)
24+
const fileName = "some-report-filename"
25+
26+
s.EXPECT().EnsureExists(gomock.Any(), usageReportBucketName).
27+
Return(nil)
28+
s.EXPECT().SignUpload(gomock.Any(), usageReportBucketName, fileName, gomock.Any()).
29+
Return(&storage.UploadInfo{URL: "http://example.com/some-path"}, nil)
30+
31+
svc := &UsageReportService{cfg: config.StorageConfig{}, s: s}
32+
resp, err := svc.UploadURL(context.Background(), &api.UsageReportUploadURLRequest{Name: fileName})
33+
34+
require.NoError(t, err)
35+
require.Equal(t, "http://example.com/some-path", resp.Url)
36+
}

components/content-service/pkg/service/usagereport-service.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
)
2020

2121
const (
22-
bucketName = "usage-reports"
22+
usageReportBucketName = "usage-reports"
2323
)
2424

2525
// UsageReportService implements UsageReportServiceServer
@@ -45,17 +45,17 @@ func (us *UsageReportService) UploadURL(ctx context.Context, req *api.UsageRepor
4545
span.SetTag("name", req.Name)
4646
defer tracing.FinishSpan(span, &err)
4747

48-
err = us.s.EnsureExists(ctx, bucketName)
48+
err = us.s.EnsureExists(ctx, usageReportBucketName)
4949
if err != nil {
5050
return nil, status.Error(codes.NotFound, err.Error())
5151
}
5252

53-
info, err := us.s.SignUpload(ctx, bucketName, req.Name, &storage.SignedURLOptions{
53+
info, err := us.s.SignUpload(ctx, usageReportBucketName, req.Name, &storage.SignedURLOptions{
5454
ContentType: "*/*",
5555
})
5656
if err != nil {
5757
log.WithField("name", req.Name).
58-
WithField("bucket", bucketName).
58+
WithField("bucket", usageReportBucketName).
5959
WithError(err).
6060
Error("Error getting UsageReport SignUpload URL")
6161
if err == storage.ErrNotFound {

0 commit comments

Comments
 (0)