Example #1
0
        public void CallServiceAsync_Instance_Func_By_ObjectProperty_Test()
        {
            var             clientMock  = new Mock <ISDataClient>();
            SDataParameters parms       = null;
            var             resultsMock = new Mock <ISDataResults <SDataResource> >();

            resultsMock.Setup(x => x.Content).Returns(new SDataResource {
                { "response", new SDataResource {
                      { "value", "world" }
                  } }
            });
            var taskSource = new TaskCompletionSource <ISDataResults <SDataResource> >();

            taskSource.SetResult(resultsMock.Object);
            clientMock.Setup(x => x.ExecuteAsync <SDataResource>(It.IsAny <SDataParameters>(), CancellationToken.None))
            .Callback((SDataParameters p, CancellationToken c) => parms = p)
            .Returns(taskSource.Task);
            var obj    = new CallService_Object();
            var result = clientMock.Object.CallServiceAsync(() => obj.InstanceFuncByObjectProperty("hello"), null, CancellationToken.None).Result;

            Assert.That(parms, Is.Not.Null);
            Assert.That(parms.Method, Is.EqualTo(HttpMethod.Post));
            Assert.That(parms.Path, Is.EqualTo("dummy/$service/InstanceFuncByObjectProperty"));
            var resource = parms.Content as SDataResource;

            Assert.That(resource, Is.Not.Null);
            resource = resource["request"] as SDataResource;
            Assert.That(resource, Is.Not.Null);
            Assert.That(resource["entity"], Is.EqualTo(obj));
            Assert.That(resource["arg"], Is.EqualTo("hello"));
            Assert.That(result, Is.EqualTo("world"));
        }
Example #2
0
        public void CallService_Instance_Func_By_KeyProperty_Test()
        {
            var             clientMock  = new Mock <ISDataClient>();
            SDataParameters parms       = null;
            var             resultsMock = new Mock <ISDataResults <SDataResource> >();

            resultsMock.Setup(x => x.Content).Returns(new SDataResource {
                { "response", new SDataResource {
                      { "value", "world" }
                  } }
            });
            clientMock.Setup(x => x.Execute <SDataResource>(It.IsAny <SDataParameters>()))
            .Callback((SDataParameters p) => parms = p)
            .Returns(resultsMock.Object);
            var obj = new CallService_Object {
                Key = "abc123"
            };
            var result = clientMock.Object.CallService(() => obj.InstanceFuncByKeyProperty("hello"));

            Assert.That(parms, Is.Not.Null);
            Assert.That(parms.Method, Is.EqualTo(HttpMethod.Post));
            Assert.That(parms.Path, Is.EqualTo("dummy/$service/InstanceFuncByKeyProperty"));
            var resource = parms.Content as SDataResource;

            Assert.That(resource, Is.Not.Null);
            resource = resource["request"] as SDataResource;
            Assert.That(resource, Is.Not.Null);
            Assert.That(resource["entityKey"], Is.EqualTo("abc123"));
            Assert.That(resource["arg"], Is.EqualTo("hello"));
            Assert.That(result, Is.EqualTo("world"));
        }
Example #3
0
        public void CallServiceAsync_Instance_Action_By_KeyProperty_Test()
        {
            var             clientMock = new Mock <ISDataClient>();
            SDataParameters parms      = null;
            var             taskSource = new TaskCompletionSource <ISDataResults>();

            taskSource.SetResult(null);
            clientMock.Setup(x => x.ExecuteAsync(It.IsAny <SDataParameters>(), CancellationToken.None))
            .Callback((SDataParameters p, CancellationToken c) => parms = p)
            .Returns(taskSource.Task);
            var obj = new CallService_Object {
                Key = "abc123"
            };

            clientMock.Object.CallServiceAsync(() => obj.InstanceActionByKeyProperty("hello"), null, CancellationToken.None).Wait(CancellationToken.None);

            Assert.That(parms, Is.Not.Null);
            Assert.That(parms.Method, Is.EqualTo(HttpMethod.Post));
            Assert.That(parms.Path, Is.EqualTo("dummy/$service/InstanceActionByKeyProperty"));
            var resource = parms.Content as SDataResource;

            Assert.That(resource, Is.Not.Null);
            resource = resource["request"] as SDataResource;
            Assert.That(resource, Is.Not.Null);
            Assert.That(resource["entityKey"], Is.EqualTo("abc123"));
            Assert.That(resource["arg"], Is.EqualTo("hello"));
        }
