Skip to content

Commit 0e64dc8

Browse files
committed
feat: Add md5 file content sum.
Add md5 populate test.
1 parent 582e6ae commit 0e64dc8

File tree

3 files changed

+46
-3
lines changed

3 files changed

+46
-3
lines changed

internal/dto/apiSpecDoc/apiSpecDoc.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ type ApiSpecDoc struct {
2121

2222
//Methods at the root level without groups
2323
Methods []*ApiMethod
24+
25+
//Origin file hash sum
26+
Md5Sum string
2427
}
2528

2629
// Group represents some grouping rule

internal/process/processor.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package process
22

33
import (
44
"context"
5+
"crypto/md5"
6+
"encoding/hex"
57

68
"github.com/rog-golang-buddies/api-hub_data-scraping-service/internal/dto/apiSpecDoc"
79
"github.com/rog-golang-buddies/api-hub_data-scraping-service/internal/load"
@@ -47,6 +49,9 @@ func (p *UrlProcessorImpl) Process(ctx context.Context, url string) (*apiSpecDoc
4749
return nil, err
4850
}
4951

52+
hash := md5.Sum(file.Content)
53+
apiSpec.Md5Sum = hex.EncodeToString(hash[:])
54+
5055
return apiSpec, nil
5156
}
5257

internal/process/processor_test.go

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ package process
22

33
import (
44
"context"
5+
"crypto/md5"
6+
"encoding/hex"
57
"errors"
8+
"github.com/rog-golang-buddies/api-hub_data-scraping-service/internal/dto/apiSpecDoc"
69
"testing"
710

811
"github.com/golang/mock/gomock"
@@ -13,7 +16,7 @@ import (
1316
"github.com/stretchr/testify/assert"
1417
)
1518

16-
func Test_RecognizeFail_processReturnsError(t *testing.T) {
19+
func TestProcess_RecognizeFail_processReturnsError(t *testing.T) {
1720
ctrl := gomock.NewController(t)
1821

1922
contentLoader := load.NewMockContentLoader(ctrl)
@@ -37,7 +40,7 @@ func Test_RecognizeFail_processReturnsError(t *testing.T) {
3740
assert.Equal(t, expectedErr, err, "Should return error from recognizer")
3841
}
3942

40-
func Test_ContentLoaderFail_processReturnsError(t *testing.T) {
43+
func TestProcess_ContentLoaderFail_processReturnsError(t *testing.T) {
4144
ctrl := gomock.NewController(t)
4245

4346
contentLoader := load.NewMockContentLoader(ctrl)
@@ -60,7 +63,7 @@ func Test_ContentLoaderFail_processReturnsError(t *testing.T) {
6063
assert.Equal(t, expectedErr, err, "Should return error from contentLoader")
6164
}
6265

63-
func Test_ConverterFail_processReturnsError(t *testing.T) {
66+
func TestProcess_ConverterFail_processReturnsError(t *testing.T) {
6467
ctrl := gomock.NewController(t)
6568

6669
contentLoader := load.NewMockContentLoader(ctrl)
@@ -84,3 +87,35 @@ func Test_ConverterFail_processReturnsError(t *testing.T) {
8487
assert.Nil(t, asd)
8588
assert.Equal(t, expectedErr, err, "Should return error from converter")
8689
}
90+
91+
func TestProcess_completed_hashPopulated(t *testing.T) {
92+
ctrl := gomock.NewController(t)
93+
94+
contentLoader := load.NewMockContentLoader(ctrl)
95+
recognizer := recognize.NewMockRecognizer(ctrl)
96+
converter := parse.NewMockConverter(ctrl)
97+
98+
ctx := context.Background()
99+
url := "test_url_from_yaml_openapi_file"
100+
101+
fileContent := []byte("Test content")
102+
fileResource := new(fileresource.FileResource)
103+
fileResource.Content = fileContent
104+
105+
result := &apiSpecDoc.ApiSpecDoc{}
106+
loadCall := contentLoader.EXPECT().Load(ctx, url).Times(1).Return(fileResource, nil)
107+
recognizeCall := recognizer.EXPECT().RecognizeFileType(fileResource).After(loadCall).Times(1).Return(fileresource.OpenApi, nil)
108+
converter.EXPECT().Convert(ctx, gomock.Any()).Times(1).After(recognizeCall).Return(result, nil)
109+
110+
processor, err := NewProcessor(recognizer, converter, contentLoader)
111+
assert.Nil(t, err)
112+
assert.NotNil(t, processor, "Processor must not be nil")
113+
114+
asd, err := processor.Process(ctx, url)
115+
assert.Nil(t, err)
116+
assert.NotNil(t, asd)
117+
assert.Equal(t, result, asd)
118+
hashSum := md5.Sum(fileContent)
119+
expectedHash := hex.EncodeToString(hashSum[:])
120+
assert.Equal(t, expectedHash, asd.Md5Sum)
121+
}

0 commit comments

Comments
 (0)