public void GetSampleRequests_Empty()
 {
     HelpPageSampleGenerator sampleGenerator = new HelpPageSampleGenerator();
     ApiDescription apiDescription = ApiDescriptionHelpers.GetApiDescription(null, "Values", "Get");
     IDictionary<MediaTypeHeaderValue, object> samples = sampleGenerator.GetSampleRequests(apiDescription);
     Assert.Empty(samples);
 }
 public void GetSampleRequests_FromSampleObjects()
 {
     HelpPageSampleGenerator sampleGenerator = new HelpPageSampleGenerator();
     sampleGenerator.SampleObjects.Add(typeof(string), "sample value");
     ApiDescription apiDescription = ApiDescriptionHelpers.GetApiDescription(null, "Values", "Post", "value");
     IDictionary<MediaTypeHeaderValue, object> samples = sampleGenerator.GetSampleRequests(apiDescription);
     Assert.NotEmpty(samples);
     foreach (var samplePair in samples)
     {
         Assert.Contains("sample value", ((TextSample)samplePair.Value).Text);
     }
 }
 public void GetSampleRequests_FromSampleObjects_AndSettingActualRequestTypes()
 {
     HelpPageSampleGenerator sampleGenerator = new HelpPageSampleGenerator();
     sampleGenerator.ActualHttpMessageTypes.Add(new HelpPageSampleKey(SampleDirection.Request, "values", "options", new[] { "request" }), typeof(string));
     sampleGenerator.SampleObjects.Add(typeof(string), "sample value");
     ApiDescription apiDescription = ApiDescriptionHelpers.GetApiDescription(null, "values", "options", "request");
     IDictionary<MediaTypeHeaderValue, object> samples = sampleGenerator.GetSampleRequests(apiDescription);
     Assert.NotEmpty(samples);
     foreach (var samplePair in samples)
     {
         Assert.Contains("sample value", ((TextSample)samplePair.Value).Text);
     }
 }
 public void GetSampleRequests_FromActionSamples_BasedOnMediaTypeAndType()
 {
     HelpPageSampleGenerator sampleGenerator = new HelpPageSampleGenerator();
     var sample = new TextSample("test");
     sampleGenerator.ActionSamples.Add(new HelpPageSampleKey(new MediaTypeHeaderValue("application/json"), typeof(Tuple<int, string>)), sample);
     ApiDescription apiDescription = ApiDescriptionHelpers.GetApiDescription(null, "Values", "Patch", "valuePair");
     IDictionary<MediaTypeHeaderValue, object> samples = sampleGenerator.GetSampleRequests(apiDescription);
     Assert.NotEmpty(samples);
     object result;
     samples.TryGetValue(new MediaTypeHeaderValue("application/json"), out result);
     Assert.Same(sample, result);
     samples.TryGetValue(new MediaTypeHeaderValue("application/xml"), out result);
     Assert.NotSame(sample, result);
 }
 public void GetSampleRequests_FromActionSamples_BasedOnMediaTypeAndNames()
 {
     HelpPageSampleGenerator sampleGenerator = new HelpPageSampleGenerator();
     var sample = new TextSample("test");
     sampleGenerator.ActionSamples.Add(new HelpPageSampleKey(new MediaTypeHeaderValue("application/xml"), SampleDirection.Request, "Values", "Put", new[] { "valuePairCollection" }), sample);
     ApiDescription apiDescription = ApiDescriptionHelpers.GetApiDescription(null, "Values", "Put", "valuePairCollection");
     IDictionary<MediaTypeHeaderValue, object> samples = sampleGenerator.GetSampleRequests(apiDescription);
     Assert.NotEmpty(samples);
     object result;
     samples.TryGetValue(new MediaTypeHeaderValue("application/xml"), out result);
     Assert.Same(sample, result);
     samples.TryGetValue(new MediaTypeHeaderValue("application/json"), out result);
     Assert.NotSame(sample, result);
 }
 public void GetSampleRequests_FromActionSamples_WhenTheParameterIsHttpRequestMessage()
 {
     HelpPageSampleGenerator sampleGenerator = new HelpPageSampleGenerator();
     var sample = new TextSample("test");
     sampleGenerator.ActionSamples.Add(new HelpPageSampleKey(new MediaTypeHeaderValue("plain/text"), SampleDirection.Request, "Values", "Options", new[] { "request" }), sample);
     ApiDescription apiDescription = ApiDescriptionHelpers.GetApiDescription(null, "Values", "Options", "request");
     IDictionary<MediaTypeHeaderValue, object> samples = sampleGenerator.GetSampleRequests(apiDescription);
     Assert.NotEmpty(samples);
     object result;
     samples.TryGetValue(new MediaTypeHeaderValue("plain/text"), out result);
     Assert.Same(sample, result);
     samples.TryGetValue(new MediaTypeHeaderValue("application/json"), out result);
     Assert.Null(result);
 }
        private static void GenerateSamples(HelpPageApiModel apiModel, HelpPageSampleGenerator sampleGenerator)
        {
            try
            {
                foreach (var item in sampleGenerator.GetSampleRequests(apiModel.ApiDescription))
                {
                    apiModel.SampleRequests.Add(item.Key, item.Value);
                    LogInvalidSampleAsError(apiModel, item.Value);
                }

                foreach (var item in sampleGenerator.GetSampleResponses(apiModel.ApiDescription))
                {
                    apiModel.SampleResponses.Add(item.Key, item.Value);
                    LogInvalidSampleAsError(apiModel, item.Value);
                }
            }
            catch (Exception e)
            {
                apiModel.ErrorMessages.Add(String.Format(CultureInfo.CurrentCulture,
                    "An exception has occurred while generating the sample. Exception message: {0}",
                    HelpPageSampleGenerator.UnwrapException(e).Message));
            }
        }
        private static HelpPageApiModel GenerateApiModel(ApiDescription apiDescription, HelpPageSampleGenerator sampleGenerator)
        {
            HelpPageApiModel apiModel = new HelpPageApiModel();
            apiModel.ApiDescription = apiDescription;

            try
            {
                foreach (var item in sampleGenerator.GetSampleRequests(apiDescription))
                {
                    apiModel.SampleRequests.Add(item.Key, item.Value);
                    LogInvalidSampleAsError(apiModel, item.Value);
                }

                foreach (var item in sampleGenerator.GetSampleResponses(apiDescription))
                {
                    apiModel.SampleResponses.Add(item.Key, item.Value);
                    LogInvalidSampleAsError(apiModel, item.Value);
                }
            }
            catch (Exception e)
            {
                apiModel.ErrorMessages.Add(String.Format(CultureInfo.CurrentCulture, "An exception has occurred while generating the sample. Exception Message: {0}", e.Message));
            }

            return apiModel;
        }