Skip to content

Commit e05c56c

Browse files
committed
refactor tests
1 parent 43a2779 commit e05c56c

11 files changed

+1038
-588
lines changed

.testcoverage.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ profile: cover.out
1111
threshold:
1212
# (optional; default 0)
1313
# Minimum coverage percentage required for individual files.
14-
file: 70
14+
file: 85
1515

1616
# (optional; default 0)
1717
# Minimum coverage percentage required for each package.
18-
package: 70
18+
package: 90
1919

2020
# (optional; default 0)
2121
# Minimum overall project coverage percentage required.
22-
total: 80
22+
total: 85
2323

2424
# Holds regexp rules which will override thresholds for matched files or packages
2525
# using their paths.
@@ -28,9 +28,9 @@ threshold:
2828
# new threshold to it. If project has multiple rules that match same path,
2929
# override rules should be listed in order from specific to more general rules.
3030
override:
31-
# Increase coverage threshold to 100% for `foo` package
32-
# (default is 80, as configured above in this example).
33-
- path: ^pkg/lib/foo$
31+
- path: ^internal$
32+
threshold: 95
33+
- path: ^token$
3434
threshold: 100
3535

3636
# Holds regexp rules which will exclude matched files or packages

credentials_provider.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ var _ auth.StreamingCredentialsProvider = (*entraidCredentialsProvider)(nil)
1919
type entraidCredentialsProvider struct {
2020
options CredentialsProviderOptions // Configuration options for the provider.
2121

22-
tokenManager manager.TokenManager // Manages token retrieval.
23-
cancelTokenManager manager.CancelFunc // Function to cancel the token manager.
22+
tokenManager manager.TokenManager // Manages token retrieval.
23+
closeTokenManager manager.CloseFunc // Function to cancel the token manager.
2424

2525
// listeners is a slice of listeners that are notified when the token manager receives a new token.
2626
listeners []auth.CredentialsListener // Slice of listeners notified on token updates.
@@ -65,6 +65,12 @@ func (e *entraidCredentialsProvider) onTokenError(err error) {
6565
//
6666
// Note: If the listener is already subscribed, it will not receive duplicate notifications.
6767
func (e *entraidCredentialsProvider) Subscribe(listener auth.CredentialsListener) (auth.Credentials, auth.CancelProviderFunc, error) {
68+
// First try to get a token, only then subscribe the listener.
69+
token, err := e.tokenManager.GetToken(false)
70+
if err != nil {
71+
return nil, nil, err
72+
}
73+
6874
e.rwLock.Lock()
6975
// Check if the listener is already in the list of listeners.
7076
alreadySubscribed := false
@@ -81,15 +87,6 @@ func (e *entraidCredentialsProvider) Subscribe(listener auth.CredentialsListener
8187
}
8288
e.rwLock.Unlock()
8389

84-
token, err := e.tokenManager.GetToken(false)
85-
if err != nil {
86-
//go listener.OnError(err)
87-
return nil, nil, err
88-
}
89-
90-
// Notify the listener with the credentials.
91-
//go listener.OnNext(token)
92-
9390
cancel := func() error {
9491
// Remove the listener from the list of listeners.
9592
e.rwLock.Lock()
@@ -105,11 +102,14 @@ func (e *entraidCredentialsProvider) Subscribe(listener auth.CredentialsListener
105102
// Clear the listeners slice if it's empty
106103
if len(e.listeners) == 0 {
107104
e.listeners = make([]auth.CredentialsListener, 0)
108-
if e.cancelTokenManager != nil {
109-
defer func() {
110-
e.cancelTokenManager = nil
111-
}()
112-
return e.cancelTokenManager()
105+
if e.closeTokenManager != nil {
106+
err := e.closeTokenManager()
107+
if err != nil {
108+
return fmt.Errorf("couldn't cancel token manager: %w", err)
109+
}
110+
// Set the cancelTokenManager to nil to indicate that it has been canceled.
111+
// This prevents multiple calls to cancelTokenManager.
112+
e.closeTokenManager = nil
113113
}
114114
}
115115
return nil
@@ -138,6 +138,6 @@ func NewCredentialsProvider(tokenManager manager.TokenManager, options Credentia
138138
if err != nil {
139139
return nil, fmt.Errorf("couldn't start token manager: %w", err)
140140
}
141-
cp.cancelTokenManager = cancelTokenManager
141+
cp.closeTokenManager = cancelTokenManager
142142
return cp, nil
143143
}

0 commit comments

Comments
 (0)