Exemple #1
0
        public static IService CreateDefaultService()
        {
            IService service = RamoneConfiguration.NewService(TestHelper.BaseUrl);

            service.DefaultEncoding = Encoding.GetEncoding("iso-8859-1");

            ICodecManager cm = service.CodecManager;

            cm.AddCodec <Dossier, XmlSerializerCodec>(CMSConstants.CMSMediaType);
            cm.AddCodec <DossierDocumentList, XmlSerializerCodec>(CMSConstants.CMSMediaType);
            cm.AddCodec <Document, XmlSerializerCodec>(CMSConstants.CMSMediaType);
            cm.AddCodec <Party, XmlSerializerCodec>(CMSConstants.CMSMediaType);

            cm.AddCodec <Cat, CatAsTextCodec>(MediaType.TextPlain);
            cm.AddCodec <Cat, CatAsHtmlCodec>(MediaType.TextHtml);

            cm.AddCodec <Dog1, XmlSerializerCodec>(new MediaType("application/vnd.dog+xml"));
            cm.AddCodec <Dog2, XmlSerializerCodec>(new MediaType("application/vnd.dog+xml"));

            cm.AddCodec <HeaderList, XmlSerializerCodec>(MediaType.ApplicationXml);

            cm.AddCodec <RegisteredClass, XmlSerializerCodec>(MediaType.ApplicationXml);

            return(service);
        }
Exemple #2
0
        public void WhenCreatingSessionItClonesAuthorizationDispatcher()
        {
            // Arrange
            IService service = RamoneConfiguration.NewService(BaseUrl);

            // Act
            ISession session1 = service.NewSession();

            service.AuthorizationDispatcher.Add("dummy1", new DummyHandler1());

            ISession session2 = service.NewSession();

            session2.AuthorizationDispatcher.Add("dummy2", new DummyHandler2());

            ISession session3 = service.NewSession();

            // Assert
            Assert.IsNull(session1.AuthorizationDispatcher.Get("dummy1"));
            Assert.IsNull(session1.AuthorizationDispatcher.Get("dummy2"));

            Assert.IsNotNull(session2.AuthorizationDispatcher.Get("dummy1"));
            Assert.IsNotNull(session2.AuthorizationDispatcher.Get("dummy2"));

            Assert.IsNotNull(session3.AuthorizationDispatcher.Get("dummy1"));
            Assert.IsNull(session3.AuthorizationDispatcher.Get("dummy2"));
        }
Exemple #3
0
        public static void Initialize()
        {
            HtmlNode.ElementsFlags.Remove("form");
            HtmlNode.ElementsFlags.Add("form", HtmlElementFlag.CanOverlap);

            RamoneConfiguration.AddCodecRegistrator(new HtmlCodecRegistrator());
        }
Exemple #4
0
        static void Main(string[] args)
        {
            Request req = RamoneConfiguration.NewSession(new Uri("http://www.dr.dk")).Bind("/");

            using (var resp = req.Get())
            {
            }
        }
        static RamoneServiceManager()
        {
            Service           = RamoneConfiguration.NewService();
            Service.UserAgent = "API Explorer";
            Service.CodecManager.AddCodec <JsonNetCodec>(new MediaType("application/vnd.mason+json"));

            Session = Service.NewSession();
        }
Exemple #6
0
        public void WhenNotUsingBaseUrlItThrowsInvalidOperationException()
        {
            // Act
            ISession session = RamoneConfiguration.NewSession();

            AssertThrows <InvalidOperationException>(
                () => session.Bind(DossierTemplate, new { id = 2 }),
                ex => ex.Message.Contains("base URL"));
        }
Exemple #7
0
        /// <summary>
        /// Executed before each test method is run. Override in subclasses to do subclass
        /// set up. Remember to call base.SetUp().
        /// NOTE: The [SetUp] attribute cannot be used in subclasses because it is already
        /// in use.
        /// </summary>
        protected virtual void SetUp()
        {
            RamoneConfiguration.Reset();
            AtomInitializer.Initialize();
            HtmlInitializer.Initialize();

            // Create a new session for each test
            Session = TestService.NewSession();
        }
