 or private without access", func(t *testing.T) {
		check := func(status *api.SPIAccessCheckStatus, err error) {
			assert.NoError(t, err)
			assert.NotNil(t, status)
			assert.False(t, status.Accessible)
			assert.Equal(t, api.SPIRepoTypeContainerRegistry, status.Type)
			assert.Equal(t, api.ServiceProviderTypeQuay, status.ServiceProvider)
			assert.Equal(t, api.SPIAccessCheckAccessibilityUnknown, status.Accessibility)
		}

		t.Run("401 unauthorized", func(t *testing.T) {
			quay := &Quay{
				httpClient: httpClientMock{doFunc: func(req *http.Request) (*http.Response, error) {
					return &http.Response{StatusCode: http.StatusUnauthorized}, nil
				}},
				lookup:       lookupMock,
				tokenStorage: ts,
			}

			status, err := quay.CheckRepositoryAccess(context.TODO(), cl, accessCheck)
			check(status, err)
		})

		t.Run("403 StatusForbidden", func(t *testing.T) {
			quay := &Quay{
				httpClient: httpClientMock{doFunc: func(req *http.Request) (*http.Response, error) {
					return &http.Response{StatusCode: http.StatusForbidden}, nil
				}},
				lookup:       lookupMock,
				tokenStorage: ts,
			}

			status, err := quay.CheckRepositoryAccess(context.TODO(), cl, accessCheck)
			check(status, err)
		})
	})

	t.Run("not found", func(t *testing.T) {
		quay := &Quay{
			httpClient: httpClientMock{doFunc: func(req *http.Request) (*http.Response, error) {
				return &http.Response{StatusCode: http.StatusNotFound}, nil
			}},
			lookup:       lookupMock,
			tokenStorage: ts,
		}

		status, err := quay.CheckRepositoryAccess(context.TODO(), cl, accessCheck)

		assert.NoError(t, err)
		assert.NotNil(t, status)
		assert.False(t, status.Accessible)
		assert.Equal(t, api.SPIRepoTypeContainerRegistry, status.Type)
		assert.Equal(t, api.ServiceProviderTypeQuay, status.ServiceProvider)
		assert.Equal(t, api.SPIAccessCheckAccessibilityUnknown, status.Accessibility)
		assert.Equal(t, api.SPIAccessCheckErrorRepoNotFound, status.ErrorReason)
		assert.NotEmpty(t, status.ErrorMessage)
	})

	t.Run("error code from quay", func(t *testing.T) {
		quay := &Quay{
			httpClient: httpClientMock{doFunc: func(req *http.Request) (*http.Response, error) {
				return &http.Response{StatusCode: http.StatusInternalServerError}, nil
			}},
			lookup:       lookupMock,
			tokenStorage: ts,
		}

		status, err := quay.CheckRepositoryAccess(context.TODO(), cl, accessCheck)

		assert.Error(t, err)
		assert.NotNil(t, status)
		assert.False(t, status.Accessible)
		assert.Equal(t, api.SPIRepoTypeContainerRegistry, status.Type)
		assert.Equal(t, api.ServiceProviderTypeQuay, status.ServiceProvider)
		assert.Equal(t, api.SPIAccessCheckAccessibilityUnknown, status.Accessibility)
		assert.Equal(t, api.SPIAccessCheckErrorUnknownError, status.ErrorReason)
		assert.NotEmpty(t, status.ErrorMessage)
	})

	t.Run("error on quay api request", func(t *testing.T) {
		quay := &Quay{
			httpClient: httpClientMock{doFunc: func(req *http.Request) (*http.Response, error) {
				return nil, fmt.Errorf("some error")
			}},
			lookup:       lookupMock,
			tokenStorage: ts,
		}

		status, err := quay.CheckRepositoryAccess(context.TODO(), cl, accessCheck)

		assert.Error(t, err)
		assert.NotNil(t, status)
		assert.False(t, status.Accessible)
		assert.Equal(t, api.SPIRepoTypeContainerRegistry, status.Type)
		assert.Equal(t, api.ServiceProviderTypeQuay, status.ServiceProvider)
		assert.Equal(t, api.SPIAccessCheckAccessibilityUnknown, status.Accessibility)
		assert.Equal(t, api.SPIAccessCheckErrorUnknownError, status.ErrorReason)
		assert.NotEmpty(t, status.ErrorMessage)
	})

	t.Run("bad repo url", func(t *testing.T) {
		quay := &Quay{}

		status, err := quay.CheckRepositoryAccess(context.TODO(), cl, &api.SPIAccessCheck{Spec: api.SPIAccessCheckSpec{RepoUrl: "https://quay.io"}})

		assert.NoError(t, err)
		assert.NotNil(t, status)
		assert.False(t, status.Accessible)
		assert.Equal(t, api.SPIRepoTypeContainerRegistry, status.Type)
		assert.Equal(t, api.ServiceProviderTypeQuay, status.ServiceProvider)
		assert.Equal(t, api.SPIAccessCheckAccessibilityUnknown, status.Accessibility)
		assert.Equal(t, api.SPIAccessCheckErrorBadURL, status.ErrorReason)
		assert.NotEmpty(t, status.ErrorMessage)
	})

	t.Run("lookup failed", func(t *testing.T) {

	})
}

type httpClientMock struct {
	doFunc func(req *http.Request) (*http.Response, error)
}

func (h httpClientMock) Do(req *http.Request) (*http.Response, error) {
	return h.doFunc(req)
}

func mockK8sClient(objects...client.Object) client.WithWatch {
	sch := runtime.NewScheme()
	utilruntime.Must(corev1.AddToScheme(sch))
	utilruntime.Must(api.AddToScheme(sch))
	return fake.NewClientBuilder().WithScheme(sch).WithObjects(objects...).Build()
}

type tokenFilterMock struct {
	matchesFunc func(ctx context.Context, matchable serviceprovider.Matchable, token *api.SPIAccessToken) (bool, error)
}

func (t tokenFilterMock) Matches(ctx context.Context, matchable serviceprovider.Matchable, token *api.SPIAccessToken) (bool, error) {
	return t.matchesFunc(ctx, matchable, token)
}

type tokenStorageMock struct {
	getFunc func(ctx context.Context, owner *api.SPIAccessToken) *api.Token
}

func (t tokenStorageMock) Store(ctx context.Context, owner *api.SPIAccessToken, token *api.Token) error {
	return nil
}

func (t tokenStorageMock) Get(ctx context.Context, owner *api.SPIAccessToken) (*api.Token, error) {
	return t.getFunc(ctx, owner), nil
}

func (t tokenStorageMock) Delete(ctx context.Context, owner *api.SPIAccessToken) error {
	return nil
}
I mean, the Albanian diaspora in Croatia is alright. Mainly own family businesses like bakeries, ice cream shops, etc. Never had any problems except this one dude is very primitive with his daughter. Wouldn't let her date and she ended up grounded and he took away all her electronics for being caught dating a Croat. Eventually she married some Turk and is living, ironically, in Switzerland now lol.  Lol
Oh, and is also a hypocrite, he was fine with his sons dating Croatian girls...Consumer point: Sometimes it hard to tell if my low energy is due to depression or due to normal day to day every activities. Whenever I start something new, say for instance a new job or something in my routine that changes my schedule and I come home exhausted and all I want to do is sit on the couch. Uh oh, rings a bell in my head, here comes my depression again. I have thought so much about things that show me I am depressed that sometimes I can overreact and think that being normal tired (ie: something that would make