Esempio n. 1
0
        public void When_the_path_is_a_Uri_it_requests_metadata_from_the_cloud()
        {
            var metadataPath = Any.UriPath(1);
            var metadata = Any.String(1);

            using (var mockService = new MockService()
                .OnRequest(c => c.Request.Path.ToString() == "/" + metadataPath && c.Request.Method == "GET")
                .RespondWith((c, b) => c.Response.Write(metadata)))
            {
                var metadataUri = mockService.GetBaseAddress() + metadataPath;

                MetadataResolver.GetMetadata(metadataUri)
                    .Should().Be(metadata);
            }
        }
Esempio n. 2
0
        public MockService RespondWith(Action <IOwinContext, string> responseConfiguration)
        {
            if (responseConfiguration == null)
            {
                throw new ArgumentNullException("responseConfiguration");
            }

            Func <IOwinContext, Task> responseFunction = c =>
            {
                responseConfiguration(c, _mockService.GetBaseAddress());

                return(Task.FromResult <object>(null));
            };

            _mockService.Setup(_requestValidator, responseFunction);

            return(_mockService);
        }
        [Fact(Skip = "https://github.com/Microsoft/Vipr/issues/43")]
        public void When_it_changes_a_namespace_then_responses_odata_type_is_translated_to_new_namespace()
        {
            var oldNamespace = _model.EntityContainer.Namespace; 
            
            var namespacePrefix = Any.CSharpIdentifier();

            var namespaceRename = Any.CSharpIdentifier();

            var newNamespace = new OdcmNamespace(namespacePrefix + "." + namespaceRename);

            var namespaceMap = new Dictionary<string, string> { { oldNamespace.Name, namespaceRename } };

            var entityClasses = oldNamespace.Classes.OfType<OdcmEntityClass>().ToList();

            var baseClass = entityClasses.Where(c => c.Base == null).RandomElement();

            entityClasses.Remove(baseClass);

            baseClass.IsAbstract = true;

            var derivedClass = entityClasses.RandomElement();

            entityClasses.Remove(derivedClass);

            derivedClass.Base = baseClass;

            entityClasses.RandomElement().Base = baseClass;

            var proxy = GetProxyWithChangedNamespaces(namespacePrefix, namespaceMap);

            var entityArtifacts = GetEntityArtifactsFromNewNamespace(derivedClass, newNamespace, proxy, oldNamespace);

            var responseObject = entityArtifacts.Class.GetSampleJObject(derivedClass.GetSampleKeyArguments().Concat(baseClass.GetSampleKeyArguments()).ToArray());

            var responseOdataType = String.Format("#{0}.{1}", oldNamespace.Name, derivedClass.Name);

            var singletonPath = baseClass.GetDefaultSingletonPath();

            using (var mockService = new MockService(true)
)
            {
                mockService
                    .OnRequest(c => c.Request.Method == "GET" && c.Request.Path.Value == singletonPath)
                    .RespondWith(
                        (c, b) =>
                        {
                            c.Response.StatusCode = 200;
                            c.Response.WithDefaultODataHeaders();
                            c.Response.WithODataEntityResponseBody(mockService.GetBaseAddress(),
                                baseClass.GetDefaultEntitySetName(), responseObject, new JProperty("@odata.type", new JValue(responseOdataType)));
                        });

                var fetcher = mockService
                    .CreateContainer(proxy.GetClass(newNamespace.Name, _model.EntityContainer.Name))
                    .GetPropertyValue<RestShallowObjectFetcher>(baseClass.GetDefaultSingletonName());

                var task = fetcher.ExecuteAsync();

                var result = task.GetPropertyValue<EntityBase>("Result");
Esempio n. 4
0
        private void WithWebMetadata(string metadata, Action<string> action)
        {
            var metadataPath = Any.UriPath(1);

            using (var mockService = new MockService()
                .OnRequest(c => c.Request.Path.ToString() == "/" + metadataPath && c.Request.Method == "GET")
                .RespondWith(c => c.Response.Write(metadata)))
            {
                action(mockService.GetBaseAddress() + metadataPath);
            }
        }