com.magnet.mmx.server.plugin.mmxmgmt.api.MMXVersionResourceTest.java Source code

Java tutorial

Introduction

Here is the source code for com.magnet.mmx.server.plugin.mmxmgmt.api.MMXVersionResourceTest.java

Source

/*   Copyright (c) 2015 Magnet Systems, Inc.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package com.magnet.mmx.server.plugin.mmxmgmt.api;

import com.google.gson.Gson;
import com.magnet.mmx.server.common.data.AppEntity;
import com.magnet.mmx.server.plugin.mmxmgmt.MMXVersion;
import com.magnet.mmx.server.plugin.mmxmgmt.api.tags.MMXTopicTagsResourceTest;
import com.magnet.mmx.server.plugin.mmxmgmt.db.AppDAOImpl;
import com.magnet.mmx.server.plugin.mmxmgmt.servlet.BaseJAXRSTest;
import com.magnet.mmx.server.plugin.mmxmgmt.util.DBTestUtil;
import com.magnet.mmx.server.plugin.mmxmgmt.util.MMXServerConstants;
import mockit.Mock;
import mockit.MockUp;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.log4j.Level;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import java.io.InputStream;
import java.util.Properties;
import java.util.UUID;

import static org.junit.Assert.assertEquals;

/**
*/
public class MMXVersionResourceTest extends BaseJAXRSTest {
    private static final Logger LOGGER = LoggerFactory.getLogger(MMXVersionResourceTest.class);
    private static final String baseUri = "http://localhost:8086/mmxmgmt/api/v1/mmx/version";
    private static BasicDataSource ds;
    private static AppEntity appEntity;

    public MMXVersionResourceTest() {
        super(baseUri);
    }

    @BeforeClass
    public static void setupDatabase() throws Exception {
        java.util.logging.Logger.getLogger("com.google.inject").setLevel(java.util.logging.Level.SEVERE);
        org.apache.log4j.Logger.getLogger("org.apache.http").setLevel(org.apache.log4j.Level.DEBUG);
        org.apache.log4j.Logger.getLogger("org.jboss.resteasy").setLevel(Level.OFF);
        InputStream inputStream = MMXTopicTagsResourceTest.class.getResourceAsStream("/test.properties");

        Properties testProperties = new Properties();
        testProperties.load(inputStream);

        String host = testProperties.getProperty("db.host");
        String port = testProperties.getProperty("db.port");
        String user = testProperties.getProperty("db.user");
        String password = testProperties.getProperty("db.password");
        String driver = testProperties.getProperty("db.driver");
        String schema = testProperties.getProperty("db.schema");

        String url = "jdbc:mysql://" + host + ":" + port + "/" + schema;

        ds = new BasicDataSource();
        ds.setDriverClassName(driver);
        ds.setUsername(user);
        ds.setPassword(password);
        ds.setUrl(url);

        DBTestUtil.setBasicDataSource(ds);
        new MockUp<AppDAOImpl>() {
            @Mock
            protected String getEncrypted(String value) {
                return value;
            }
        };
        DBTestUtil.setupMockDBUtil();
        appEntity = createRandomApp();
        LOGGER.warn("Finished setupDatabase");
    }

    public static AppEntity createRandomApp() throws Exception {
        String serverUserId = "serverUser";
        String appName = "topictagresourcetestapp";
        String appId = RandomStringUtils.randomAlphanumeric(10);
        String apiKey = UUID.randomUUID().toString();
        String googleApiKey = UUID.randomUUID().toString();
        String googleProjectId = RandomStringUtils.randomAlphanumeric(8);
        String apnsPwd = RandomStringUtils.randomAlphanumeric(10);
        String ownerId = RandomStringUtils.randomAlphabetic(10);
        String ownerEmail = RandomStringUtils.randomAlphabetic(4) + "@magnet.com";
        String guestSecret = RandomStringUtils.randomAlphabetic(10);
        boolean apnsProductionEnvironment = false;

        AppEntity appEntity = new AppEntity();
        appEntity.setServerUserId(serverUserId);
        appEntity.setName(appName);
        appEntity.setAppId(appId);
        appEntity.setAppAPIKey(apiKey);
        appEntity.setGoogleAPIKey(googleApiKey);
        appEntity.setGoogleProjectId(googleProjectId);
        appEntity.setApnsCertPassword(apnsPwd);
        appEntity.setOwnerId(ownerId);
        appEntity.setOwnerEmail(ownerEmail);
        appEntity.setGuestSecret(guestSecret);
        appEntity.setApnsCertProduction(apnsProductionEnvironment);
        DBTestUtil.getAppDAO().persist(appEntity);
        return appEntity;
    }

    @Test
    public void getVersion() {
        WebTarget getService = getClient().target(getBaseURI());
        Invocation.Builder invocationBuilder = getService.request(MediaType.APPLICATION_JSON);
        invocationBuilder.header(MMXServerConstants.HTTP_HEADER_APP_ID, appEntity.getAppId());
        invocationBuilder.header(MMXServerConstants.HTTP_HEADER_REST_API_KEY, appEntity.getAppAPIKey());
        String jsonString = invocationBuilder.get(String.class);
        Gson gson = new Gson();
        MMXVersionResource.Version version = gson.fromJson(jsonString, MMXVersionResource.Version.class);
        assertEquals(MMXVersion.getVersion(), version.getVersion());
        LOGGER.trace("getVersion : response={}", jsonString);

    }
}