Package com.vaadin.tools

Source Code of com.vaadin.tools.CvalAddonstCheckerUseCasesTest

/*
* Copyright 2000-2014 Vaadin Ltd.
*
* 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.vaadin.tools;

import static com.vaadin.tools.CvalAddonsChecker.VAADIN_AGPL;
import static com.vaadin.tools.CvalAddonsChecker.VAADIN_CVAL;
import static com.vaadin.tools.CvalChecker.computeLicenseName;
import static com.vaadin.tools.CvalChecker.deleteCache;
import static com.vaadin.tools.CvalCheckerTest.INVALID_KEY;
import static com.vaadin.tools.CvalCheckerTest.VALID_KEY;
import static com.vaadin.tools.CvalCheckerTest.addLicensedJarToClasspath;
import static com.vaadin.tools.CvalCheckerTest.cachedPreferences;
import static com.vaadin.tools.CvalCheckerTest.captureSystemOut;
import static com.vaadin.tools.CvalCheckerTest.expiredLicenseProvider;
import static com.vaadin.tools.CvalCheckerTest.productNameAgpl;
import static com.vaadin.tools.CvalCheckerTest.productNameCval;
import static com.vaadin.tools.CvalCheckerTest.readSystemOut;
import static com.vaadin.tools.CvalCheckerTest.restoreSystemOut;
import static com.vaadin.tools.CvalCheckerTest.saveCache;
import static com.vaadin.tools.CvalCheckerTest.unreachableLicenseProvider;
import static com.vaadin.tools.CvalCheckerTest.validEvaluationLicenseProvider;
import static com.vaadin.tools.CvalCheckerTest.validLicenseProvider;

import org.junit.Assert;
import org.junit.Test;

import com.vaadin.tools.CvalChecker.CvalServer;

/**
* Tests for Use Cases
*/
public class CvalAddonstCheckerUseCasesTest {

    enum License {
        NONE, EVAL, INVALID, REAL, EVAL_EXPIRED, REAL_EXPIRED
    };

    enum Version {
        AGPL, CVAL
    };

    enum Validated {
        YES, NO, OLD_KEY
    };

    enum Network {
        ON, OFF
    };

    enum Compile {
        YES, NO
    };

    enum Cached {
        YES, NO
    };

    enum Message {
        AGPL("AGPL"), VALID(">.* valid"), INVALID("not valid"), NO_LICENSE(
                "not found"), NO_VALIDATED("has not been validated"), EXPIRED(
                "has expired"), EVALUATION("evaluation");

        String msg;

        Message(String s) {
            msg = s;
        }
    }

    @Test
    public void testUseCases() throws Exception {
        useCase(1, License.NONE, Version.AGPL, Validated.NO, Network.OFF,
                Compile.YES, Cached.NO, Message.AGPL);

        useCase(2, License.NONE, Version.CVAL, Validated.NO, Network.ON,
                Compile.NO, Cached.NO, Message.NO_LICENSE);

        useCase(3, License.NONE, Version.CVAL, Validated.NO, Network.OFF,
                Compile.NO, Cached.NO, Message.NO_LICENSE);

        useCase(4, License.EVAL, Version.CVAL, Validated.NO, Network.ON,
                Compile.YES, Cached.YES, Message.EVALUATION);

        useCase(5, License.INVALID, Version.CVAL, Validated.NO, Network.OFF,
                Compile.YES, Cached.NO, Message.NO_VALIDATED);

        useCase(6, License.INVALID, Version.CVAL, Validated.NO, Network.ON,
                Compile.NO, Cached.NO, Message.INVALID);

        useCase(7, License.REAL, Version.CVAL, Validated.NO, Network.ON,
                Compile.YES, Cached.YES, Message.VALID);

        useCase(8, License.REAL, Version.CVAL, Validated.NO, Network.OFF,
                Compile.YES, Cached.NO, Message.NO_VALIDATED);

        useCase(9, License.REAL, Version.CVAL, Validated.YES, Network.OFF,
                Compile.YES, Cached.YES, Message.VALID);

        useCase(10, License.EVAL_EXPIRED, Version.CVAL, Validated.NO,
                Network.ON, Compile.NO, Cached.YES, Message.EXPIRED);

        useCase(11, License.EVAL_EXPIRED, Version.CVAL, Validated.YES,
                Network.OFF, Compile.NO, Cached.YES, Message.EXPIRED);

        useCase(12, License.REAL_EXPIRED, Version.CVAL, Validated.YES,
                Network.OFF, Compile.NO, Cached.YES, Message.EXPIRED);

        useCase(13, License.REAL_EXPIRED, Version.CVAL, Validated.NO,
                Network.ON, Compile.NO, Cached.YES, Message.EXPIRED);

        useCase(14, License.INVALID, Version.CVAL, Validated.OLD_KEY,
                Network.OFF, Compile.YES, Cached.NO, Message.NO_VALIDATED);
    }