Example #4
0
        public void CallService_Static_Func_Test()
        {
            var             clientMock  = new Mock <ISDataClient>();
            SDataParameters parms       = null;
            var             resultsMock = new Mock <ISDataResults <SDataResource> >();

            resultsMock.Setup(x => x.Content).Returns(new SDataResource {
                { "response", new SDataResource {
                      { "value", "world" }
                  } }
            });
            clientMock.Setup(x => x.Execute <SDataResource>(It.IsAny <SDataParameters>()))
            .Callback((SDataParameters p) => parms = p)
            .Returns(resultsMock.Object);
            var result = clientMock.Object.CallService(() => CallService_Object.StaticFunc("hello"));

            Assert.That(parms, Is.Not.Null);
            Assert.That(parms.Method, Is.EqualTo(HttpMethod.Post));
            Assert.That(parms.Path, Is.EqualTo("dummy/$service/StaticFunc"));
            var resource = parms.Content as SDataResource;

            Assert.That(resource, Is.Not.Null);
            resource = resource["request"] as SDataResource;
            Assert.That(resource, Is.Not.Null);
            Assert.That(resource["arg"], Is.EqualTo("hello"));
            Assert.That(result, Is.EqualTo("world"));
        }
        public override void Save(Stream stream)
        {
            if (stream == null)
            {
                _document = string.IsNullOrEmpty(_document.Key)
                    ? _client.Post(_document)
                    : _client.Put(_document);
                return;
            }

            var parms = new SDataParameters
            {
                Files = { new AttachedFile(null, _document.FileName, stream) }
            };

            if (string.IsNullOrEmpty(_document.Key))
            {
                parms.Method = HttpMethod.Post;
                parms.Path   = "libraryDocuments";
            }
            else
            {
                parms.Method = HttpMethod.Put;
                parms.Path   = "libraryDocuments(" + SDataUri.FormatConstant(_document.Key) + ")";
                parms.ETag   = _document.ETag;
            }

            if (_formMode)
            {
                foreach (var prop in typeof(LibraryDocument).GetProperties())
                {
                    var name = _client.NamingScheme.GetName(prop);
                    if (!name.StartsWith("$", StringComparison.Ordinal) && !new[] { "createDate", "createUser", "modifyDate", "modifyUser" }.Contains(name, StringComparer.Ordinal))
                    {
                        var value = prop.GetValue(_document, null);
                        if (value != null)
                        {
                            parms.Form[name] = value.ToString();
                        }
                    }
                }

                parms.Path += "/file";
                var results = _client.Execute(parms);
                if (!string.IsNullOrEmpty(results.Location))
                {
                    var selector = new SDataUri(results.Location).GetPathSegment(4).Selector;
                    _document.Key  = selector.Substring(1, selector.Length - 2);
                    _document.ETag = results.ETag;
                }
            }
            else
            {
                parms.Content = _document;
                _document     = _client.Execute <LibraryDocument>(parms).Content;
            }
        }
        public void GetSchema(string resourceType)
        {
            var param = new SDataParameters {
                Path = "$schema"
            };
            var results = _sdata.Execute <SDataSchema>(param);

            foreach (var prop in results.Content.ResourceTypes[resourceType].ValueProperties)
            {
            }
        }
        public async Task <Dictionary <string, string> > GetResourceTypes()
        {
            Dictionary <string, string> resourceTypes = new Dictionary <string, string>();

            var param = new SDataParameters {
                Path = "$schema"
            };
            var results = await _sdata.ExecuteAsync <SDataSchema>(param);

            foreach (var resource in results.Content.ResourceTypes)
            {
                resourceTypes.Add(resource.Path, resource.ElementName);
            }

            return(resourceTypes);
        }
        public void GetProperties(string resourceType)
        {
            var path = resourceType;

            var param = new SDataParameters {
                Path = resourceType + "/$template"
            };
            var results = _sdata.Execute(param);


            if (!string.IsNullOrEmpty(path))
            {
                path += "/";
            }
            var template = _sdata.Get("", path + "$template");

            var i = 0;
        }
