github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/domain/fetchrequest/fixtures_test.go (about) 1 package fetchrequest_test 2 3 import ( 4 "database/sql" 5 "encoding/json" 6 "testing" 7 "time" 8 9 "github.com/kyma-incubator/compass/components/director/internal/domain/fetchrequest" 10 11 "github.com/kyma-incubator/compass/components/director/internal/model" 12 "github.com/kyma-incubator/compass/components/director/pkg/graphql" 13 "github.com/stretchr/testify/require" 14 ) 15 16 const ( 17 tenantID = "b91b59f7-2563-40b2-aba9-fef726037aa3" 18 localTenantID = "local-tenant-id" 19 refID = "refID" 20 ) 21 22 func fixModelFetchRequest(t *testing.T, url, filter string) *model.FetchRequest { 23 time, err := time.Parse(time.RFC3339, "2002-10-02T10:00:00-05:00") 24 require.NoError(t, err) 25 26 return &model.FetchRequest{ 27 URL: url, 28 Auth: &model.Auth{}, 29 Mode: model.FetchModeSingle, 30 Filter: &filter, 31 Status: &model.FetchRequestStatus{ 32 Condition: model.FetchRequestStatusConditionInitial, 33 Timestamp: time, 34 }, 35 } 36 } 37 38 func fixGQLFetchRequest(t *testing.T, url, filter string) *graphql.FetchRequest { 39 time, err := time.Parse(time.RFC3339, "2002-10-02T10:00:00-05:00") 40 require.NoError(t, err) 41 42 return &graphql.FetchRequest{ 43 URL: url, 44 Auth: &graphql.Auth{}, 45 Mode: graphql.FetchModeSingle, 46 Filter: &filter, 47 Status: &graphql.FetchRequestStatus{ 48 Condition: graphql.FetchRequestStatusConditionInitial, 49 Timestamp: graphql.Timestamp(time), 50 }, 51 } 52 } 53 54 func fixModelFetchRequestInput(url, filter string) *model.FetchRequestInput { 55 mode := model.FetchModeSingle 56 57 return &model.FetchRequestInput{ 58 URL: url, 59 Auth: &model.AuthInput{}, 60 Mode: &mode, 61 Filter: &filter, 62 } 63 } 64 65 func fixGQLFetchRequestInput(url, filter string) *graphql.FetchRequestInput { 66 mode := graphql.FetchModeSingle 67 68 return &graphql.FetchRequestInput{ 69 URL: url, 70 Auth: &graphql.AuthInput{}, 71 Mode: &mode, 72 Filter: &filter, 73 } 74 } 75 76 func fixFullFetchRequestModel(id string, timestamp time.Time, objectType model.FetchRequestReferenceObjectType) *model.FetchRequest { 77 return fixFullFetchRequestModelWithRefID(id, timestamp, objectType, refID) 78 } 79 80 func fixFullFetchRequestModelWithRefID(id string, timestamp time.Time, objectType model.FetchRequestReferenceObjectType, objectID string) *model.FetchRequest { 81 filter := "filter" 82 return &model.FetchRequest{ 83 ID: id, 84 URL: "foo.bar", 85 Mode: model.FetchModeIndex, 86 Filter: &filter, 87 Status: &model.FetchRequestStatus{ 88 Condition: model.FetchRequestStatusConditionSucceeded, 89 Timestamp: timestamp, 90 }, 91 Auth: &model.Auth{ 92 Credential: model.CredentialData{ 93 Basic: &model.BasicCredentialData{ 94 Username: "foo", 95 Password: "bar", 96 }, 97 }, 98 }, 99 ObjectType: objectType, 100 ObjectID: objectID, 101 } 102 } 103 104 func fixFullFetchRequestEntity(t *testing.T, id string, timestamp time.Time, objectType model.FetchRequestReferenceObjectType) *fetchrequest.Entity { 105 return fixFullFetchRequestEntityWithRefID(t, id, timestamp, objectType, refID) 106 } 107 108 func fixFullFetchRequestEntityWithRefID(t *testing.T, id string, timestamp time.Time, objectType model.FetchRequestReferenceObjectType, objectID string) *fetchrequest.Entity { 109 auth := &model.Auth{ 110 Credential: model.CredentialData{ 111 Basic: &model.BasicCredentialData{ 112 Username: "foo", 113 Password: "bar", 114 }, 115 }, 116 } 117 118 bytes, err := json.Marshal(auth) 119 require.NoError(t, err) 120 121 var documentID sql.NullString 122 var specID sql.NullString 123 switch objectType { 124 case model.DocumentFetchRequestReference: 125 documentID = sql.NullString{Valid: true, String: objectID} 126 case model.APISpecFetchRequestReference: 127 specID = sql.NullString{Valid: true, String: objectID} 128 case model.EventSpecFetchRequestReference: 129 specID = sql.NullString{Valid: true, String: objectID} 130 } 131 132 filter := "filter" 133 return &fetchrequest.Entity{ 134 ID: id, 135 URL: "foo.bar", 136 Mode: string(model.FetchModeIndex), 137 Filter: sql.NullString{ 138 String: filter, 139 Valid: true, 140 }, 141 StatusCondition: string(model.FetchRequestStatusConditionSucceeded), 142 StatusTimestamp: timestamp, 143 Auth: sql.NullString{ 144 Valid: true, 145 String: string(bytes), 146 }, 147 SpecID: specID, 148 DocumentID: documentID, 149 } 150 } 151 152 func fixFetchRequestModelWithReference(id string, timestamp time.Time, objectType model.FetchRequestReferenceObjectType, objectID string) model.FetchRequest { 153 filter := "filter" 154 return model.FetchRequest{ 155 ID: id, 156 URL: "foo.bar", 157 Mode: model.FetchModeIndex, 158 Filter: &filter, 159 Status: &model.FetchRequestStatus{ 160 Condition: model.FetchRequestStatusConditionSucceeded, 161 Timestamp: timestamp, 162 }, 163 Auth: nil, 164 ObjectType: objectType, 165 ObjectID: objectID, 166 } 167 } 168 169 func fixFetchRequestEntityWithReferences(id string, timestamp time.Time, specID, documentID sql.NullString) fetchrequest.Entity { 170 return fetchrequest.Entity{ 171 ID: id, 172 URL: "foo.bar", 173 Mode: string(model.FetchModeIndex), 174 Filter: sql.NullString{ 175 String: "filter", 176 Valid: true, 177 }, 178 StatusCondition: string(model.FetchRequestStatusConditionSucceeded), 179 StatusTimestamp: timestamp, 180 Auth: sql.NullString{}, 181 SpecID: specID, 182 DocumentID: documentID, 183 } 184 } 185 186 func fixColumns() []string { 187 return []string{"id", "document_id", "url", "auth", "mode", "filter", "status_condition", "status_message", "status_timestamp", "spec_id"} 188 }