Use CheckExpiresAt in the project service account token tests
What does this MR do and why?
TestAccGitlabProjectServiceAccountAccessToken_noExpiration and TestAccGitlabProjectServiceAccountAccessToken_rotationConfiguration compare expires_at with testutil.GetCurrentTimePlusDays, which runs when the test function builds its test case. resource.ParallelTest then waits in t.Parallel() until the serial tests have finished, so when a run crosses midnight UTC the token is created a day after the date the check expects. That is what dropped !3344 (merged) from the merge train on 2026-10-26: the three testacc:ee jobs failed both tests between 00:02 and 00:11 UTC with expected "2026-11-04", got "2026-11-05" and expected "2026-11-24", got "2026-11-25" (19.5.0 job).
This MR moves their four expires_at checks to framework.CheckExpiresAt, which compares expires_at with the token's own created_at plus the expiration days. !3226 (merged) did the same for the other access token tests, and !3208 (merged) added this resource a few days later with the old check. Only the test file changes.
Related to !3344 (merged), where I said I would open this MR (note).
How to verify
Both tests are EE only (testutil.SkipIfCE), so the CE jobs skip them. Against a licensed make testacc-up SERVICE=gitlab-ee instance, this runs the tests of the resource, both of them included:
make testacc RUN=TestAccGitlabProjectServiceAccountAccessToken_What I ran (Go 1.26.10, golangci-lint 2.15.0)
gofmt -s, go vet -tags acceptance ./internal/provider/ and make lint-golangci (0 issues) are clean, the acceptance test binary builds and lists both tests, and make test passes. I did not run the two tests against a GitLab EE instance for this change.
To check the new assertion without an instance, I gave both checks, in a throwaway test that is not part of this MR, the dates of the failed train jobs: a token created just after midnight (2026-10-26T00:02:35Z) with expires_at 2026-11-05, and a test case built the evening before. The check on main fails with the train's message, Attribute 'expires_at' expected "2026-11-04", got "2026-11-05", and framework.CheckExpiresAt passes. The same holds for the 30-day case. When the token is created on the day the test case was built, both pass, and framework.CheckExpiresAt still fails for a wrong expires_at.