예제 #1
0
        public static IEnumerable <IHttpPathHandler> CreatePathHandlers(IHttpPathHandlerFactory pathHandlerFactory, IPayloadSerializer payloadSerializer,
                                                                        IConfiguration configuration)
        {
            // Use Configuration.
            var restResponseFactory = new RestResponseFactory();
            var templatePathHandler = new TemplatePathHandler(restResponseFactory);

            return(new List <IHttpPathHandler> {
                pathHandlerFactory.CreateHttpPathHandler("template/path", templatePathHandler.VerbHandlers)
            });
        }
예제 #2
0
        public void ConstructorWith5Args_IfSuccessfulResponse_InitializesCommonProperties()
        {
            var data              = new[] { new object(), new object(), };
            var response          = RestResponseFactory.GetSuccessResponse();
            var responseContext   = new Context();
            var requestInResponse = new Request();
            var context           = It.IsAny <ApiContext>();

            var result = new ApiResult <object[]>(data, response, context, responseContext, requestInResponse);

            Assert.AreEqual(context, result.Context);
            Assert.AreEqual(response, result.RestResponse);
            Assert.AreEqual(responseContext, result.ResponseContext);
            Assert.AreEqual(requestInResponse, result.RequestInResponse);
            Assert.AreEqual(true, result.IsSuccessful);
            Assert.AreEqual(default, result.ApiException);
예제 #3
0
        public void GetProjectIssues10K_Success()
        {
            MockClient.
            Setup(x => x.ExecuteTaskAsync(It.Is <IRestRequest>(request => (request.Resource == "api/issues/search") && request.Parameters.Any(param => param.Name == "types" && param.Value.ToString() == "BUG")))).
            Returns((IRestRequest request) =>
            {
                var p  = request.Parameters.First(param => param.Name == "p").Value;
                var ps = request.Parameters.First(param => param.Name == "ps").Value;

                var issue = "{\"key\": \"AWDVIu_vf44sODN6PmH7\", \"rule\": \"cxx:UndocumentedApi\", \"severity\": \"INFO\", \"component\": " +
                            "\"ETAS:INCA:HWA:A1b:LIN/file.cpp\", \"project\": \"ETAS:INCA:HWA:A1b:LIN\", \"line\": 1, \"hash\": \"a133b69778aeed2e9f10f652bd6cffed\", " +
                            "\"textRange\": { \"startLine\": 1, \"endLine\": 1, \"startOffset\": 0, \"endOffset\": 1 }, " +
                            "\"flows\": [], \"status\": \"OPEN\", \"message\": \"Undocumented API: Matches\", \"effort\": \"5min\", " +
                            "\"debt\": \"5min\", \"author\": \"\", \"tags\": [\"convention\"], \"creationDate\": \"2018-01-08T10:37:27+0100\", \"updateDate\": \"2018-01-08T10:37:27+0100\", " +
                            "\"type\": \"BUG\", \"organization\": \"default-organization\" }";

                var response = $"{{\"total\": 1, \"p\": {p}, \"ps\": {ps}, \"paging\": {{ \"pageIndex\": {p}, \"pageSize\": {ps}, \"total\": 1 }}, \"issues\": [{issue}]}}";

                return(Task.FromResult(RestResponseFactory.Create(response, HttpStatusCode.OK)));
            });

            MockClient.
            Setup(x => x.ExecuteTaskAsync(It.Is <IRestRequest>(request => (request.Resource == "api/issues/search") && request.Parameters.Any(param => param.Name == "types" && param.Value.ToString() == "CODE_SMELL")))).
            Returns((IRestRequest request) =>
            {
                var p  = request.Parameters.First(param => param.Name == "p").Value;
                var ps = request.Parameters.First(param => param.Name == "ps").Value;

                var response = $"{{\"total\": 0, \"p\": {p}, \"ps\": {ps}, \"paging\": {{ \"pageIndex\": {p}, \"pageSize\": {ps}, \"total\": 0 }}, \"issues\": []}}";

                return(Task.FromResult(RestResponseFactory.Create(response, HttpStatusCode.OK)));
            });

            // Simulate 10k issue
            MockClient.
            Setup(x => x.ExecuteTaskAsync(It.Is <IRestRequest>(request => (request.Resource == "api/issues/search") && request.Parameters.Any(param => param.Name == "types" && param.Value.ToString() == "VULNERABILITY")))).
            Returns((IRestRequest request) =>
            {
                var p  = request.Parameters.First(param => param.Name == "p").Value;
                var ps = request.Parameters.First(param => param.Name == "ps").Value;

                var issue = "{\"key\": \"AWDVIu_vf44sODN6PmH7\", \"rule\": \"cxx:UndocumentedApi\", \"severity\": \"INFO\", \"component\": " +
                            "\"ETAS:INCA:HWA:A1b:LIN/file.cpp\", \"project\": \"ETAS:INCA:HWA:A1b:LIN\", \"line\": 1, \"hash\": \"a133b69778aeed2e9f10f652bd6cffed\", " +
                            "\"textRange\": { \"startLine\": 1, \"endLine\": 1, \"startOffset\": 0, \"endOffset\": 1 }, " +
                            "\"flows\": [], \"status\": \"OPEN\", \"message\": \"Undocumented API: Matches\", \"effort\": \"5min\", " +
                            "\"debt\": \"5min\", \"author\": \"\", \"tags\": [\"convention\"], \"creationDate\": \"2018-01-08T10:37:27+0100\", \"updateDate\": \"2018-01-08T10:37:27+0100\", " +
                            "\"type\": \"VULNERABILITY\", \"organization\": \"default-organization\" }";

                var issues = string.Join(",", Enumerable.Repeat(issue, int.Parse(ps.ToString())));

                var response = $"{{\"total\": 24866, \"p\": {p}, \"ps\": {ps}, \"paging\": {{ \"pageIndex\": {p}, \"pageSize\": {ps}, \"total\": 24866 }}, \"issues\": [{issues}]}}";

                return(Task.FromResult(RestResponseFactory.Create(response, HttpStatusCode.OK)));
            });

            var service = new IssuesClient(MockClient.Object);
            var actual  = service.GetProjectIssues("ETAS:INCA:HWA:A1b:LIN").Result;

            // 1 - BUG, 10000 - VULNERABILITY, 0 - CODE_SMELL
            Assert.That(actual.Count, Is.EqualTo(1 + 10000));
        }
예제 #4
0
 public Dispatcher(IEnumerable <IHttpPathHandler> handlers)
 {
     _restResponseFactory = new RestResponseFactory();
     Handlers             = handlers;
 }
 public TemplatePathHandler(RestResponseFactory responseFactory)
 {
     _restResponseFactory = responseFactory;
     VerbHandlers.Add(HttpVerb.Get, GetAsync);
 }