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  }