public void GetApiMethodFullDescriptionSelectAudio()
        {
            var description = vkApiSpecifier.GetApiMethodFullDescription(selectAudioMethodName);

            Assert.IsNotNull(description);
            var expected = new ApiMethodDescription
            {
                MethodDescription = new CommonDescription(selectAudioMethodName,
                                                          "Gets user audio tracks. If userId is not presented gets authorized user audio tracks"),
                ParamDescriptions = new[]
                {
                    new ApiParamDescription
                    {
                        ParamDescription = new CommonDescription("userId"),
                    },
                    new ApiParamDescription
                    {
                        ParamDescription = new CommonDescription("batchSize", "number of audios to return"),
                        Required         = true,
                        MinValue         = 1,
                        MaxValue         = 100
                    },
                },
                ReturnDescription = new ApiParamDescription
                {
                    ParamDescription = new CommonDescription()
                }
            };

            AssertDescriptionAreEquals(expected, description);
        }
        public void GetApiMethodFullDescriptionCountAudio()
        {
            var description = vkApiSpecifier.GetApiMethodFullDescription(countAudioMethodName);

            Assert.IsNotNull(description);
            var expected = new ApiMethodDescription
            {
                MethodDescription = new CommonDescription(countAudioMethodName,
                                                          "Gets user audio tracks count. If userId is not presented gets authorized user audio tracks"),
                ParamDescriptions = new[]
                {
                    new ApiParamDescription
                    {
                        ParamDescription = new CommonDescription("userId"),
                    },
                },
                ReturnDescription = new ApiParamDescription
                {
                    Required         = true,
                    ParamDescription = new CommonDescription(),
                    MinValue         = 0,
                    MaxValue         = int.MaxValue / 2
                }
            };

            AssertDescriptionAreEquals(expected, description);
        }
        public ApiMethodDescription GetApiMethodFullDescription(string methodName)
        {
            var method = GetMethod(methodName);

            if (method == null)
            {
                return(null);
            }
            if (method.GetCustomAttribute <ApiMethodAttribute>() == null)
            {
                return(null);
            }

            var result = new ApiMethodDescription();

            result.MethodDescription             = new CommonDescription(methodName);
            result.MethodDescription.Description =
                method.GetCustomAttribute <ApiDescriptionAttribute>()?.Description;

            result.ParamDescriptions = method.GetParameters()
                                       .Select(p => GetApiMethodParamFullDescription(methodName, p.Name))
                                       .ToArray();

            if (method.ReturnParameter != null && method.ReturnParameter.ParameterType == typeof(void))
            {
                return(result);
            }

            result.ReturnDescription = new ApiParamDescription {
                ParamDescription = new CommonDescription()
            };
            FillInApiParamDescription(method.ReturnParameter, result.ReturnDescription);

            return(result);
        }
        public void GetApiMethodFullDescriptionAuthorize()
        {
            var description = vkApiSpecifier.GetApiMethodFullDescription(authorizeMethodName);

            Assert.IsNotNull(description);
            var expected = new ApiMethodDescription
            {
                MethodDescription = new CommonDescription(authorizeMethodName,
                                                          "Authorize user. Returns true if authorized"),
                ParamDescriptions = new[]
                {
                    new ApiParamDescription
                    {
                        ParamDescription = new CommonDescription("login"),
                        Required         = true
                    },
                    new ApiParamDescription
                    {
                        ParamDescription = new CommonDescription("password"),
                        Required         = true
                    },
                    new ApiParamDescription
                    {
                        ParamDescription = new CommonDescription("allowNoname"),
                    },
                }
            };

            AssertDescriptionAreEquals(expected, description);
        }
Esempio n. 5
0
        public ApiMethodDescription GetApiMethodFullDescription(string methodName)
        {
            var result     = new ApiMethodDescription();
            var methodInfo = typeof(T).GetMethod(methodName);

            if (methodInfo == null)
            {
                return(null);
            }

            var methodAttributes = methodInfo.GetCustomAttributes().OfType <ApiMethodAttribute>();

            if (methodAttributes.Count() == 0)
            {
                return(null);
            }

            result.MethodDescription = new CommonDescription(methodName, GetApiMethodDescription(methodName));

            result.ParamDescriptions = SetParamsDescription(methodInfo, methodName);

            var returnInfo = methodInfo.ReturnTypeCustomAttributes;

            result = SetRequireFlag(returnInfo, result);

            result = SetReturnMaxAndMinValue(returnInfo, result);
            return(result);
        }
