public async Task GetRoslynExportProfileAsync_WhenRequestIsSuccesful_ReturnsIsSuccessAndNotNullData()
        {
            var request = new RoslynExportProfileRequest {
                QualityProfileName = "qp", LanguageKey = "cs"
            };

            await Method_WhenRequestIsSuccesful_ReturnsIsSuccessAndNotNullData(
                (c, t) => c.GetRoslynExportProfileAsync(request, t),
                @"<?xml version=""1.0"" encoding=""utf-8""?>
<RoslynExportProfile Version=""1.0"">
  <Configuration>
    <RuleSet Name=""Rules for SonarQube"" Description=""This rule set was automatically generated from SonarQube."" ToolsVersion=""14.0"">
      <Rules AnalyzerId=""SonarAnalyzer.CSharp"" RuleNamespace=""SonarAnalyzer.CSharp"">
        <Rule Id=""S121"" Action=""Warning"" />
      </Rules>
    </RuleSet>
    <AdditionalFiles>
      <AdditionalFile FileName=""SonarLint.xml"" />
    </AdditionalFiles>
  </Configuration>
  <Deployment>
    <Plugins>
      <Plugin Key=""csharp"" Version=""6.4.0.3322"" StaticResourceName=""SonarAnalyzer-6.4.0.3322.zip"" />
    </Plugins>
    <NuGetPackages>
      <NuGetPackage Id=""SonarAnalyzer.CSharp"" Version=""6.4.0.3322"" />
    </NuGetPackages>
  </Deployment>
</RoslynExportProfile>",
                result => { });
        }
        public void GetRoslynExportProfileAsync_WhenExceptionThrown_PropagateIt()
        {
            var request = new RoslynExportProfileRequest {
                QualityProfileName = "qp", LanguageKey = "cs"
            };

            Method_WhenExceptionThrown_PropagateIt((c, t) => c.GetRoslynExportProfileAsync(request, t));
        }
        public void GetRoslynExportProfileAsync_WhenCancellationRequested_ThrowsException()
        {
            var request = new RoslynExportProfileRequest {
                QualityProfileName = "qp", LanguageKey = "cs"
            };

            Method_WhenCancellationRequested_ThrowsException((c, t) => c.GetRoslynExportProfileAsync(request, t));
        }
        public async Task GetRoslynExportProfileAsync_WhenRequestIsNotSuccess_ReturnsDefaultAndErrorCode()
        {
            var request = new RoslynExportProfileRequest {
                QualityProfileName = "qp", LanguageKey = "cs"
            };

            await Method_WhenRequestIsNotSuccess_ReturnsDefaultAndErrorCode(
                (c, t) => c.GetRoslynExportProfileAsync(request, t), HttpStatusCode.InternalServerError);
        }
        public async Task <RoslynExportProfileResponse> GetRoslynExportProfileAsync(string qualityProfileName,
                                                                                    SonarQubeLanguage language, CancellationToken token)
        {
            EnsureIsConnected();

            var request = new RoslynExportProfileRequest {
                QualityProfileName = qualityProfileName, LanguageKey = language.Key
            };
            var roslynExportResult = await this.sonarqubeClient.GetRoslynExportProfileAsync(request, token);

            roslynExportResult.EnsureSuccess();

            return(roslynExportResult.Value);
        }
        public async Task GetRoslynExportProfileAsync_CallsTheExpectedUri()
        {
            var request = new RoslynExportProfileRequest {
                QualityProfileName = "qp", LanguageKey = "cs"
            };

            await Method_CallsTheExpectedUri(
                new Uri("api/qualityprofiles/export?language=cs&name=qp&exporterKey=roslyn-cs", UriKind.RelativeOrAbsolute),
                @"<?xml version=""1.0"" encoding=""utf-8""?>
<RoslynExportProfile Version=""1.0"">
</RoslynExportProfile>", (c, t) => c.GetRoslynExportProfileAsync(request, t));

            request = new RoslynExportProfileRequest {
                QualityProfileName = "qp", LanguageKey = "vbnet"
            };
            await Method_CallsTheExpectedUri(
                new Uri("api/qualityprofiles/export?language=vbnet&name=qp&exporterKey=roslyn-vbnet", UriKind.RelativeOrAbsolute),
                @"<?xml version=""1.0"" encoding=""utf-8""?>
<RoslynExportProfile Version=""1.0"">
</RoslynExportProfile>", (c, t) => c.GetRoslynExportProfileAsync(request, t));
        }
 public Task <Result <RoslynExportProfileResponse> > GetRoslynExportProfileAsync(RoslynExportProfileRequest request,
                                                                                 CancellationToken token)
 {
     // Since 5.2
     return(InvokeSonarQubeApi("api/qualityprofiles/export", request, token,
                               stringResponse =>
     {
         using (var reader = new StringReader(stringResponse))
         {
             return RoslynExportProfileResponse.Load(reader);
         }
     }));
 }