Exemple #8
0
        public void WhenCreatingSessionItClonesSerializerSettings()
        {
            // Arrange
            IService service = RamoneConfiguration.NewService(BaseUrl);

            service.SerializerSettings.ArrayFormat      = "A";
            service.SerializerSettings.DictionaryFormat = "B";
            service.SerializerSettings.PropertyFormat   = "C";
            service.SerializerSettings.DateTimeFormat   = "O";
            service.SerializerSettings.Formaters.AddFormater(typeof(SomeClass1), new SomeClass1Formater());
            service.SerializerSettings.Culture  = CultureInfo.GetCultureInfo("da-DK");
            service.SerializerSettings.Encoding = Encoding.ASCII;
            service.SerializerSettings.EnableNonAsciiCharactersInMultipartFilenames = true;

            // Act 1
            ISession session = service.NewSession();

            // Assert
            Assert.AreEqual("A", session.SerializerSettings.ArrayFormat);
            Assert.AreEqual("B", session.SerializerSettings.DictionaryFormat);
            Assert.AreEqual("C", session.SerializerSettings.PropertyFormat);
            Assert.AreEqual("O", session.SerializerSettings.DateTimeFormat);
            Assert.AreEqual("da-DK", session.SerializerSettings.Culture.Name);
            Assert.AreEqual(Encoding.ASCII, session.SerializerSettings.Encoding);
            Assert.IsTrue(session.SerializerSettings.EnableNonAsciiCharactersInMultipartFilenames);

            // Act 2
            session.SerializerSettings.ArrayFormat      = "A2";
            session.SerializerSettings.DictionaryFormat = "B2";
            session.SerializerSettings.PropertyFormat   = "C2";
            session.SerializerSettings.DateTimeFormat   = "R";
            session.SerializerSettings.Formaters.AddFormater(typeof(SomeClass2), new SomeClass2Formater());
            session.SerializerSettings.Culture  = CultureInfo.GetCultureInfo("pt-BR");
            session.SerializerSettings.Encoding = Encoding.Unicode;
            session.SerializerSettings.EnableNonAsciiCharactersInMultipartFilenames = false;

            // Assert
            Assert.AreEqual("A2", session.SerializerSettings.ArrayFormat);
            Assert.AreEqual("B2", session.SerializerSettings.DictionaryFormat);
            Assert.AreEqual("C2", session.SerializerSettings.PropertyFormat);
            Assert.AreEqual("R", session.SerializerSettings.DateTimeFormat);
            Assert.AreEqual("pt-BR", session.SerializerSettings.Culture.Name);
            Assert.AreEqual(Encoding.Unicode, session.SerializerSettings.Encoding);
            Assert.IsFalse(session.SerializerSettings.EnableNonAsciiCharactersInMultipartFilenames);
            Assert.AreEqual("A", service.SerializerSettings.ArrayFormat);
            Assert.AreEqual("B", service.SerializerSettings.DictionaryFormat);
            Assert.AreEqual("C", service.SerializerSettings.PropertyFormat);
            Assert.AreEqual("O", service.SerializerSettings.DateTimeFormat);
            Assert.AreEqual("da-DK", service.SerializerSettings.Culture.Name);
            Assert.AreEqual(Encoding.ASCII, service.SerializerSettings.Encoding);
            Assert.IsTrue(service.SerializerSettings.EnableNonAsciiCharactersInMultipartFilenames);
            Assert.IsNotNull(session.SerializerSettings.Formaters.GetFormater(typeof(SomeClass1)));
            Assert.IsNotNull(session.SerializerSettings.Formaters.GetFormater(typeof(SomeClass2)));
            Assert.IsNotNull(service.SerializerSettings.Formaters.GetFormater(typeof(SomeClass1)));
            Assert.IsNull(service.SerializerSettings.Formaters.GetFormater(typeof(SomeClass2)));
        }
