Package com.netflix.priam.resources

Source Code of com.netflix.priam.resources.PriamInstanceResourceTest

package com.netflix.priam.resources;

import java.util.List;

import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;

import com.google.common.collect.ImmutableList;
import com.netflix.priam.IConfiguration;
import com.netflix.priam.identity.IPriamInstanceFactory;
import com.netflix.priam.identity.PriamInstance;

import mockit.Expectations;
import mockit.Mocked;

import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

public class PriamInstanceResourceTest
{
    private static final String APP_NAME = "myApp";
    private static final int NODE_ID = 3;

    private @Mocked IConfiguration config;
    private @Mocked IPriamInstanceFactory factory;
    private PriamInstanceResource resource;

    @Before
    public void setUp()
    {
        resource = new PriamInstanceResource(config, factory);
    }

    @Test
    public void getInstances()
    {
        new Expectations() {
            PriamInstance instance1, instance2, instance3;
            List<PriamInstance> instances = ImmutableList.of(instance1, instance2, instance3);

            {
                config.getAppName(); result = APP_NAME;
                factory.getAllIds(APP_NAME); result = instances;
                instance1.toString(); result = "instance1";
                instance2.toString(); result = "instance2";
                instance3.toString(); result = "instance3";
            }
        };

        assertEquals("instance1\ninstance2\ninstance3\n", resource.getInstances());
    }

    @Test
    public void getInstance()
    {
        final String expected = "plain text describing the instance";
        new Expectations() {
            PriamInstance instance;

            {
                config.getAppName(); result = APP_NAME;
                factory.getInstance(APP_NAME, config.getDC(), NODE_ID); result = instance;
                instance.toString(); result = expected;
            }
        };

        assertEquals(expected, resource.getInstance(NODE_ID));
    }

    @Test
    public void getInstance_notFound()
    {
        new Expectations() {{
            config.getAppName(); result = APP_NAME;
            factory.getInstance(APP_NAME, config.getDC(), NODE_ID); result = null;
        }};

        try
        {
            resource.getInstance(NODE_ID);
            fail("Expected WebApplicationException thrown");
        } catch(WebApplicationException e)
        {
            assertEquals(404, e.getResponse().getStatus());
            assertEquals("No priam instance with id " + NODE_ID + " found", e.getResponse().getEntity());
        }
    }

    @Test
    public void createInstance()
    {
        final String instanceID = "i-abc123";
        final String hostname = "dom.com";
        final String ip = "123.123.123.123";
        final String rack = "us-east-1a";
        final String token = "1234567890";

        new Expectations() {
          PriamInstance instance;

          {
              config.getAppName(); result = APP_NAME;
              factory.create(APP_NAME, NODE_ID, instanceID, hostname, ip, rack, null, token); result = instance;
              instance.getId(); result = NODE_ID;
          }
        };

        Response response = resource.createInstance(NODE_ID, instanceID, hostname, ip, rack, token);
        assertEquals(201, response.getStatus());
        assertEquals("/"+NODE_ID, response.getMetadata().getFirst("location").toString());
    }

    @Test
    public void deleteInstance()
    {
        new Expectations() {
          PriamInstance instance;

          {
              config.getAppName(); result = APP_NAME;
              factory.getInstance(APP_NAME, config.getDC(), NODE_ID); result = instance;
              factory.delete(instance);
          }
        };

        Response response = resource.deleteInstance(NODE_ID);
        assertEquals(204, response.getStatus());
    }

    @Test
    public void deleteInstance_notFound()
    {
        new Expectations() {{
            config.getAppName(); result = APP_NAME;
            factory.getInstance(APP_NAME, config.getDC(), NODE_ID); result = null;
        }};

        try
        {
            resource.getInstance(NODE_ID);
            fail("Expected WebApplicationException thrown");
        } catch(WebApplicationException e)
        {
            assertEquals(404, e.getResponse().getStatus());
            assertEquals("No priam instance with id " + NODE_ID + " found", e.getResponse().getEntity());
        }
    }
}
TOP

Related Classes of com.netflix.priam.resources.PriamInstanceResourceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.