com.redhat.lightblue.metadata.rdbms.impl.RDBMSPropertyParserImplTest.java Source code

Java tutorial

Introduction

Here is the source code for com.redhat.lightblue.metadata.rdbms.impl.RDBMSPropertyParserImplTest.java

Source

/*
 Copyright 2014 Red Hat, Inc. and/or its affiliates.
    
 This file is part of lightblue.
    
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
    
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
    
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.redhat.lightblue.metadata.rdbms.impl;

import static com.redhat.lightblue.util.test.AbstractJsonNodeTest.loadJsonNode;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;

import java.io.IOException;

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.redhat.lightblue.common.rdbms.RDBMSConstants;
import com.redhat.lightblue.metadata.parser.Extensions;
import com.redhat.lightblue.metadata.parser.JSONMetadataParser;
import com.redhat.lightblue.metadata.parser.MetadataParser;
import com.redhat.lightblue.metadata.rdbms.enums.DialectOperators;
import com.redhat.lightblue.metadata.rdbms.model.RDBMS;
import com.redhat.lightblue.metadata.types.DefaultTypes;
import com.redhat.lightblue.util.JsonUtils;

public class RDBMSPropertyParserImplTest {

    @Rule
    public ExpectedException expectedEx = ExpectedException.none();

    @Test(expected = IllegalArgumentException.class)
    public void testConvert_NullObject() throws IOException {
        MetadataParser<JsonNode> p = new JSONMetadataParser(new Extensions<JsonNode>(), new DefaultTypes(),
                new JsonNodeFactory(true));

        JsonNode emptyNode = JsonUtils.json("{}");

        new RDBMSPropertyParserImpl<JsonNode>().convert(p, emptyNode, null);
    }

    @Test
    public void testConvert() throws IOException {
        MetadataParser<JsonNode> p = new JSONMetadataParser(new Extensions<JsonNode>(), new DefaultTypes(),
                new JsonNodeFactory(true));

        JsonNode node = loadJsonNode("RdbmsMetadataTest-fetch.json");

        RDBMS rdbms = new RDBMSPropertyParserImpl<JsonNode>().parse(RDBMSPropertyParserImpl.NAME, p,
                node.get("rdbms"));

        MetadataParser<JsonNode> p2 = new JSONMetadataParser(new Extensions<JsonNode>(), new DefaultTypes(),
                new JsonNodeFactory(true));

        new RDBMSPropertyParserImpl<JsonNode>().convert(p2, node, rdbms);

        assertNotNull(p2.getObjectProperty(node, "rdbms"));
    }

    @Test
    public void testParse_InvalidName() {
        String invalidname = "FAKE";

        expectedEx.expect(com.redhat.lightblue.util.Error.class);
        expectedEx.expectMessage(
                "{\"objectType\":\"error\",\"errorCode\":\"" + RDBMSConstants.ERR_WRONG_ROOT_NODE_NAME
                        + "\",\"msg\":\"Node name informed:" + invalidname + "\"}");

        new RDBMSPropertyParserImpl<Object>().parse(invalidname, null, null);
    }

    @Test
    public void testParse_NoDialect() throws IOException {
        expectedEx.expect(com.redhat.lightblue.util.Error.class);
        expectedEx.expectMessage("{\"objectType\":\"error\",\"errorCode\":\"" + RDBMSConstants.ERR_FIELD_REQUIRED
                + "\",\"msg\":\"No field informed\"}");

        MetadataParser<JsonNode> p = new JSONMetadataParser(new Extensions<JsonNode>(), new DefaultTypes(),
                new JsonNodeFactory(true));

        JsonNode emptyNode = JsonUtils.json("{}");

        new RDBMSPropertyParserImpl<JsonNode>().parse(RDBMSPropertyParserImpl.NAME, p, emptyNode);
    }

    @Test
    public void testParse_EmptyDialect() throws IOException {
        expectedEx.expect(com.redhat.lightblue.util.Error.class);
        expectedEx.expectMessage("{\"objectType\":\"error\",\"errorCode\":\"" + RDBMSConstants.ERR_FIELD_REQUIRED
                + "\",\"msg\":\"No field informed\"}");

        MetadataParser<JsonNode> p = new JSONMetadataParser(new Extensions<JsonNode>(), new DefaultTypes(),
                new JsonNodeFactory(true));

        JsonNode emptyNode = JsonUtils.json("{\"dialect\":\"\"}");

        new RDBMSPropertyParserImpl<JsonNode>().parse(RDBMSPropertyParserImpl.NAME, p, emptyNode);
    }

    @Test
    public void testParse_NoOperation() throws IOException {
        expectedEx.expect(com.redhat.lightblue.util.Error.class);
        expectedEx.expectMessage("{\"objectType\":\"error\",\"errorCode\":\"" + RDBMSConstants.ERR_FIELD_REQUIRED
                + "\",\"msg\":\"No Operation informed\"}");

        MetadataParser<JsonNode> p = new JSONMetadataParser(new Extensions<JsonNode>(), new DefaultTypes(),
                new JsonNodeFactory(true));

        JsonNode emptyNode = JsonUtils.json("{\"dialect\":\"" + DialectOperators.ORACLE + "\"}");

        new RDBMSPropertyParserImpl<JsonNode>().parse(RDBMSPropertyParserImpl.NAME, p, emptyNode);
    }

    @Test
    public void testParse_Delete() throws IOException {
        MetadataParser<JsonNode> p = new JSONMetadataParser(new Extensions<JsonNode>(), new DefaultTypes(),
                new JsonNodeFactory(true));

        JsonNode node = loadJsonNode("RdbmsMetadataTest-delete.json");

        RDBMS rdbms = new RDBMSPropertyParserImpl<JsonNode>().parse(RDBMSPropertyParserImpl.NAME, p,
                node.get("rdbms"));

        assertEquals(DialectOperators.ORACLE, rdbms.getDialect());
        assertNotNull(rdbms.getDelete());
        assertNull(rdbms.getFetch());
        assertNull(rdbms.getInsert());
        assertNull(rdbms.getSave());
        assertNull(rdbms.getUpdate());
    }

    @Test
    public void testParse_Fetch() throws IOException {
        MetadataParser<JsonNode> p = new JSONMetadataParser(new Extensions<JsonNode>(), new DefaultTypes(),
                new JsonNodeFactory(true));

        JsonNode node = loadJsonNode("RdbmsMetadataTest-fetch.json");

        RDBMS rdbms = new RDBMSPropertyParserImpl<JsonNode>().parse(RDBMSPropertyParserImpl.NAME, p,
                node.get("rdbms"));

        assertEquals(DialectOperators.ORACLE, rdbms.getDialect());
        assertNull(rdbms.getDelete());
        assertNotNull(rdbms.getFetch());
        assertNull(rdbms.getInsert());
        assertNull(rdbms.getSave());
        assertNull(rdbms.getUpdate());
    }

    @Test
    public void testParse_Insert() throws IOException {
        MetadataParser<JsonNode> p = new JSONMetadataParser(new Extensions<JsonNode>(), new DefaultTypes(),
                new JsonNodeFactory(true));

        JsonNode node = loadJsonNode("RdbmsMetadataTest-insert.json");

        RDBMS rdbms = new RDBMSPropertyParserImpl<JsonNode>().parse(RDBMSPropertyParserImpl.NAME, p,
                node.get("rdbms"));

        assertEquals(DialectOperators.ORACLE, rdbms.getDialect());
        assertNull(rdbms.getDelete());
        assertNull(rdbms.getFetch());
        assertNotNull(rdbms.getInsert());
        assertNull(rdbms.getSave());
        assertNull(rdbms.getUpdate());
    }

    @Test
    public void testParse_Save() throws IOException {
        MetadataParser<JsonNode> p = new JSONMetadataParser(new Extensions<JsonNode>(), new DefaultTypes(),
                new JsonNodeFactory(true));

        JsonNode node = loadJsonNode("RdbmsMetadataTest-save.json");

        RDBMS rdbms = new RDBMSPropertyParserImpl<JsonNode>().parse(RDBMSPropertyParserImpl.NAME, p,
                node.get("rdbms"));

        assertEquals(DialectOperators.ORACLE, rdbms.getDialect());
        assertNull(rdbms.getDelete());
        assertNull(rdbms.getFetch());
        assertNull(rdbms.getInsert());
        assertNotNull(rdbms.getSave());
        assertNull(rdbms.getUpdate());
    }

    @Test
    public void testParse_Update() throws IOException {
        MetadataParser<JsonNode> p = new JSONMetadataParser(new Extensions<JsonNode>(), new DefaultTypes(),
                new JsonNodeFactory(true));

        JsonNode node = loadJsonNode("RdbmsMetadataTest-update.json");

        RDBMS rdbms = new RDBMSPropertyParserImpl<JsonNode>().parse(RDBMSPropertyParserImpl.NAME, p,
                node.get("rdbms"));

        assertEquals(DialectOperators.ORACLE, rdbms.getDialect());
        assertNull(rdbms.getDelete());
        assertNull(rdbms.getFetch());
        assertNull(rdbms.getInsert());
        assertNull(rdbms.getSave());
        assertNotNull(rdbms.getUpdate());
    }

}