private dynamic SetupController(IProjectRepository mockRepository, string userName, HttpMethod method, string version)
        {
            dynamic projectsController = null;

            if (version == "V1")
            {
                projectsController = new ResearchLinks.Controllers.Version1.ProjectsController(mockRepository);
            }
            else if (version == "V2")
            {
                projectsController = new ResearchLinks.Controllers.Version2.ProjectsController(mockRepository);
            }
            var user     = new Mock <IPrincipal>();
            var identity = new Mock <IIdentity>();

            user.Setup(x => x.Identity).Returns(identity.Object);
            identity.Setup(x => x.Name).Returns(userName);
            Thread.CurrentPrincipal = user.Object;

            var config    = new HttpConfiguration();
            var request   = new HttpRequestMessage(method, "http://localhost/api/projects");
            var route     = config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}");
            var routeData = new HttpRouteData(route, new HttpRouteValueDictionary {
                { "controller", "projects" }
            });

            projectsController.ControllerContext = new HttpControllerContext(config, routeData, request);
            projectsController.Request           = request;
            projectsController.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
            projectsController.Request.Properties[HttpPropertyKeys.HttpRouteDataKey]     = routeData;

            return(projectsController);
        }
        private dynamic SetupController(IProjectRepository mockRepository, string userName, HttpMethod method, string version)
        {
            dynamic projectsController = null;
            
            if (version == "V1") 
            {
                projectsController = new ResearchLinks.Controllers.Version1.ProjectsController(mockRepository);
            } 
            else if (version == "V2") 
            {
                projectsController = new ResearchLinks.Controllers.Version2.ProjectsController(mockRepository);
            }
            var user = new Mock<IPrincipal>();
            var identity = new Mock<IIdentity>();
            user.Setup(x => x.Identity).Returns(identity.Object);
            identity.Setup(x => x.Name).Returns(userName);
            Thread.CurrentPrincipal = user.Object;

            var config = new HttpConfiguration();
            var request = new HttpRequestMessage(method, "http://localhost/api/projects");
            var route = config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}");
            var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "projects" } });

            projectsController.ControllerContext = new HttpControllerContext(config, routeData, request);
            projectsController.Request = request;
            projectsController.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
            projectsController.Request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
            
            return projectsController;
        }