OSDN Git Service

Monoでのテスト時に相対URLのUriインスタンスが正しく生成されない問題の修正
authorKimura Youichi <kim.upsilon@bucyou.net>
Sun, 23 Nov 2014 04:55:38 +0000 (13:55 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sun, 23 Nov 2014 04:57:05 +0000 (13:57 +0900)
Mono 3.4.0 で new Uri("/tetetete", UriKind.RelativeOrAbsolute) とすると file:///tetetete と解釈されてしまう
https://travis-ci.org/opentween/OpenTween/builds/41852208

OpenTween.Tests/ShortUrlTest.cs

index 0ba25ed..09b874e 100644 (file)
@@ -72,7 +72,7 @@ namespace OpenTween
                     Assert.Equal(HttpMethod.Head, x.Method);
                     Assert.Equal(new Uri("https://www.flickr.com/photo.gne?short=hoge"), x.RequestUri);
 
-                    return this.CreateRedirectResponse("/photos/foo/11111/");
+                    return this.CreateRedirectResponse("/photos/foo/11111/", UriKind.Relative);
                 });
 
                 Assert.Equal(new Uri("https://www.flickr.com/photos/foo/11111/"),
@@ -219,7 +219,7 @@ namespace OpenTween
                     Assert.Equal(HttpMethod.Head, x.Method);
                     Assert.Equal(new Uri("https://t.co/hogehoge"), x.RequestUri);
 
-                    return this.CreateRedirectResponse("/tetetete");
+                    return this.CreateRedirectResponse("/tetetete", UriKind.Relative);
                 });
 
                 // https://t.co/tetetete -> http://example.com/tetetete
@@ -378,8 +378,13 @@ namespace OpenTween
 
         private HttpResponseMessage CreateRedirectResponse(string uriStr)
         {
+            return this.CreateRedirectResponse(uriStr, UriKind.Absolute);
+        }
+
+        private HttpResponseMessage CreateRedirectResponse(string uriStr, UriKind uriKind)
+        {
             var response = new HttpResponseMessage(HttpStatusCode.TemporaryRedirect);
-            response.Headers.Location = new Uri(uriStr, UriKind.RelativeOrAbsolute);
+            response.Headers.Location = new Uri(uriStr, uriKind);
             return response;
         }