Exemple #9
0
        public void CanSkipUseOfService()
        {
            // Act
            ISession session = RamoneConfiguration.NewSession(BaseUrl);

            // Assert
            Assert.IsNotNull(session.Service);
            Assert.IsNotNull(session.Service.BaseUri);
            Assert.AreEqual(BaseUrl, BaseUrl.AbsoluteUri);
        }
Exemple #10
0
        public void Setup()
        {
            TestHelper.TestService = RamoneConfiguration.NewService(TestHelper.BaseUrl);

            TestHelper.TestService.DefaultEncoding = Encoding.GetEncoding("iso-8859-1");
            // FIXME: move this to some utility feature in Hypermedia namespace
            TestHelper.TestService.CodecManager.AddCodec <Resource, MasonCodec>(new MediaType("application/vnd.mason+json"));

            ICodecManager cm = TestHelper.TestService.CodecManager;
        }
Exemple #11
0
        static void Setup()
        {
            // Create new session with implicit service
            Session = RamoneConfiguration.NewSession(new Uri("https://api.twitter.com"));

            // Set default request/response media-types to UrlEncoded/JSON for Twitter.
            // This saves us the hassle of specifying codecs for all the Twitter resource types (Tweet, Timeline, User etc.)
            Session.DefaultRequestMediaType  = MediaType.ApplicationFormUrlEncoded;
            Session.DefaultResponseMediaType = MediaType.ApplicationJson;
        }
Exemple #12
0
        public void CanAvoidAddingStandardCodecs()
        {
            // Act
            RamoneConfiguration.UseStandardCodecs = false;
            IService service = RamoneConfiguration.NewService(BaseUrl);

            // Assert (a few of them)
            AssertThrows <ArgumentException>(() => service.CodecManager.GetReader(typeof(XmlDocument), MediaType.ApplicationXml));
            AssertThrows <ArgumentException>(() => service.CodecManager.GetReader(typeof(Stream), MediaType.ApplicationOctetStream));
            AssertThrows <ArgumentException>(() => service.CodecManager.GetWriter(typeof(Stream), new MediaType("unknown/other")));
        }
Exemple #13
0
        public void CanSetAndGetServiceItems()
        {
            // Arrange
            IService service = RamoneConfiguration.NewService(BaseUrl);

            // Act
            service.Items["X"] = 1234;
            int x = (int)service.Items["X"];

            // Assert
            Assert.AreEqual(1234, x);
        }
Exemple #14
0
        public void CanConfigureSimpleProperties()
        {
            // Act
            RamoneConfiguration.UserAgent       = "Tester";
            RamoneConfiguration.DefaultEncoding = Encoding.ASCII;

            IService service = RamoneConfiguration.NewService(BaseUrl);

            // Assert
            Assert.AreEqual("Tester", service.UserAgent);
            Assert.AreEqual(Encoding.ASCII, service.DefaultEncoding);
        }
Exemple #15
0
        public void CanAddAuthorizerToService()
        {
            // Arrange
            IService service = RamoneConfiguration.NewService(BaseUrl);

            // Act
            service.BasicAuthentication("John", "magic");
            ISession session  = service.NewSession();
            Response response = session.Request(BasicAuthUrl).Get();

            // Assert
            Assert.IsNotNull(response);
        }
Exemple #16
0
        public void HasExpectedDefaultSettings()
        {
            // Act
            IService service = RamoneConfiguration.NewService(BaseUrl);

            // Assert
            Assert.AreEqual("Ramone/1.0", service.UserAgent);
            Assert.AreEqual(Encoding.UTF8, service.DefaultEncoding);
            Assert.AreEqual("{0}[{1}]", service.SerializerSettings.ArrayFormat);
            Assert.AreEqual("{0}[{1}]", service.SerializerSettings.DictionaryFormat);
            Assert.AreEqual("{0}.{1}", service.SerializerSettings.PropertyFormat);
            Assert.AreEqual("s", service.SerializerSettings.DateTimeFormat);
            Assert.AreEqual(CultureInfo.InvariantCulture.Name, service.SerializerSettings.Culture.Name);
        }