Esempio n. 6
0
        public ApiMethodDescription GetApiMethodFullDescription(string methodName)
        {
            var method = typeof(T).GetMethod(methodName);

            if (method?.GetCustomAttributes().OfType <ApiMethodAttribute>().FirstOrDefault() == null)
            {
                return(null);
            }
            var apiMethodDescription = new ApiMethodDescription()
            {
                MethodDescription = new CommonDescription()
                {
                    Name        = methodName,
                    Description = GetApiMethodDescription(methodName)
                },
                ParamDescriptions = GetApiMethodParamDescriptions(methodName).ToArray()
            };
            var required = method.ReturnParameter
                           ?.GetCustomAttributes().OfType <ApiRequiredAttribute>().FirstOrDefault();
            var validation = method.ReturnParameter
                             ?.GetCustomAttributes().OfType <ApiIntValidationAttribute>().FirstOrDefault();

            if (required != null || validation != null)
            {
                apiMethodDescription.ReturnDescription = new ApiParamDescription
                {
                    Required = required?.Required ?? false,
                    MaxValue = validation?.MaxValue,
                    MinValue = validation?.MinValue
                }
            }
            ;
            return(apiMethodDescription);
        }
Esempio n. 7
0
        public ApiMethodDescription SetReturnMaxAndMinValue(
            ICustomAttributeProvider returnInfo,
            ApiMethodDescription result)
        {
            var returnParamsIntValidation = returnInfo
                                            .GetCustomAttributes(true)
                                            .OfType <ApiIntValidationAttribute>();

            if (returnParamsIntValidation.Count() != 0)
            {
                result.ReturnDescription.MaxValue = returnParamsIntValidation.First().MaxValue;
                result.ReturnDescription.MinValue = returnParamsIntValidation.First().MinValue;
            }
            return(result);
        }
Esempio n. 8
0
        public ApiMethodDescription SetRequireFlag(ICustomAttributeProvider returnInfo,
                                                   ApiMethodDescription result)
        {
            var returnParamsRequired = returnInfo
                                       .GetCustomAttributes(true)
                                       .OfType <ApiRequiredAttribute>();

            if (returnParamsRequired.Count() != 0)
            {
                result.ReturnDescription = new ApiParamDescription
                {
                    Required = returnParamsRequired.First().Required
                };
            }
            return(result);
        }
Esempio n. 9
0
        public ApiMethodDescription GetApiMethodFullDescription(string methodName)
        {
            var met = type.GetMethod(methodName);

            if (met == null || !met.GetCustomAttributes(true).OfType <ApiMethodAttribute>().Any())
            {
                return(null);
            }
            var result = new ApiMethodDescription();

            result.MethodDescription = new CommonDescription(methodName, GetApiMethodDescription(methodName));
            result.ParamDescriptions = GetApiMethodParamNames(methodName).Select(param => GetApiMethodParamFullDescription(methodName, param)).ToArray();

            var  returnParameter = met.ReturnParameter;
            bool isNecessaryToSetReturnParameter = false;
            var  returnParamDiscription          = new ApiParamDescription();

            returnParamDiscription.ParamDescription = new CommonDescription();
            var descriptionAttribute = returnParameter.GetCustomAttributes(true).OfType <ApiDescriptionAttribute>().FirstOrDefault();

            if (descriptionAttribute != null)
            {
                returnParamDiscription.ParamDescription.Description = descriptionAttribute.Description;
                isNecessaryToSetReturnParameter = true;
            }
            var intValidationAttribute = returnParameter.GetCustomAttributes(true).OfType <ApiIntValidationAttribute>().FirstOrDefault();

            if (intValidationAttribute != null)
            {
                returnParamDiscription.MinValue = intValidationAttribute.MinValue;
                returnParamDiscription.MaxValue = intValidationAttribute.MaxValue;
                isNecessaryToSetReturnParameter = true;
            }
            var requiredAttribute = returnParameter.GetCustomAttributes(true).OfType <ApiRequiredAttribute>().FirstOrDefault();

            if (requiredAttribute != null)
            {
                returnParamDiscription.Required = requiredAttribute.Required;
                isNecessaryToSetReturnParameter = true;
            }

            if (isNecessaryToSetReturnParameter)
            {
                result.ReturnDescription = returnParamDiscription;
            }
            return(result);
        }
        private static void AssertDescriptionAreEquals(ApiMethodDescription expected, ApiMethodDescription actual)
        {
            AssertCommonDescriptionAreEquals(expected.MethodDescription, actual.MethodDescription);

            AssertParamDescriptionAreEquals(expected.ReturnDescription, actual.ReturnDescription);

            if (expected.ParamDescriptions == null && actual.ParamDescriptions == null)
            {
                return;
            }

            Assert.AreEqual(expected.ParamDescriptions?.Length, actual.ParamDescriptions?.Length);

            var expectedParamDescriptions = expected.ParamDescriptions.OrderBy(x => x.ParamDescription?.Name).ToArray();
            var actualParamDescriptions   = actual.ParamDescriptions.OrderBy(x => x.ParamDescription?.Name).ToArray();

            for (var i = 0; i < expected.ParamDescriptions.Length; i++)
            {
                AssertParamDescriptionAreEquals(expectedParamDescriptions[i], actualParamDescriptions[i]);
            }
        }