Example #1
0
        public void TestThatWrongIdOrderBreaks()
        {
            var actionPostUser         = new Action(3, "POST", "/users", "register(body:Vlingo.Http.Tests.Sample.User.UserData userData)", null);
            var actionPatchUserContact = new Action(1, "PATCH", "/users/{userId}/contact", "changeContact(string userId, body:Vlingo.Http.Tests.Sample.User.ContactData contactData)", null);

            var actions = new List <Action> {
                actionPostUser, actionPatchUserContact
            };

            var resourceHandlerClass = ConfigurationResource <UserResource> .NewResourceHandlerTypeFor("Vlingo.Http.Tests.Sample.User.UserResource");

            Assert.Throws <ArgumentException>(() => ConfigurationResource <UserResource> .NewResourceFor("user", resourceHandlerClass, 5, actions));
        }
    public ResourceTestFixtures(ITestOutputHelper output)
    {
        var converter = new Converter(output);

        Console.SetOut(converter);

        World = World.Start(WorldName);

        ActionPostUser         = new Action(0, "POST", "/users", "Register(body:Vlingo.Xoom.Http.Tests.Sample.User.UserData userData)", "Vlingo.Xoom.Http.Tests.Sample.User.UserDataMapper");
        ActionPatchUserContact = new Action(1, "PATCH", "/users/{userId}/contact", "changeContact(string userId, body:Vlingo.Xoom.Http.Tests.Sample.User.ContactData contactData)", "Vlingo.Xoom.Http.Tests.Sample.User.UserDataMapper");
        ActionPatchUserName    = new Action(2, "PATCH", "/users/{userId}/name", "changeName(string userId, body:Vlingo.Xoom.Http.Tests.Sample.User.NameData nameData)", "Vlingo.Xoom.Http.Tests.Sample.User.UserDataMapper");
        ActionGetUser          = new Action(3, "GET", "/users/{userId}", "queryUser(string userId)", "Vlingo.Xoom.Http.Tests.Sample.User.UserDataMapper");
        ActionGetUsers         = new Action(4, "GET", "/users", "queryUsers()", "Vlingo.Xoom.Http.Tests.Sample.User.UserDataMapper");
        ActionGetUserError     = new Action(5, "GET", "/users/{userId}/error", "queryUserError(string userId)", "Vlingo.Xoom.Http.Tests.Sample.User.UserDataMapper");
        ActionPutUser          = new Action(6, "PUT", "/users/{userId}", "changeUser(string userId, body:Vlingo.Xoom.Http.Tests.Sample.User.UserData userData)", "Vlingo.Xoom.Http.Tests.Sample.User.UserDataMapper");


        var actions = new List <Action> {
            ActionPostUser,
            ActionPatchUserContact,
            ActionPatchUserName,
            ActionGetUser,
            ActionGetUsers,
            ActionGetUserError,
            ActionPutUser
        };

        ResourceHandlerType = ConfigurationResource.NewResourceHandlerTypeFor("Vlingo.Xoom.Http.Tests.Sample.User.UserResource");

        Resource = ConfigurationResource.NewResourceFor("user", ResourceHandlerType, 7, actions, World.DefaultLogger);

        Resource.AllocateHandlerPool(World.Stage);

        var oneResource = new Dictionary <string, IResource>(1);

        oneResource.Add(Resource.Name, Resource);

        Resources  = new Resources(oneResource);
        Dispatcher = new TestDispatcher(Resources, World.DefaultLogger);
    }
    public ResourceDispatcherGeneratorTest(ITestOutputHelper output)
    {
        var converter = new Converter(output);

        Console.SetOut(converter);

        var actionPostUser         = new Action(0, "POST", "/users", "register(body:Vlingo.Xoom.Http.Tests.Sample.User.UserData userData)", null);
        var actionPatchUserContact = new Action(1, "PATCH", "/users/{userId}/contact", "changeContact(string userId, body:Vlingo.Xoom.Http.Tests.Sample.User.ContactData contactData)", null);
        var actionPatchUserName    = new Action(2, "PATCH", "/users/{userId}/name", "changeName(string userId, body:Vlingo.Xoom.Http.Tests.Sample.User.NameData nameData)", null);
        var actionGetUser          = new Action(3, "GET", "/users/{userId}", "queryUser(string userId)", null);
        var actionGetUsers         = new Action(4, "GET", "/users", "queryUsers()", null);
        var actionQueryUserError   = new Action(5, "GET", "/users/{userId}/error", "queryUserError(string userId)", null);
        var actionPutUser          = new Action(6, "PUT", "/users/{userId}", "changeUser(string userId, body:Vlingo.Xoom.Http.Tests.Sample.User.UserData userData)", null);

        _actions = new List <Action>
        {
            actionPostUser,
            actionPatchUserContact,
            actionPatchUserName,
            actionGetUser,
            actionGetUsers,
            actionQueryUserError,
            actionPutUser
        };

        Type resourceHandlerClass;

        try
        {
            resourceHandlerClass = Type.GetType("Vlingo.Xoom.Http.Tests.Sample.User.UserResource");
        }
        catch (Exception)
        {
            resourceHandlerClass = ConfigurationResource.NewResourceHandlerTypeFor("Vlingo.Xoom.Http.Tests.Sample.User.UserResource");
        }

        _resource = ConfigurationResource.NewResourceFor("user", resourceHandlerClass, 5, _actions, ConsoleLogger.TestInstance());
    }
Example #4
0
    private static IConfigurationResource LoadResource(HttpProperties properties, string resourceNameKey, ILogger logger)
    {
        var resourceName             = resourceNameKey.Substring(ResourceNamePrefix.Length);
        var resourceActionNames      = ActionNamesFrom(properties.GetProperty(resourceNameKey), resourceNameKey);
        var resourceHandlerKey       = $"resource.{resourceName}.handler";
        var resourceHandlerClassname = properties.GetProperty(resourceHandlerKey);
        var handlerPoolKey           = $"resource.{resourceName}.pool";
        var maybeHandlerPoolSize     = int.Parse(properties.GetProperty(handlerPoolKey, "1") ?? "1");
        var handlerPoolSize          = maybeHandlerPoolSize <= 0 ? 1 : maybeHandlerPoolSize;

        try
        {
            var resourceActions = ResourceActionsOf(properties, resourceName, resourceActionNames);

            var resourceHandlerClass = ConfigurationResource.NewResourceHandlerTypeFor(resourceHandlerClassname);

            return(ResourceFor(resourceName, resourceHandlerClass !, handlerPoolSize, resourceActions, logger));
        }
        catch (Exception e)
        {
            Console.WriteLine("vlingo-net/http: Failed to load resource: " + resourceName + " because: " + e.Message);
            throw;
        }
    }