Exemple #17
0
        public void WhenCreatingSessionItInheritsServiceItems()
        {
            // Arrange
            IService service = RamoneConfiguration.NewService(BaseUrl);

            service.Items["X"] = 1234;

            // Act
            ISession session = service.NewSession();
            int      x       = (int)session.Items["X"];

            // Assert
            Assert.AreEqual(1234, x);
        }
Exemple #18
0
        public void CanAddAuthorizerWithInternationalLettersToService()
        {
            // Arrange
            IService service = RamoneConfiguration.NewService(BaseUrl);

            // Act
            service.BasicAuthentication("Jürgen Wølst", "hmpf");
            ISession session = service.NewSession();

            using (Response response = session.Request(BasicAuthUrl).Get())
            {
                // Assert
                Assert.IsNotNull(response);
            }
        }
Exemple #19
0
        public void CanCreateSessionWithoutBaseUrlAndMakeAbsoluteRequests()
        {
            // Act
            ISession session = RamoneConfiguration.NewSession();

            session.Service.CodecManager.AddCodec <Dossier, XmlSerializerCodec>(CMSConstants.CMSMediaType);
            Request req = session.Bind(new Uri(BaseUrl, CMSConstants.DossierPath.Replace("{id}", "0")));

            using (var resp = req.Get <Dossier>())
            {
                // Assert
                Assert.IsNotNull(resp.Body);
                Assert.AreEqual(0, resp.Body.Id);
            }
        }
Exemple #20
0
        public void WhenChangingItemsInSessionItDoesNotChangeItemsInService()
        {
            // Arrange
            IService service = RamoneConfiguration.NewService(BaseUrl);

            service.Items["X"] = 1234;
            ISession session = service.NewSession();

            // Act
            session.Items["Y"] = "Hello";
            session.Items.Remove("X");

            // Assert
            Assert.AreEqual(1234, (int)service.Items["X"]);
            Assert.IsFalse(service.Items.ContainsKey("Y"));
        }
Exemple #21
0
        public void CanAssignCachePolicyToService()
        {
            // Act
            IService service = RamoneConfiguration.NewService(TestHelper.BaseUrl);

            service.CachePolicy = Policy;
            ISession session = service.NewSession();

            Request request = session.Request(HeaderListUrl);

            // Assert
            RequestCachePolicy policy = null;

            using (request.OnHeadersReady(r => policy = r.CachePolicy).AcceptXml().Get <HeaderList>())
            {
                Assert.AreEqual(Policy, policy);
            }
        }
Exemple #22
0
        public void CanConfigureSerializerSettings()
        {
            // Act
            RamoneConfiguration.SerializerSettings.ArrayFormat      = "A";
            RamoneConfiguration.SerializerSettings.DictionaryFormat = "B";
            RamoneConfiguration.SerializerSettings.PropertyFormat   = "C";
            RamoneConfiguration.SerializerSettings.DateTimeFormat   = "O";
            RamoneConfiguration.SerializerSettings.Culture          = CultureInfo.GetCultureInfo("da-DK");

            IService service = RamoneConfiguration.NewService(BaseUrl);

            // Assert
            Assert.AreEqual("A", service.SerializerSettings.ArrayFormat);
            Assert.AreEqual("B", service.SerializerSettings.DictionaryFormat);
            Assert.AreEqual("C", service.SerializerSettings.PropertyFormat);
            Assert.AreEqual("O", service.SerializerSettings.DateTimeFormat);
            Assert.AreEqual("da-DK", service.SerializerSettings.Culture.Name);
        }