    @Test
    public void testMultipleLicenseUseCases() throws Exception {
        addLicensedJarToClasspath("test.foo", VAADIN_CVAL);
        System.setProperty(computeLicenseName("test.foo"), VALID_KEY);

        useCase(15, License.REAL, Version.CVAL, Validated.YES, Network.OFF,
                Compile.YES, Cached.YES, Message.NO_VALIDATED);

        useCase(16, License.REAL, Version.CVAL, Validated.YES, Network.ON,
                Compile.NO, Cached.YES, Message.INVALID);
    }

    private void useCase(int number, License lic, Version ver, Validated val,
            Network net, Compile res, Cached cached, Message msg)
            throws Exception {

        if (ver == Version.AGPL) {
            addLicensedJarToClasspath(productNameAgpl, VAADIN_AGPL);
            addLicensedJarToClasspath(productNameCval, null);
        } else {
            addLicensedJarToClasspath(productNameAgpl, null);
            addLicensedJarToClasspath(productNameCval, VAADIN_CVAL);
        }

        String licenseName = computeLicenseName(productNameCval);

        if (lic == License.NONE) {
            System.getProperties().remove(licenseName);
        } else if (lic == License.INVALID) {
            System.setProperty(licenseName, INVALID_KEY);
        } else {
            System.setProperty(licenseName, VALID_KEY);
        }

        if (val == Validated.NO) {
            deleteCache(productNameCval);
        } else {
            String type = lic == License.EVAL || lic == License.EVAL_EXPIRED ? "evaluation"
                    : null;
            Boolean expired = lic == License.EVAL_EXPIRED
                    || lic == License.REAL_EXPIRED ? true : null;
            String key = val == Validated.OLD_KEY ? "oldkey" : null;
            saveCache(productNameCval, key, expired, null, type);
        }

        CvalServer licenseProvider = validLicenseProvider;
        if (net == Network.OFF) {
            licenseProvider = unreachableLicenseProvider;
        } else if (lic == License.EVAL_EXPIRED || lic == License.REAL_EXPIRED) {
            licenseProvider = expiredLicenseProvider;
        } else if (lic == License.EVAL) {
            licenseProvider = validEvaluationLicenseProvider;
        }

        CvalAddonsChecker addonChecker = new CvalAddonsChecker();
        addonChecker.setLicenseProvider(licenseProvider).setFilter(".*test.*");

        captureSystemOut();

        String testNumber = "Test #" + number + " ";
        String message;
        try {
            addonChecker.run();
            message = readSystemOut();
            if (res == Compile.NO) {
                Assert.fail(testNumber + "Exception not thrown:" + message);
            }
        } catch (Exception e) {
            restoreSystemOut();
            message = e.getMessage();
            if (res == Compile.YES) {
                Assert.fail(testNumber + "Unexpected Exception: "
                        + e.getMessage());
            }
        }

        // System.err.println("\n> " + testNumber + " " + lic + " " + ver + " "
        // + val + " " + net + " " + res + " " + cached + "\n" + message);

        Assert.assertTrue(testNumber + "Fail:\n" + message
                + "\nDoes not match:" + msg.msg,
                message.matches("(?s).*" + msg.msg + ".*"));

        String c = cachedPreferences(productNameCval);
        Assert.assertTrue(testNumber + "Fail: cacheExists != "
                + (cached == Cached.YES) + "\n  " + c,
                (c != null) == (cached == Cached.YES));
    }
}
TOP

Related Classes of com.vaadin.tools.CvalAddonstCheckerUseCasesTest

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.