Example #9
0
        public void CallService_Static_Action_Test()
        {
            var             clientMock = new Mock <ISDataClient>();
            SDataParameters parms      = null;

            clientMock.Setup(x => x.Execute(It.IsAny <SDataParameters>()))
            .Callback((SDataParameters p) => parms = p);
            clientMock.Object.CallService(() => CallService_Object.StaticAction("hello"));

            Assert.That(parms, Is.Not.Null);
            Assert.That(parms.Method, Is.EqualTo(HttpMethod.Post));
            Assert.That(parms.Path, Is.EqualTo("dummy/$service/StaticAction"));
            var resource = parms.Content as SDataResource;

            Assert.That(resource, Is.Not.Null);
            resource = resource["request"] as SDataResource;
            Assert.That(resource, Is.Not.Null);
            Assert.That(resource["arg"], Is.EqualTo("hello"));
        }
Example #10
0
        public void CallService_Instance_Action_By_ObjectProperty_Test()
        {
            var             clientMock = new Mock <ISDataClient>();
            SDataParameters parms      = null;

            clientMock.Setup(x => x.Execute(It.IsAny <SDataParameters>()))
            .Callback((SDataParameters p) => parms = p);
            var obj = new CallService_Object();

            clientMock.Object.CallService(() => obj.InstanceActionByObjectProperty("hello"));

            Assert.That(parms, Is.Not.Null);
            Assert.That(parms.Method, Is.EqualTo(HttpMethod.Post));
            Assert.That(parms.Path, Is.EqualTo("dummy/$service/InstanceActionByObjectProperty"));
            var resource = parms.Content as SDataResource;

            Assert.That(resource, Is.Not.Null);
            resource = resource["request"] as SDataResource;
            Assert.That(resource, Is.Not.Null);
            Assert.That(resource["entity"], Is.EqualTo(obj));
            Assert.That(resource["arg"], Is.EqualTo("hello"));
        }
        public void Execute_Batch_Test()
        {
            var requestMock = new Mock<SDataRequest>(null, null, null);
            requestMock.Setup(x => x.GetResponse()).Returns(new SDataResponse(HttpStatusCode.OK, null, null, null, null, null, null, null, null));
            SDataUri requestUri = null;
            var requestFactory = new Func<string, SDataRequest>(uri =>
            {
                requestUri = new SDataUri(uri);
                return requestMock.Object;
            });
            var client = new SDataClient("test://dummy", requestFactory);
            var file1 = new AttachedFile(null, null, null);
            var params1 = new SDataParameters
                {
                    Include = "include1",
                    Select = "select1",
                    Precedence = 1,
                    Format = MediaType.ImagePng,
                    Language = "language",
                    Version = "version",
                    Path = "path",
                    ExtensionArgs = {{"foo1", "bar1"}},
                    Method = HttpMethod.Post,
                    Content = new object(),
                    ContentType = MediaType.ImageTiff,
                    ETag = "etag1",
                    Form = {{"hello1", "world1"}},
                    Files = {file1},
                    Accept = new[] {MediaType.ImageJpeg}
                };
            var file2 = new AttachedFile(null, null, null);
            var resource2 = new SDataResource {Key = "key2"};
            resource2["foo"] = "bar";
            var params2 = new SDataParameters
                {
                    Include = "include2",
                    Select = "select2",
                    Precedence = 2,
                    Format = MediaType.ImagePng,
                    Language = "language",
                    Version = "version",
                    Path = "path",
                    ExtensionArgs = {{"foo2", "bar2"}},
                    Method = HttpMethod.Put,
                    Content = resource2,
                    ContentType = MediaType.ImageTiff,
                    ETag = "etag2",
                    Form = {{"hello2", "world2"}},
                    Files = {file2},
                    Accept = new[] {MediaType.Css}
                };
            client.ExecuteBatch<SDataResource>(new[] {params1, params2});

            var resources = requestMock.Object.Content as IList<SDataResource>;
            Assert.That(resources, Is.Not.Null);
            Assert.That(requestUri, Is.Not.Null);
            Assert.That(requestUri.Include, Is.EqualTo("include1,include2"));
            Assert.That(requestUri.Select, Is.EqualTo("select1,select2"));
            Assert.That(requestUri.Precedence, Is.EqualTo(2));
            Assert.That(requestUri.Format, Is.EqualTo(MediaType.ImagePng));
            Assert.That(requestUri.Language, Is.EqualTo("language"));
            Assert.That(requestUri.Version, Is.EqualTo("version"));
            Assert.That(requestUri.Path, Is.EqualTo("path/$batch"));
            Assert.That(requestUri["_foo1"], Is.EqualTo("bar1"));
            Assert.That(requestUri["_foo2"], Is.EqualTo("bar2"));
            Assert.That(requestMock.Object.Method, Is.EqualTo(HttpMethod.Post));
            Assert.That(resources[0].HttpMethod, Is.EqualTo(HttpMethod.Post));
            Assert.That(resources[1].HttpMethod, Is.EqualTo(HttpMethod.Put));
            Assert.That(resources[0].Url, Is.Null);
            Assert.That(resources[1].Url, Is.EqualTo(new Uri("test://dummy/path('key2')?include=include2&select=select2&precedence=2")));
            Assert.That(requestMock.Object.ContentType, Is.EqualTo(MediaType.ImageTiff));
            Assert.That(resources[0].IfMatch, Is.EqualTo("etag1"));
            Assert.That(resources[1].IfMatch, Is.EqualTo("etag2"));
            Assert.That(requestMock.Object.Form["hello1"], Is.EqualTo("world1"));
            Assert.That(requestMock.Object.Form["hello2"], Is.EqualTo("world2"));
            Assert.That(requestMock.Object.Files[0], Is.EqualTo(file1));
            Assert.That(requestMock.Object.Files[1], Is.EqualTo(file2));
            Assert.That(requestMock.Object.Accept, Is.EqualTo(new[] {MediaType.ImageJpeg, MediaType.Css}));
            Assert.That(requestMock.Object.AcceptLanguage, Is.EqualTo("language"));
        }
        public void Execute_Test()
        {
            var requestMock = new Mock<SDataRequest>(null, null, null);
            requestMock.Setup(x => x.GetResponse()).Returns(new SDataResponse(HttpStatusCode.OK, null, null, null, null, null, null, null, null));
            SDataUri requestUri = null;
            var requestFactory = new Func<string, SDataRequest>(uri =>
            {
                requestUri = new SDataUri(uri);
                return requestMock.Object;
            });
            var client = new SDataClient("test://dummy", requestFactory);
            var content = new object();
            var file = new AttachedFile(null, null, null);
            var parms = new SDataParameters
                {
                    StartIndex = 1,
                    Count = 2,
                    Where = "where",
                    OrderBy = "order_by",
                    Search = "search",
                    Include = "include",
                    Select = "select",
                    Precedence = 3,
                    IncludeSchema = true,
                    ReturnDelta = true,
                    TrackingId = "tracking_id",
                    Format = MediaType.ImagePng,
                    Language = "language",
                    Version = "version",
                    Path = "path",
                    ExtensionArgs = {{"foo", "bar"}},
                    Method = HttpMethod.Put,
                    Content = content,
                    ContentType = MediaType.ImageTiff,
                    ETag = "etag",
                    Form = {{"hello", "world"}},
                    Files = {file},
                    Accept = new[] {MediaType.ImageJpeg}
                };
            client.Execute(parms);

            Assert.That(requestUri, Is.Not.Null);
            Assert.That(requestUri.StartIndex, Is.EqualTo(1));
            Assert.That(requestUri.Count, Is.EqualTo(2));
            Assert.That(requestUri.Where, Is.EqualTo("where"));
            Assert.That(requestUri.OrderBy, Is.EqualTo("order_by"));
            Assert.That(requestUri.Search, Is.EqualTo("search"));
            Assert.That(requestUri.Include, Is.EqualTo("include"));
            Assert.That(requestUri.Select, Is.EqualTo("select"));
            Assert.That(requestUri.Precedence, Is.EqualTo(3));
            Assert.That(requestUri.IncludeSchema, Is.EqualTo(true));
            Assert.That(requestUri.ReturnDelta, Is.EqualTo(true));
            Assert.That(requestUri.TrackingId, Is.EqualTo("tracking_id"));
            Assert.That(requestUri.Format, Is.EqualTo(MediaType.ImagePng));
            Assert.That(requestUri.Language, Is.EqualTo("language"));
            Assert.That(requestUri.Version, Is.EqualTo("version"));
            Assert.That(requestUri.Path, Is.EqualTo("path"));
            Assert.That(requestUri["_foo"], Is.EqualTo("bar"));
            Assert.That(requestMock.Object.Method, Is.EqualTo(HttpMethod.Put));
            Assert.That(requestMock.Object.Content, Is.EqualTo(content));
            Assert.That(requestMock.Object.ContentType, Is.EqualTo(MediaType.ImageTiff));
            Assert.That(requestMock.Object.ETag, Is.EqualTo("etag"));
            Assert.That(requestMock.Object.Form["hello"], Is.EqualTo("world"));
            Assert.That(requestMock.Object.Files[0], Is.EqualTo(file));
            Assert.That(requestMock.Object.Accept, Is.EqualTo(new[] {MediaType.ImageJpeg}));
            Assert.That(requestMock.Object.AcceptLanguage, Is.EqualTo("language"));
        }