Exemple #23
0
        static void Setup()
        {
            // Create new session with implicit service
            Session = RamoneConfiguration.NewSession(new Uri(GoogleAPIBaseUrl));

            // Get Google API keys from file (don't want the secret parts hardcoded in public repository)
            GoogleKeys keys = new GoogleKeys();

            if (SelectedAccessType != AccessType.JWT)
            {
                keys = ReadKeys();
            }

            // Configure OAuth2 with the stuff it needs for it's magic
            OAuth2Settings settings = new OAuth2Settings
            {
                TokenEndpoint = new Uri(TokenEndpointUrl)
            };

            if (SelectedAccessType == AccessType.PinCode)
            {
                settings.AuthorizationEndpoint = new Uri(AuthorizationEndpointUrl);
                settings.RedirectUri           = new Uri("urn:ietf:wg:oauth:2.0:oob");
                settings.ClientID     = keys.ClientId;
                settings.ClientSecret = keys.ClientSecret;
                settings.ClientAuthenticationMethod = OAuth2Settings.DefaultClientAuthenticationMethods.RequestBody;
            }
            else if (SelectedAccessType == AccessType.Redirect)
            {
                settings.AuthorizationEndpoint = new Uri(AuthorizationEndpointUrl);
                settings.RedirectUri           = new Uri("http://localhost");
                settings.ClientID     = keys.ClientId;
                settings.ClientSecret = keys.ClientSecret;
                settings.ClientAuthenticationMethod = OAuth2Settings.DefaultClientAuthenticationMethods.RequestBody;
            }
            else
            {
                settings.ClientAuthenticationMethod = OAuth2Settings.DefaultClientAuthenticationMethods.Other;
            }

            Session.OAuth2_Configure(settings);
        }
Exemple #24
0
        public void WhenCreatingSessionItCopiesAllSimpleProperties()
        {
            // Arrange
            IService service = RamoneConfiguration.NewService(BaseUrl);

            service.UserAgent                = "Dummy";
            service.DefaultEncoding          = Encoding.ASCII;
            service.DefaultRequestMediaType  = new MediaType("X/1");
            service.DefaultResponseMediaType = new MediaType("Y/1");

            // Act
            ISession session = service.NewSession();

            // Assert
            Assert.AreEqual("Dummy", session.UserAgent);
            Assert.AreEqual(Encoding.ASCII, session.DefaultEncoding);
            Assert.AreEqual(new MediaType("X/1"), session.DefaultRequestMediaType);
            Assert.AreEqual(new MediaType("Y/1"), session.DefaultResponseMediaType);
            Assert.AreEqual(BaseUrl, session.BaseUri);
        }
Exemple #25
0
        public void HasStandardCodec()
        {
            // Act
            IService service = RamoneConfiguration.NewService(BaseUrl);

            // Assert (a few of them)
            Assert.IsNotNull(service.CodecManager.GetReader(typeof(XmlDocument), MediaType.ApplicationXml));
            Assert.IsNotNull(service.CodecManager.GetReader(typeof(object), MediaType.ApplicationJson));
            Assert.IsNotNull(service.CodecManager.GetReader(typeof(SyndicationFeed), MediaType.ApplicationAtom));

            // Streams can read/write any media-type
            Assert.IsNotNull(service.CodecManager.GetReader(typeof(Stream), MediaType.ApplicationOctetStream));
            Assert.IsNotNull(service.CodecManager.GetReader(typeof(Stream), new MediaType("image/jpeg")));
            Assert.IsNotNull(service.CodecManager.GetReader(typeof(Stream), new MediaType("unknown/other")));

            // Writers
            Assert.IsNotNull(service.CodecManager.GetWriter(typeof(Stream), MediaType.ApplicationOctetStream));
            Assert.IsNotNull(service.CodecManager.GetWriter(typeof(Stream), new MediaType("image/jpeg")));
            Assert.IsNotNull(service.CodecManager.GetWriter(typeof(Stream), new MediaType("unknown/other")));
        }
