Skip to content

Commit f7f40ee

Browse files
committed
Use latest SLCORE to generate tracking parameters for token creation
1 parent 81b85b8 commit f7f40ee

File tree

4 files changed

+48
-2
lines changed

4 files changed

+48
-2
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
<properties>
2626
<jdk.min.version>17</jdk.min.version>
27-
<sonarlint.core.version>10.25.0.81433</sonarlint.core.version>
27+
<sonarlint.core.version>10.25.0.81463</sonarlint.core.version>
2828
<slf4j.version>2.0.17</slf4j.version>
2929
<!-- Version used by Xodus -->
3030
<kotlin.version>1.6.10</kotlin.version>

src/main/java/org/sonarsource/sonarlint/ls/backend/BackendService.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.concurrent.CountDownLatch;
2929
import java.util.concurrent.ExecutionException;
3030
import java.util.function.Function;
31+
import javax.annotation.CheckForNull;
3132
import javax.annotation.Nullable;
3233
import org.eclipse.lsp4j.MessageParams;
3334
import org.eclipse.lsp4j.MessageType;
@@ -311,10 +312,19 @@ public CompletableFuture<GetMatchedSonarProjectBranchResponse> getMatchedSonarPr
311312
}
312313

313314
public CompletableFuture<HelpGenerateUserTokenResponse> helpGenerateUserToken(String serverUrl) {
314-
var params = new HelpGenerateUserTokenParams(serverUrl);
315+
var utm = maybeUtm(serverUrl);
316+
var params = new HelpGenerateUserTokenParams(serverUrl, utm);
315317
return initializedBackend().getConnectionService().helpGenerateUserToken(params);
316318
}
317319

320+
@CheckForNull
321+
private static HelpGenerateUserTokenParams.Utm maybeUtm(String serverUrl) {
322+
if (ServerConnectionSettings.isSonarCloudAlias(serverUrl)) {
323+
return new HelpGenerateUserTokenParams.Utm("referral", "sq-ide-product-vscode", "create-new-sqc-connection", "generate-token");
324+
}
325+
return null;
326+
}
327+
318328
public CompletableFuture<org.sonarsource.sonarlint.core.rpc.protocol.backend.issue.CheckStatusChangePermittedResponse>
319329
checkChangeIssueStatusPermitted(org.sonarsource.sonarlint.core.rpc.protocol.backend.issue.CheckStatusChangePermittedParams params) {
320330
return initializedBackend().getIssueService().checkStatusChangePermitted(params);

src/test/java/org/sonarsource/sonarlint/ls/mediumtests/AbstractLanguageServerMediumTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,7 @@ void clear() {
398398
scopeReadyForAnalysis.clear();
399399
suggestedBindings = null;
400400
isOpenInEditor = true;
401+
openedLinks.clear();
401402
}
402403

403404
@Override

src/test/java/org/sonarsource/sonarlint/ls/mediumtests/ConnectedModeMediumTests.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1516,4 +1516,39 @@ void should_allow_client_to_explicitly_ask_for_connection_suggestions() {
15161516
assertThat(connectionSuggestions.get(0).getConnectionSuggestion().getRight().getProjectKey()).isEqualTo(PROJECT_KEY);
15171517
});
15181518
}
1519+
1520+
@Test
1521+
void should_generate_token_for_sonarqube_server() {
1522+
var generateTokenParams = new SonarLintExtendedLanguageServer.GenerateTokenParams(mockWebServerExtension.url("/"));
1523+
1524+
lsProxy.generateToken(generateTokenParams);
1525+
1526+
awaitUntilAsserted(() -> {
1527+
assertThat(client.openedLinks).isNotEmpty();
1528+
});
1529+
1530+
assertThat(client.openedLinks)
1531+
.hasSize(1)
1532+
.allMatch(url -> url.startsWith(mockWebServerExtension.url("/sonarlint/auth"))
1533+
&& !url.contains("utm"));
1534+
}
1535+
1536+
@Test
1537+
void should_generate_token_for_sonarqube_cloud_with_link_tracking() {
1538+
var generateTokenParams = new SonarLintExtendedLanguageServer.GenerateTokenParams("https://sonarcloud.io");
1539+
1540+
lsProxy.generateToken(generateTokenParams);
1541+
1542+
awaitUntilAsserted(() -> {
1543+
assertThat(client.openedLinks).isNotEmpty();
1544+
});
1545+
1546+
assertThat(client.openedLinks)
1547+
.hasSize(1)
1548+
.allMatch(url -> url.startsWith("https://sonarcloud.io/sonarlint/auth")
1549+
&& url.contains("utm_medium=referral")
1550+
&& url.contains("utm_source=sq-ide-product-vscode")
1551+
&& url.contains("utm_content=create-new-sqc-connection")
1552+
&& url.contains("utm_term=generate-token"));
1553+
}
15191554
}

0 commit comments

Comments
 (0)