Example #13
0
        public void Execute_Batch_Test()
        {
            var requestMock = new Mock <SDataRequest>(null, null, null);

            requestMock.Setup(x => x.GetResponse()).Returns(new SDataResponse(HttpStatusCode.OK, null, null, null, null, null, null, null, null));
            SDataUri requestUri     = null;
            var      requestFactory = new Func <string, SDataRequest>(uri =>
            {
                requestUri = new SDataUri(uri);
                return(requestMock.Object);
            });
            var client  = new SDataClient("test://dummy", requestFactory);
            var file1   = new AttachedFile(null, null, null);
            var params1 = new SDataParameters
            {
                Include       = "include1",
                Select        = "select1",
                Precedence    = 1,
                Format        = MediaType.ImagePng,
                Language      = "language",
                Version       = "version",
                Path          = "path",
                ExtensionArgs = { { "foo1", "bar1" } },
                Method        = HttpMethod.Post,
                Content       = new object(),
                ContentType   = MediaType.ImageTiff,
                ETag          = "etag1",
                Form          = { { "hello1", "world1" } },
                Files         = { file1 },
                Accept        = new[] { MediaType.ImageJpeg }
            };
            var file2     = new AttachedFile(null, null, null);
            var resource2 = new SDataResource {
                Key = "key2"
            };

            resource2["foo"] = "bar";
            var params2 = new SDataParameters
            {
                Include       = "include2",
                Select        = "select2",
                Precedence    = 2,
                Format        = MediaType.ImagePng,
                Language      = "language",
                Version       = "version",
                Path          = "path",
                ExtensionArgs = { { "foo2", "bar2" } },
                Method        = HttpMethod.Put,
                Content       = resource2,
                ContentType   = MediaType.ImageTiff,
                ETag          = "etag2",
                Form          = { { "hello2", "world2" } },
                Files         = { file2 },
                Accept        = new[] { MediaType.Css }
            };

            client.ExecuteBatch <SDataResource>(new[] { params1, params2 });

            var resources = requestMock.Object.Content as IList <SDataResource>;

            Assert.That(resources, Is.Not.Null);
            Assert.That(requestUri, Is.Not.Null);
            Assert.That(requestUri.Include, Is.EqualTo("include1,include2"));
            Assert.That(requestUri.Select, Is.EqualTo("select1,select2"));
            Assert.That(requestUri.Precedence, Is.EqualTo(2));
            Assert.That(requestUri.Format, Is.EqualTo(MediaType.ImagePng));
            Assert.That(requestUri.Language, Is.EqualTo("language"));
            Assert.That(requestUri.Version, Is.EqualTo("version"));
            Assert.That(requestUri.Path, Is.EqualTo("path/$batch"));
            Assert.That(requestUri["_foo1"], Is.EqualTo("bar1"));
            Assert.That(requestUri["_foo2"], Is.EqualTo("bar2"));
            Assert.That(requestMock.Object.Method, Is.EqualTo(HttpMethod.Post));
            Assert.That(resources[0].HttpMethod, Is.EqualTo(HttpMethod.Post));
            Assert.That(resources[1].HttpMethod, Is.EqualTo(HttpMethod.Put));
            Assert.That(resources[0].Url, Is.Null);
            Assert.That(resources[1].Url, Is.EqualTo(new Uri("test://dummy/path('key2')?include=include2&select=select2&precedence=2")));
            Assert.That(requestMock.Object.ContentType, Is.EqualTo(MediaType.ImageTiff));
            Assert.That(resources[0].IfMatch, Is.EqualTo("etag1"));
            Assert.That(resources[1].IfMatch, Is.EqualTo("etag2"));
            Assert.That(requestMock.Object.Form["hello1"], Is.EqualTo("world1"));
            Assert.That(requestMock.Object.Form["hello2"], Is.EqualTo("world2"));
            Assert.That(requestMock.Object.Files[0], Is.EqualTo(file1));
            Assert.That(requestMock.Object.Files[1], Is.EqualTo(file2));
            Assert.That(requestMock.Object.Accept, Is.EqualTo(new[] { MediaType.ImageJpeg, MediaType.Css }));
            Assert.That(requestMock.Object.AcceptLanguage, Is.EqualTo("language"));
        }