Exemple #26
0
        public void ItUsesMultipleDefaultAcceptFromServiceWithAdditionalAcceptFromRequest()
        {
            // Arrange
            IService service = RamoneConfiguration.NewService(BaseUrl)
                               .AlwaysAccept(MediaType.ApplicationXml, 0.88)
                               .AlwaysAccept(MediaType.TextPlain);

            ISession session = service.NewSession().AlwaysAccept(MediaType.TextHtml);

            // Act
            var request = session.Bind(HeaderListUrl).Accept(MediaType.ApplicationJson).Accept("text/csv", 0.21);

            using (var r = request.Get <HeaderList>())
            {
                HeaderList headers = r.Body;

                // Assert
                Assert.IsTrue(headers.Any(h => h == "Accept: application/json, text/csv; q=0.21, application/xml; q=0.88, text/plain, text/html"), "Must contain Accept header with q-value");
            }
        }
Exemple #27
0
        public void WhenCreatingSessionItClonesRedirectSettings()
        {
            // Arrange
            IService service = RamoneConfiguration.NewService(BaseUrl);

            // Act
            ISession session1 = service.NewSession();

            service.SetAllowedRedirects(300, 11);

            ISession session2 = service.NewSession();

            session2.SetAllowedRedirects(301, 7);

            ISession session3 = service.NewSession();

            // Assert
            Assert.AreEqual(11, service.GetAllowedRedirects(300));
            Assert.AreEqual(0, session1.GetAllowedRedirects(300));
            Assert.AreEqual(11, session2.GetAllowedRedirects(300));
            Assert.AreEqual(7, session2.GetAllowedRedirects(301));
        }
        public void CanSerializeWithStandardFormaters()
        {
            // Arrange
            RamoneConfiguration.RegisterStandardSerializationFormaters(MyObjectSerializerFormaterManager);
            var o = new
            {
                Bool = false,
                Date = new DateTime(2012, 10, 12, 15, 14, 13),
                Url  = new Uri("http://dr.dk")
            };

            // Act
            ObjectSerializerSettings settings = new ObjectSerializerSettings
            {
                Formaters = MyObjectSerializerFormaterManager
            };

            string result = Serialize(o, settings);

            // Assert
            Assert.AreEqual("|Bool=False|Date=2012-10-12T15:14:13|Url=http://dr.dk/", result);
        }
Exemple #29
0
        public void WhenPostingFormUrlEncodedItAssignsCorrectContentLength_WhichMeans_DoNotIncludeByteOrderMarks()
        {
            // Arrange
            ISession localSession = RamoneConfiguration.NewSession(BaseUrl);
            Request  request      = localSession.Bind(Constants.HeaderEchoPath).AsFormUrlEncoded();

            var registrations = new
            {
                f = "json"
            };

            // Act
            using (var r = request.Post(registrations))
            {
                HeaderList headers = r.Decode <HeaderList>();

                // Assert
                string header = headers.FirstOrDefault(h => h == "Content-Length: 6");
                Assert.IsNotNull(header, "Must send 6 bytes of data (should not include byte order marks)");
                Console.WriteLine(header);
            }
        }
Exemple #30
0
        public void WhenCreatingSessionItClonesInterceptors()
        {
            // Arrange
            IService service = RamoneConfiguration.NewService(BaseUrl);

            // Act
            ISession session1 = service.NewSession();

            service.RequestInterceptors.Add(new DummyInterceptor1());

            ISession session2 = service.NewSession();

            session2.RequestInterceptors.Add(new DummyInterceptor2());

            ISession session3 = service.NewSession();

            // Assert
            Assert.AreEqual(0, session1.RequestInterceptors.Count());

            Assert.AreEqual(2, session2.RequestInterceptors.Count());

            Assert.AreEqual(1, session3.RequestInterceptors.Count());
        }