(t *testing.T)
| 941 | } |
| 942 | |
| 943 | func TestUserSettingJSONFieldsEdgeCases(t *testing.T) { |
| 944 | t.Parallel() |
| 945 | ctx := context.Background() |
| 946 | ts := NewTestingStore(ctx, t) |
| 947 | user, err := createTestingHostUser(ctx, ts) |
| 948 | require.NoError(t, err) |
| 949 | |
| 950 | // Case 1: Webhook with special characters and Unicode in Title and URL |
| 951 | specialWebhook := &storepb.WebhooksUserSetting_Webhook{ |
| 952 | Id: "wh-special", |
| 953 | Title: `My "Special" & <Webhook> 🚀`, |
| 954 | Url: "https://example.com/hook?query=你好¶m=\"value\"", |
| 955 | } |
| 956 | err = ts.AddUserWebhook(ctx, user.ID, specialWebhook) |
| 957 | require.NoError(t, err) |
| 958 | |
| 959 | webhooks, err := ts.GetUserWebhooks(ctx, user.ID) |
| 960 | require.NoError(t, err) |
| 961 | require.Len(t, webhooks, 1) |
| 962 | require.Equal(t, specialWebhook.Title, webhooks[0].Title) |
| 963 | require.Equal(t, specialWebhook.Url, webhooks[0].Url) |
| 964 | |
| 965 | // Case 2: PAT with special description |
| 966 | specialPAT := &storepb.PersonalAccessTokensUserSetting_PersonalAccessToken{ |
| 967 | TokenId: "pat-special", |
| 968 | TokenHash: "hash-special", |
| 969 | Description: "Token for 'CLI' \n & \"API\" \t with unicode 🔑", |
| 970 | } |
| 971 | err = ts.AddUserPersonalAccessToken(ctx, user.ID, specialPAT) |
| 972 | require.NoError(t, err) |
| 973 | |
| 974 | pats, err := ts.GetUserPersonalAccessTokens(ctx, user.ID) |
| 975 | require.NoError(t, err) |
| 976 | require.Len(t, pats, 1) |
| 977 | require.Equal(t, specialPAT.Description, pats[0].Description) |
| 978 | |
| 979 | // Case 3: Refresh Token with special description |
| 980 | specialRefreshToken := &storepb.RefreshTokensUserSetting_RefreshToken{ |
| 981 | TokenId: "rt-special", |
| 982 | Description: "Browser: Firefox (Nightly) / OS: Linux 🐧", |
| 983 | } |
| 984 | err = ts.AddUserRefreshToken(ctx, user.ID, specialRefreshToken) |
| 985 | require.NoError(t, err) |
| 986 | |
| 987 | tokens, err := ts.GetUserRefreshTokens(ctx, user.ID) |
| 988 | require.NoError(t, err) |
| 989 | require.Len(t, tokens, 1) |
| 990 | require.Equal(t, specialRefreshToken.Description, tokens[0].Description) |
| 991 | |
| 992 | ts.Close() |
| 993 | } |
nothing calls this directly
no test coverage detected