diff --git a/cache/cache_test.go b/cache/cache_test.go index 2ad63420..0f514329 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -22,6 +22,11 @@ func (c *CacheTestSuite) SetupTest() { EntityType: params.ForgeEntityTypeOrganization, Name: "test", Owner: "test", + Credentials: params.ForgeCredentials{ + ID: 1, + Name: "test", + ForgeType: params.GithubEndpointType, + }, } } @@ -50,7 +55,6 @@ func (c *CacheTestSuite) TestSetCacheWorks() { DownloadURL: garmTesting.Ptr("https://example.com"), }, } - c.Require().NotNil(githubToolsCache) c.Require().Len(githubToolsCache.entities, 0) SetGithubToolsCache(c.entity, tools) @@ -71,13 +75,17 @@ func (c *CacheTestSuite) TestTimedOutToolsCache() { c.Require().NotNil(githubToolsCache) c.Require().Len(githubToolsCache.entities, 0) SetGithubToolsCache(c.entity, tools) - c.Require().Len(githubToolsCache.entities, 1) entity := githubToolsCache.entities[c.entity.ID] - entity.updatedAt = entity.updatedAt.Add(-2 * time.Hour) + + c.Require().Equal(int64(entity.expiresAt.Sub(entity.updatedAt).Minutes()), int64(60)) + c.Require().Len(githubToolsCache.entities, 1) + entity = githubToolsCache.entities[c.entity.ID] + entity.updatedAt = entity.updatedAt.Add(-3 * time.Hour) + entity.expiresAt = entity.updatedAt.Add(-2 * time.Hour) githubToolsCache.entities[c.entity.ID] = entity cachedTools, err := GetGithubToolsCache(c.entity.ID) - c.Require().NoError(err) + c.Require().Error(err) c.Require().Nil(cachedTools) } @@ -85,7 +93,7 @@ func (c *CacheTestSuite) TestGetInexistentCache() { c.Require().NotNil(githubToolsCache) c.Require().Len(githubToolsCache.entities, 0) cachedTools, err := GetGithubToolsCache(c.entity.ID) - c.Require().NoError(err) + c.Require().Error(err) c.Require().Nil(cachedTools) } @@ -280,7 +288,8 @@ func (c *CacheTestSuite) TestReplaceEntityPools() { Name: "test", Owner: "test", Credentials: params.ForgeCredentials{ - ID: 1, + ID: 1, + ForgeType: params.GithubEndpointType, }, } pool1 := params.Pool{ @@ -291,8 +300,9 @@ func (c *CacheTestSuite) TestReplaceEntityPools() { } credentials := params.ForgeCredentials{ - ID: 1, - Name: "test", + ID: 1, + Name: "test", + ForgeType: params.GithubEndpointType, } SetGithubCredentials(credentials) diff --git a/cache/tools_cache.go b/cache/tools_cache.go index 98b58b19..8675bec9 100644 --- a/cache/tools_cache.go +++ b/cache/tools_cache.go @@ -68,7 +68,7 @@ func (g *GithubToolsCache) Set(entity params.ForgeEntity, tools []commonParams.R } if entity.Credentials.ForgeType == params.GithubEndpointType { - forgeTools.expiresAt = time.Now().Add(24 * time.Hour) + forgeTools.expiresAt = time.Now().Add(1 * time.Hour) } g.entities[entity.ID] = forgeTools diff --git a/database/sql/github.go b/database/sql/github.go index d2c05244..08d6bdb3 100644 --- a/database/sql/github.go +++ b/database/sql/github.go @@ -290,8 +290,11 @@ func (s *sqlDatabase) getGithubCredentialsByName(ctx context.Context, tx *gorm.D if detailed { q = q. Preload("Repositories"). + Preload("Repositories.Credentials"). Preload("Organizations"). - Preload("Enterprises") + Preload("Organizations.Credentials"). + Preload("Enterprises"). + Preload("Enterprises.Credentials") } userID, err := getUIDFromContext(ctx) @@ -316,7 +319,6 @@ func (s *sqlDatabase) GetGithubCredentialsByName(ctx context.Context, name strin if err != nil { return params.ForgeCredentials{}, errors.Wrap(err, "fetching github credentials") } - return s.sqlToCommonForgeCredentials(creds) } @@ -327,8 +329,11 @@ func (s *sqlDatabase) GetGithubCredentials(ctx context.Context, id uint, detaile if detailed { q = q. Preload("Repositories"). + Preload("Repositories.Credentials"). Preload("Organizations"). - Preload("Enterprises") + Preload("Organizations.Credentials"). + Preload("Enterprises"). + Preload("Enterprises.Credentials") } if !auth.IsAdmin(ctx) { diff --git a/database/sql/repositories_test.go b/database/sql/repositories_test.go index 73104a2f..0e2fa08f 100644 --- a/database/sql/repositories_test.go +++ b/database/sql/repositories_test.go @@ -249,15 +249,6 @@ func (s *RepoTestSuite) TestCreateRepositoryInvalidDBPassphrase() { func (s *RepoTestSuite) TestCreateRepositoryInvalidDBCreateErr() { s.Fixtures.SQLMock.ExpectBegin() - s.Fixtures.SQLMock. - ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_credentials` WHERE user_id = ? AND name = ? AND `github_credentials`.`deleted_at` IS NULL ORDER BY `github_credentials`.`id` LIMIT ?")). - WithArgs(s.adminUserID, s.Fixtures.Repos[0].CredentialsName, 1). - WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}). - AddRow(s.testCreds.ID, s.githubEndpoint.Name)) - s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")). - WithArgs(s.testCreds.Endpoint.Name). - WillReturnRows(sqlmock.NewRows([]string{"name"}). - AddRow(s.githubEndpoint.Name)) s.Fixtures.SQLMock. ExpectExec(regexp.QuoteMeta("INSERT INTO `repositories`")). WillReturnError(fmt.Errorf("creating repo mock error")) diff --git a/runner/repositories_test.go b/runner/repositories_test.go index 4e891e4b..0adf40d7 100644 --- a/runner/repositories_test.go +++ b/runner/repositories_test.go @@ -116,6 +116,7 @@ func (s *RepoTestSuite) SetupTest() { Name: "test-repo-create", CredentialsName: s.testCreds.Name, WebhookSecret: "test-create-repo-webhook-secret", + ForgeType: params.GithubEndpointType, }, CreatePoolParams: params.CreatePoolParams{ ProviderName: "test-provider",