Skip to content

Commit d2042cb

Browse files
authored
Merge pull request #292 from IBM-Cloud/promote-v0.8.1
Release v0.8.1 promotion
2 parents 8c9d8a6 + a0af811 commit d2042cb

File tree

10 files changed

+340
-25
lines changed

10 files changed

+340
-25
lines changed

.secrets.baseline

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"files": "^.secrets.baseline$",
44
"lines": null
55
},
6-
"generated_at": "2021-12-02T17:22:21Z",
6+
"generated_at": "2021-12-06T21:18:44Z",
77
"plugins_used": [
88
{
99
"name": "AWSKeyDetector"
@@ -188,10 +188,18 @@
188188
],
189189
"bluemix/configuration/core_config/bx_config_test.go": [
190190
{
191-
"hashed_secret": "9507a758af9127f99a700b500657fd558b705dc9",
191+
"hashed_secret": "90919f1360ad1f9525de7a64061c105d061df1c8",
192192
"is_secret": false,
193193
"is_verified": false,
194-
"line_number": 303,
194+
"line_number": 377,
195+
"type": "JSON Web Token",
196+
"verified_result": null
197+
},
198+
{
199+
"hashed_secret": "40e89785a3d6a88c5ef431f64ec054b1d39e186e",
200+
"is_secret": false,
201+
"is_verified": false,
202+
"line_number": 393,
195203
"type": "JSON Web Token",
196204
"verified_result": null
197205
}
@@ -201,7 +209,7 @@
201209
"hashed_secret": "e85f6eac7402c010fcea6b6d024a1875ac213f99",
202210
"is_secret": false,
203211
"is_verified": false,
204-
"line_number": 221,
212+
"line_number": 241,
205213
"type": "Secret Keyword",
206214
"verified_result": null
207215
}
@@ -211,51 +219,85 @@
211219
"hashed_secret": "8d8e2cec529a6f642c25b4473b2adc8cde563c36",
212220
"is_secret": false,
213221
"is_verified": false,
214-
"line_number": 12,
222+
"line_number": 18,
215223
"type": "JSON Web Token",
216224
"verified_result": null
217225
},
218226
{
219227
"hashed_secret": "de89e230a57dd89a612cc8439c00d0001ffa6389",
220228
"is_secret": false,
221229
"is_verified": false,
222-
"line_number": 15,
230+
"line_number": 21,
223231
"type": "JSON Web Token",
224232
"verified_result": null
225233
},
226234
{
227235
"hashed_secret": "6a4b65a72c0da02a03007867d9838f4a256a384b",
228236
"is_secret": false,
229237
"is_verified": false,
230-
"line_number": 21,
238+
"line_number": 27,
231239
"type": "JSON Web Token",
232240
"verified_result": null
233241
},
234242
{
235243
"hashed_secret": "42be9b0e85dc9f0fcb42c69058b133fd23dfde2b",
236244
"is_secret": false,
237245
"is_verified": false,
238-
"line_number": 27,
246+
"line_number": 33,
239247
"type": "JSON Web Token",
240248
"verified_result": null
241249
},
242250
{
243251
"hashed_secret": "73f596843cdc77ecc6a0a4cdc5b5d89071ad1b79",
244252
"is_secret": false,
245253
"is_verified": false,
246-
"line_number": 31,
254+
"line_number": 37,
247255
"type": "JSON Web Token",
248256
"verified_result": null
249257
},
250258
{
251-
"hashed_secret": "63a47776714d85556701c61dd731a302ed132385",
259+
"hashed_secret": "c017c618a0ef5209f2cbbb367a7c68eb0404e043",
252260
"is_secret": false,
253261
"is_verified": false,
254262
"line_number": 47,
263+
"type": "JSON Web Token",
264+
"verified_result": null
265+
},
266+
{
267+
"hashed_secret": "6160045cbf6bfe6c1669311f5720fd73cbe56243",
268+
"is_secret": false,
269+
"is_verified": false,
270+
"line_number": 57,
271+
"type": "JSON Web Token",
272+
"verified_result": null
273+
},
274+
{
275+
"hashed_secret": "63a47776714d85556701c61dd731a302ed132385",
276+
"is_secret": false,
277+
"is_verified": false,
278+
"line_number": 76,
255279
"type": "Hex High Entropy String",
256280
"verified_result": null
257281
}
258282
],
283+
"bluemix/configuration/core_config/uaa_token_test.go": [
284+
{
285+
"hashed_secret": "c017c618a0ef5209f2cbbb367a7c68eb0404e043",
286+
"is_secret": false,
287+
"is_verified": false,
288+
"line_number": 22,
289+
"type": "JSON Web Token",
290+
"verified_result": null
291+
},
292+
{
293+
"hashed_secret": "3c1dbf49c59ee96e6a9ac90bea40471c0cb8b4f1",
294+
"is_secret": false,
295+
"is_verified": false,
296+
"line_number": 32,
297+
"type": "JSON Web Token",
298+
"verified_result": null
299+
}
300+
],
259301
"bluemix/env.go": [
260302
{
261303
"hashed_secret": "33e5e588d24c979db687c950cf004784e95ddb1b",

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ We follow the offical [CodeReviewComments](https://github.com/golang/go/wiki/Cod
1717
Make sure you have good unit test. Run `go test -cover $(go list ./...)`, and ensure coverage is above 80% for major packages (aka packages other than i18n, fakes, docs...).
1818

1919
#### Secret Detection
20-
This project uses the IBM Detect Secrets Module. Install the module, by following these [instructions](https://github.com/ibm/detect-secrets#installupgrade-module). Once installed, enable the pre-commit secret detection hook by following these [instructions](https://github.com/ibm/detect-secrets#installupgrade-module) to ensure no secrets are committed to this repo.
20+
This project uses the IBM Detect Secrets Module. Install the module, by following these [instructions](https://github.com/ibm/detect-secrets#installupgrade-module). Once installed, enable the pre-commit secret detection hook by following these [instructions](https://github.com/ibm/detect-secrets#prevention-pre-commit-hook) to ensure no secrets are committed to this repo.
2121

2222

2323
#### Commit Message

bluemix/configuration/core_config/bx_config.go

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -296,11 +296,34 @@ func (c *bxConfig) IAMID() (guid string) {
296296
return
297297
}
298298

299-
func (c *bxConfig) IsLoggedIn() (loggedIn bool) {
300-
c.read(func() {
301-
loggedIn = c.data.IAMToken != ""
302-
})
303-
return
299+
// IsLoggedIn will check if the user is logged in. To determine if the user is logged in both the
300+
// token and the refresh token will be checked
301+
// If token is near expiration or expired, and a refresh token is present attempt to refresh the token.
302+
// If token refresh was successful, check if the new IAM token is valid. If valid, user is logged in,
303+
// otherwise user can be considered logged out. If refresh failed, then user is considered logged out.
304+
// If no refresh token is present, and token is expired, then user is considered logged out.
305+
func (c *bxConfig) IsLoggedIn() bool {
306+
if token, refresh := c.IAMToken(), c.IAMRefreshToken(); token != "" || refresh != "" {
307+
iamTokenInfo := NewIAMTokenInfo(token)
308+
if iamTokenInfo.hasExpired() && refresh != "" {
309+
repo := newRepository(c, nil)
310+
if _, err := repo.RefreshIAMToken(); err != nil {
311+
return false
312+
}
313+
// Check again to make sure that the new token has not expired
314+
if iamTokenInfo = NewIAMTokenInfo(c.IAMToken()); iamTokenInfo.hasExpired() {
315+
return false
316+
}
317+
318+
return true
319+
} else if iamTokenInfo.hasExpired() && refresh == "" {
320+
return false
321+
} else {
322+
return true
323+
}
324+
}
325+
326+
return false
304327
}
305328

306329
func (c *bxConfig) CurrentAccount() (account models.Account) {

bluemix/configuration/core_config/bx_config_test.go

Lines changed: 85 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package core_config_test
22

33
import (
4+
"fmt"
45
"io/ioutil"
6+
"net/http"
7+
"net/http/httptest"
58
"os"
69
"testing"
710

@@ -298,9 +301,80 @@ func TestVPCCRITokenURL(t *testing.T) {
298301
t.Cleanup(cleanupConfigFiles)
299302
}
300303

304+
func TestIsLoggedIn(t *testing.T) {
305+
config := prepareConfigForCLI(`{"UsageStatsEnabledLastUpdate": "2021-11-29T12:23:43.519017+08:00","UsageStatsEnabled": true}`, t)
306+
refresh := "eyJhbGciOiJydCJ9.eyJzZXNzaW9uX2lkIjoiQy02YzUzN2U3My0wMjAxLTQ0YmUtODZlZC0zMDY0YTUwMTMwNGYiLCJpYW1faWQiOiJJQk1pZC02NjYwMDE1UktKIiwiYWNjb3VudF9pZCI6IjYwOWMxNGI4NjhmNTQ1OWM5YmZkOGJhOGI4OTZiYmE5In0._WLlp2iYEpA9PTStswtoXPj5GhiXwrEB0EhEVIF-SKu34qL3-gmfjIeN7RJGT--nwvmuuDfcVIdhA2j7MCmjPqk8YUMVmvR38YY7pA81sk7ynBOeJSg_D2_QCDeH-p1waMZlmedvzhVhSJAqhsorQYOR5GMDmz-kiwOwbQ0ewBiX7Bkc5S_49spJG7T5qsBwLjd8EXjCFGGWg4MS-QXn1SnVKBJZ82VyRL8lSTrMCC2DGseA29ptLOhJJldKVjDrfgLAMDILge08Rbz5NZplwkBRLYT7bvMEaO1cj_we6Ya1DPEO70rYkkIJQ-UtYyOUMEVw4th1LKHkKFNYK4oR_it5DpX-w4jTi49yNbV8ragDtmfUQy1dQ7Vxv5Xc7IsF8htFboxtqYwqRi32M0821ftoGYbxZRX2W6BsijmaBUpE_iaBV39ulFJrvW4Uf9fp-GvjIkZo3iJZN8syrr6LQ_RicB73s3rhZ1tIA7i4w7lapSMAgGH2xqufh6Ca31YBN7Karj0Cy6CxX_2P4aLPlAgZL4qJK3gOz56h4hWqmLhurjf5bn0uPXznPAMAoWpim2MwvSSH3EPRbxUyqGusUe-AXhcY_bTjfWibQJ59wL0q3s6gNwkn1y0RKEdlGoc1ofkJU9XfJWc_HCrZ0Lkq5PjQDqk3WkhkxxVGuD92Ha8LNlff-u_hqpBT86nV7D9r9das0vl4etJA6QK8FJMJ5prRNUpKmrVWpMJrSCQr5o8FxvB94yC0H6FcvDTdIl2slVtOO5wtOkaqtcHLm2trpQO6T3nyJQMWd9rUalJjWP32Gpv5yBSEHKC_toJk050oVemk8fis2B5_Qlb86b5vJsnAMqhBC4SttBztlPf0vIDlReMle_HHRnNXUl58Eaady9jgaGqD2b-dU20wjX8p6SLtfMuYbN0hWhYl2_hP2jfzY4zCtQtO3nGNYKeHy_H678NK_WTjvvqvLighORbbi0KINDEVWqepxLxBnzXywWrSMki6CF6016nUh49DMpEpSeziriuxYllg_j2Uwcl396ecuGxkuN9iziHt9qKhnjS4oyjRo8pE3lGw6oc5DMBgxZcpgPJ8QHGlti1rs8vxdCxl2XxFu-Rsckj9jKjTeULKRV4voQKmiFoFELbgodp91fanimBVCLdBygLhm0v04o5tw6J6NkLnu4GPlFvASTLTG9PydIdSnWvP8sXR0T8PS_4l4ot96N2jqd-UKcaQgk5A-fo3NVfTELMz9CvdFYH1r33GtQvO2BtWmlJxU24wge5KtHVwmXe1BFZOxwE_nfV2AMxY-SplWh8lkjM34vJ7YUw8kmvjdSB7nFjCAyxmhPA" // pragma: allowlist secret
307+
expiredToken := "eyJpYW1faWQiOiJJQk1pZC02NjYwMDE1UktKIiwiaWQiOiJJQk1pZC02NjYwMDE1UktKIiwicmVhbG1pZCI6IklCTWlkIiwic2Vzc2lvbl9pZCI6IkMtMDBkNDIyYjAtYzcyZC00MzNmLWE0YmUtMzc2ZjkyZDEyNDliIiwianRpIjoiNzNmMzVmNGQtZmI2Ny00NTc3LThlNGMtNDE3YzA5MDYwNDU3IiwiaWRlbnRpZmllciI6IjY2NjAwMTVSS0oiLCJnaXZlbl9uYW1lIjoiTkFOQSIsImZhbWlseV9uYW1lIjoiQU1GTyIsIm5hbWUiOiJOQU5BIEFNRk8iLCJlbWFpbCI6Im5vYW1mb0BpYm0uY29tIiwic3ViIjoibm9hbWZvQGlibS5jb20iLCJhdXRobiI6eyJzdWIiOiJub2FtZm9AaWJtLmNvbSIsImlhbV9pZCI6IklCTWlkLTY2NjAwMTVSS0oiLCJuYW1lIjoiTkFOQSBBTUZPIiwiZ2l2ZW5fbmFtZSI6Ik5BTkEiLCJmYW1pbHlfbmFtZSI6IkFNRk8iLCJlbWFpbCI6Im5vYW1mb0BpYm0uY29tIn0sImFjY291bnQiOnsiYm91bmRhcnkiOiJnbG9iYWwiLCJ2YWxpZCI6dHJ1ZSwiYnNzIjoiMDY3OGUzOWY3ZWYxNDkyODk1OWM0YzFhOGY2YTdiYmYifSwiaWF0IjoxNjM1NDQyMDI3LCJleHAiOjE2MzU0NDI5MjcsImlzcyI6Imh0dHBzOi8vaWFtLmNsb3VkLmlibS5jb20vaWRlbnRpdHkiLCJncmFudF90eXBlIjoidXJuOmlibTpwYXJhbXM6b2F1dGg6Z3JhbnQtdHlwZTpwYXNzY29kZSIsInNjb3BlIjoiaWJtIG9wZW5pZCIsImNsaWVudF9pZCI6ImJ4IiwiYWNyIjozLCJhbXIiOlsidG90cCIsIm1mYSIsIm90cCIsInB3ZCJdfQ.RsBd371ACEKOlhkTJngqBVDCY90Z-MT-iYb1OiLA5OpLYPZunR0saHUzBLh2LxnV-Jo0oeitPBmIK38jDk8MCb-rZa3qYNB2qe0WgO50bCMLKgwhKqJwVM6jMMpg4vg6up8kH8Ftc61kivaa1GrJKmQkonnHrjgrLo5IB2yfkMEAbUAMPb_jcRfjEsSP44I-Vx3dYIVSZs8bIufkgmDbJjlMmdhRenh57iwtQ7uImFgK2d-qQ-7sWLvhfzj2VdBLRHPa-dWYlrVgOAMpk6SCMz8wh6LcDUx9LdNKHpxMGCXpGT_UUWvwYqBuLTI3nmkIWIb_Cqa6al7-gQKPTC00Fw"
308+
newToken := "eyJraWQiOiIyMDE3MTAzMC0wMDowMDowMCIsImFsZyI6IkhTMjU2In0.eyJpYW1faWQiOiJpYW0tUHJvZmlsZS05NDQ5N2QwZC0yYWMzLTQxYmYtYTk5My1hNDlkMWIxNDYyN2MiLCJpZCI6IklCTWlkLXRlc3QiLCJyZWFsbWlkIjoiaWFtIiwianRpIjoiMDRkMjBiMjUtZWUyZC00MDBmLTg2MjMtOGNkODA3MGI1NDY4IiwiaWRlbnRpZmllciI6IlByb2ZpbGUtOTQ0OTdkMGQtMmFjMy00MWJmLWE5OTMtYTQ5ZDFiMTQ2MjdjIiwibmFtZSI6Ik15IFByb2ZpbGUiLCJzdWIiOiJQcm9maWxlLTk0NDk3ZDBkLTJhYzMtNDFiZi1hOTkzLWE0OWQxYjE0NjI3YyIsInN1Yl90eXBlIjoiUHJvZmlsZSIsImF1dGhuIjp7InN1YiI6ImNybjp2MTpzdGFnaW5nOnB1YmxpYzppYW0taWRlbnRpdHk6OmEvMThlMzAyMDc0OWNlNDc0NGIwYjQ3MjQ2NmQ2MWZkYjQ6OmNvbXB1dGVyZXNvdXJjZTpGYWtlLUNvbXB1dGUtUmVzb3VyY2UiLCJpYW1faWQiOiJjcm4tY3JuOnYxOnN0YWdpbmc6cHVibGljOmlhbS1pZGVudGl0eTo6YS8xOGUzMDIwNzQ5Y2U0NzQ0YjBiNDcyNDY2ZDYxZmRiNDo6Y29tcHV0ZXJlc291cmNlOkZha2UtQ29tcHV0ZS1SZXNvdXJjZSIsIm5hbWUiOiJteV9jb21wdXRlX3Jlc291cmNlIn0sImFjY291bnQiOnsiYm91bmRhcnkiOiJnbG9iYWwiLCJ2YWxpZCI6dHJ1ZSwiYnNzIjoiZmFrZV9ic3MifSwiaWF0IjoxNjI5OTI5NDYzLCJleHAiOjgwMjk5MzMwNjMsImlzcyI6Imh0dHBzOi8vaWFtLmNsb3VkLmlibS5jb20vaWRlbnRpdHkiLCJncmFudF90eXBlIjoidXJuOmlibTpwYXJhbXM6b2F1dGg6Z3JhbnQtdHlwZTpjci10b2tlbiIsInNjb3BlIjoiaWJtIG9wZW5pZCIsImNsaWVudF9pZCI6ImJ4In0.ACeIK_8Wi0QmgQ19w4J2OA0OKgC4zb6M6PuGuPTEY_E"
309+
tests := []struct {
310+
name string
311+
token string
312+
newToken string
313+
refresh string
314+
newRefresh string
315+
isLoggedIn bool
316+
}{
317+
{
318+
name: "token is expired and refresh token is present",
319+
token: expiredToken,
320+
newToken: "bearer " + newToken, // on refresh the bearer header is append to the token
321+
refresh: refresh,
322+
newRefresh: refresh,
323+
isLoggedIn: true,
324+
},
325+
{
326+
name: "token is expired and refresh token is NOT present",
327+
token: expiredToken,
328+
newToken: expiredToken,
329+
refresh: "",
330+
newRefresh: "",
331+
isLoggedIn: false,
332+
},
333+
{
334+
name: "token is not expired",
335+
token: newToken,
336+
newToken: newToken,
337+
refresh: refresh,
338+
newRefresh: refresh,
339+
isLoggedIn: true,
340+
},
341+
{
342+
name: "token is not expired and refresh is NOT present",
343+
token: newToken,
344+
newToken: newToken,
345+
refresh: "",
346+
newRefresh: "",
347+
isLoggedIn: true,
348+
},
349+
}
350+
351+
IAMEndpoints := models.Endpoints{}
352+
for _, test := range tests {
353+
t.Run(test.name, func(t *testing.T) {
354+
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
355+
w.WriteHeader(200)
356+
fmt.Fprintf(w, "{\"access_token\": \"%s\", \"refresh_token\": \"%s\", \"token_type\": \"bearer\"}", newToken, refresh)
357+
}))
358+
defer ts.Close()
359+
360+
IAMEndpoints.PublicEndpoint = ts.URL
361+
IAMEndpoints.PrivateEndpoint = ts.URL
362+
IAMEndpoints.PrivateVPCEndpoint = ts.URL
363+
364+
config.SetIAMToken(test.token)
365+
config.SetIAMRefreshToken(test.refresh)
366+
config.SetIAMEndpoints(IAMEndpoints)
367+
assert.Equal(t, test.isLoggedIn, config.IsLoggedIn())
368+
assert.Equal(t, test.newToken, config.IAMToken())
369+
assert.Equal(t, test.newRefresh, config.IAMRefreshToken())
370+
t.Cleanup(cleanupConfigFiles)
371+
})
372+
}
373+
}
374+
301375
func TestIsLoggedInAsProfile(t *testing.T) {
302376
config := prepareConfigForCLI(`{"UsageStatsEnabledLastUpdate": "2020-03-29T12:23:43.519017+08:00","UsageStatsEnabled": true}`, t)
303-
testIAMCRTokenData := "Bearer eyJraWQiOiIyMDE3MTAzMC0wMDowMDowMCIsImFsZyI6IlJTMjU2In0.ewoJImlhbV9pZCI6ICJpYW0tUHJvZmlsZS05NDQ5N2QwZC0yYWMzLTQxYmYtYTk5My1hNDlkMWIxNDYyN2MiLAoJImlkIjogIklCTWlkLXRlc3QiLAoJInJlYWxtaWQiOiAiaWFtIiwKCSJqdGkiOiAiMDRkMjBiMjUtZWUyZC00MDBmLTg2MjMtOGNkODA3MGI1NDY4IiwKCSJpZGVudGlmaWVyIjogIlByb2ZpbGUtOTQ0OTdkMGQtMmFjMy00MWJmLWE5OTMtYTQ5ZDFiMTQ2MjdjIiwKCSJuYW1lIjogIk15IFByb2ZpbGUiLAoJInN1YiI6ICJQcm9maWxlLTk0NDk3ZDBkLTJhYzMtNDFiZi1hOTkzLWE0OWQxYjE0NjI3YyIsCgkic3ViX3R5cGUiOiAiUHJvZmlsZSIsCgkiYXV0aG4iOiB7CgkgICJzdWIiOiAiY3JuOnYxOnN0YWdpbmc6cHVibGljOmlhbS1pZGVudGl0eTo6YS8xOGUzMDIwNzQ5Y2U0NzQ0YjBiNDcyNDY2ZDYxZmRiNDo6Y29tcHV0ZXJlc291cmNlOkZha2UtQ29tcHV0ZS1SZXNvdXJjZSIsCgkgICJpYW1faWQiOiAiY3JuLWNybjp2MTpzdGFnaW5nOnB1YmxpYzppYW0taWRlbnRpdHk6OmEvMThlMzAyMDc0OWNlNDc0NGIwYjQ3MjQ2NmQ2MWZkYjQ6OmNvbXB1dGVyZXNvdXJjZTpGYWtlLUNvbXB1dGUtUmVzb3VyY2UiLAoJICAibmFtZSI6ICJteV9jb21wdXRlX3Jlc291cmNlIgoJfSwKCSJhY2NvdW50IjogewoJICAiYm91bmRhcnkiOiAiZ2xvYmFsIiwKCSAgInZhbGlkIjogdHJ1ZSwKCSAgImJzcyI6ICJmYWtlX2JzcyIKCX0sCgkiaWF0IjogMTYyOTkyOTQ2MywKCSJleHAiOiAxNjI5OTMzMDYzLAoJImlzcyI6ICJodHRwczovL2lhbS5jbG91ZC5pYm0uY29tL2lkZW50aXR5IiwKCSJncmFudF90eXBlIjogInVybjppYm06cGFyYW1zOm9hdXRoOmdyYW50LXR5cGU6Y3ItdG9rZW4iLAoJInNjb3BlIjogImlibSBvcGVuaWQiLAoJImNsaWVudF9pZCI6ICJieCIKICB9.CuSOKifh4DvE__bjwDsn5BKmAHF2NaXznoiA1KG-2s2njbJs9nQdOJ3lkOnM77BqvLEpu2cwsmhi4Gsdy-MiJ6ACub0A5zyB-D95IXsGYa5tbFQBLbPpmFDAgAhLG5gXlVnU7nyIJN17Slm3pcWSNXEdWcsA1tgDkC9gQc_rpDhUfhnFeGA2LpvVMtRDolcOrbRuWN4NEbBOwdTbG5-6ijZ5Ag2z3lVmlQZ_6BLBCSVM8WlI8eIGICqCx0HYsmCiMlSqZ-4fkpg2DBYYYX_XsMQlamGynuPeoiBckJIyGEgsJD2egYN2bOUNLcn5htSCGxoJ4HJfXJ70_iCzmovb0w"
377+
testIAMCRTokenData := "Bearer eyJraWQiOiIyMDE3MTAzMC0wMDowMDowMCIsImFsZyI6IkhTMjU2In0.eyJpYW1faWQiOiJpYW0tUHJvZmlsZS05NDQ5N2QwZC0yYWMzLTQxYmYtYTk5My1hNDlkMWIxNDYyN2MiLCJpZCI6IklCTWlkLXRlc3QiLCJyZWFsbWlkIjoiaWFtIiwianRpIjoiMDRkMjBiMjUtZWUyZC00MDBmLTg2MjMtOGNkODA3MGI1NDY4IiwiaWRlbnRpZmllciI6IlByb2ZpbGUtOTQ0OTdkMGQtMmFjMy00MWJmLWE5OTMtYTQ5ZDFiMTQ2MjdjIiwibmFtZSI6Ik15IFByb2ZpbGUiLCJzdWIiOiJQcm9maWxlLTk0NDk3ZDBkLTJhYzMtNDFiZi1hOTkzLWE0OWQxYjE0NjI3YyIsInN1Yl90eXBlIjoiUHJvZmlsZSIsImF1dGhuIjp7InN1YiI6ImNybjp2MTpzdGFnaW5nOnB1YmxpYzppYW0taWRlbnRpdHk6OmEvMThlMzAyMDc0OWNlNDc0NGIwYjQ3MjQ2NmQ2MWZkYjQ6OmNvbXB1dGVyZXNvdXJjZTpGYWtlLUNvbXB1dGUtUmVzb3VyY2UiLCJpYW1faWQiOiJjcm4tY3JuOnYxOnN0YWdpbmc6cHVibGljOmlhbS1pZGVudGl0eTo6YS8xOGUzMDIwNzQ5Y2U0NzQ0YjBiNDcyNDY2ZDYxZmRiNDo6Y29tcHV0ZXJlc291cmNlOkZha2UtQ29tcHV0ZS1SZXNvdXJjZSIsIm5hbWUiOiJteV9jb21wdXRlX3Jlc291cmNlIn0sImFjY291bnQiOnsiYm91bmRhcnkiOiJnbG9iYWwiLCJ2YWxpZCI6dHJ1ZSwiYnNzIjoiZmFrZV9ic3MifSwiaWF0IjoxNjI5OTI5NDYzLCJleHAiOjgwMjk5MzMwNjMsImlzcyI6Imh0dHBzOi8vaWFtLmNsb3VkLmlibS5jb20vaWRlbnRpdHkiLCJncmFudF90eXBlIjoidXJuOmlibTpwYXJhbXM6b2F1dGg6Z3JhbnQtdHlwZTpjci10b2tlbiIsInNjb3BlIjoiaWJtIG9wZW5pZCIsImNsaWVudF9pZCI6ImJ4In0.ACeIK_8Wi0QmgQ19w4J2OA0OKgC4zb6M6PuGuPTEY_E"
304378

305379
// check
306380
checkUsageStats(true, true, config, t)
@@ -313,6 +387,16 @@ func TestIsLoggedInAsProfile(t *testing.T) {
313387
t.Cleanup(cleanupConfigFiles)
314388
}
315389

390+
func TestIsLoggedInWithServiceID(t *testing.T) {
391+
// Setup
392+
config := prepareConfigForCLI(`{"UsageStatsEnabledLastUpdate": "2020-03-29T12:23:43.519017+08:00","UsageStatsEnabled": true}`, t)
393+
testIAMCRTokenData := "eyJraWQiOiIyMDE3MTAzMC0wMDowMDowMCIsImFsZyI6IkhTMjU2In0.eyJpYW1faWQiOiJpYW0tUHJvZmlsZS05NDQ5N2QwZC0yYWMzLTQxYmYtYTk5My1hNDlkMWIxNDYyN2MiLCJpZCI6IklCTWlkLXRlc3QiLCJyZWFsbWlkIjoiaWFtIiwianRpIjoiMDRkMjBiMjUtZWUyZC00MDBmLTg2MjMtOGNkODA3MGI1NDY4IiwiaWRlbnRpZmllciI6IlByb2ZpbGUtOTQ0OTdkMGQtMmFjMy00MWJmLWE5OTMtYTQ5ZDFiMTQ2MjdjIiwibmFtZSI6Ik15IFNlcnZpY2UiLCJzdWIiOiJQcm9maWxlLTk0NDk3ZDBkLTJhYzMtNDFiZi1hOTkzLWE0OWQxYjE0NjI3YyIsInN1Yl90eXBlIjoiU2VydmljZUlkIiwiYXV0aG4iOnsic3ViIjoiY3JuOnYxOnN0YWdpbmc6cHVibGljOmlhbS1pZGVudGl0eTo6YS8xOGUzMDIwNzQ5Y2U0NzQ0YjBiNDcyNDY2ZDYxZmRiNDo6Y29tcHV0ZXJlc291cmNlOkZha2UtQ29tcHV0ZS1SZXNvdXJjZSIsImlhbV9pZCI6ImNybi1jcm46djE6c3RhZ2luZzpwdWJsaWM6aWFtLWlkZW50aXR5OjphLzE4ZTMwMjA3NDljZTQ3NDRiMGI0NzI0NjZkNjFmZGI0Ojpjb21wdXRlcmVzb3VyY2U6RmFrZS1Db21wdXRlLVJlc291cmNlIiwibmFtZSI6Im15X2NvbXB1dGVfcmVzb3VyY2UifSwiYWNjb3VudCI6eyJib3VuZGFyeSI6Imdsb2JhbCIsInZhbGlkIjp0cnVlLCJic3MiOiJmYWtlX2JzcyJ9LCJpYXQiOjE2Mjk5Mjk0NjMsImV4cCI6MjYyOTkzMzA2MywiaXNzIjoiaHR0cHM6Ly9pYW0uY2xvdWQuaWJtLmNvbS9pZGVudGl0eSIsImdyYW50X3R5cGUiOiJ1cm46aWJtOnBhcmFtczpvYXV0aDpncmFudC10eXBlOmNyLXRva2VuIiwic2NvcGUiOiJpYm0gb3BlbmlkIiwiY2xpZW50X2lkIjoiYngifQ.n3WF2O2KMmhW0nBDN2CooOwgcSDGI2qK858BzaHB6YI"
394+
config.SetIAMToken(testIAMCRTokenData)
395+
396+
// Assertions
397+
assert.True(t, config.IsLoggedInWithServiceID())
398+
}
399+
316400
func TestIsLoggedInAsCRI(t *testing.T) {
317401
config := prepareConfigForCLI(`{"UsageStatsEnabledLastUpdate": "2020-03-29T12:23:43.519017+08:00","UsageStatsEnabled": true}`, t)
318402

0 commit comments

Comments
 (0)