Example #14
0
        public void Execute_Test()
        {
            var requestMock = new Mock <SDataRequest>(null, null, null);

            requestMock.Setup(x => x.GetResponse()).Returns(new SDataResponse(HttpStatusCode.OK, null, null, null, null, null, null, null, null));
            SDataUri requestUri     = null;
            var      requestFactory = new Func <string, SDataRequest>(uri =>
            {
                requestUri = new SDataUri(uri);
                return(requestMock.Object);
            });
            var client  = new SDataClient("test://dummy", requestFactory);
            var content = new object();
            var file    = new AttachedFile(null, null, null);
            var parms   = new SDataParameters
            {
                StartIndex    = 1,
                Count         = 2,
                Where         = "where",
                OrderBy       = "order_by",
                Search        = "search",
                Include       = "include",
                Select        = "select",
                Precedence    = 3,
                IncludeSchema = true,
                ReturnDelta   = true,
                TrackingId    = "tracking_id",
                Format        = MediaType.ImagePng,
                Language      = "language",
                Version       = "version",
                Path          = "path",
                ExtensionArgs = { { "foo", "bar" } },
                Method        = HttpMethod.Put,
                Content       = content,
                ContentType   = MediaType.ImageTiff,
                ETag          = "etag",
                Form          = { { "hello", "world" } },
                Files         = { file },
                Accept        = new[] { MediaType.ImageJpeg }
            };

            client.Execute(parms);

            Assert.That(requestUri, Is.Not.Null);
            Assert.That(requestUri.StartIndex, Is.EqualTo(1));
            Assert.That(requestUri.Count, Is.EqualTo(2));
            Assert.That(requestUri.Where, Is.EqualTo("where"));
            Assert.That(requestUri.OrderBy, Is.EqualTo("order_by"));
            Assert.That(requestUri.Search, Is.EqualTo("search"));
            Assert.That(requestUri.Include, Is.EqualTo("include"));
            Assert.That(requestUri.Select, Is.EqualTo("select"));
            Assert.That(requestUri.Precedence, Is.EqualTo(3));
            Assert.That(requestUri.IncludeSchema, Is.EqualTo(true));
            Assert.That(requestUri.ReturnDelta, Is.EqualTo(true));
            Assert.That(requestUri.TrackingId, Is.EqualTo("tracking_id"));
            Assert.That(requestUri.Format, Is.EqualTo(MediaType.ImagePng));
            Assert.That(requestUri.Language, Is.EqualTo("language"));
            Assert.That(requestUri.Version, Is.EqualTo("version"));
            Assert.That(requestUri.Path, Is.EqualTo("path"));
            Assert.That(requestUri["_foo"], Is.EqualTo("bar"));
            Assert.That(requestMock.Object.Method, Is.EqualTo(HttpMethod.Put));
            Assert.That(requestMock.Object.Content, Is.EqualTo(content));
            Assert.That(requestMock.Object.ContentType, Is.EqualTo(MediaType.ImageTiff));
            Assert.That(requestMock.Object.ETag, Is.EqualTo("etag"));
            Assert.That(requestMock.Object.Form["hello"], Is.EqualTo("world"));
            Assert.That(requestMock.Object.Files[0], Is.EqualTo(file));
            Assert.That(requestMock.Object.Accept, Is.EqualTo(new[] { MediaType.ImageJpeg }));
            Assert.That(requestMock.Object.AcceptLanguage, Is.EqualTo("language"));
        }