SPRING BOOT:创建一种在测试过程中自动登录的方法

时间:2019-03-06 17:48:59

标签: java spring postgresql spring-boot authentication

我正在使用Spring Boot和PostgreSQL开发应用程序。 在一些测试中,我需要让演员联系起来并实现该动作。

我使用getPrincipal()方法获取对象,这不是问题(我正在获取Garage,这是普通Actor的扩展)。

public Repair create(final int varId) {
    final Repair r = new Repair();

    Garage g = (Garage) this.actorService.findByPrincipal();
    Vehicle v = this.vehicleService.findOne(varId);
    r.setEntryDate(new Date(System.currentTimeMillis()-1));
    r.setGarage(g);
    r.setVehicle(v);
    return r;

但是当我测试该方法时,我需要一种“登录”然后注销的方法。因此,我想创建一个诸如authenticate(String actorName)之类的方法,但是我不确定如何开发它,因为以其他方式无法实现测试。

这是我的测试代码的一部分:

    public void template(String entryDate, String departureDate, String cause, String actions, Double labourPrice, Double itemsPrice, Double finalPrice,
                        int repairID, String garageName, int garageID, int vehicleID, String operation, final Class<?> expected) {
    Class<?> caught;
    Repair r;
    caught = null;
    Date now = new Date(System.currentTimeMillis());
    Calendar c = Calendar.getInstance();
    c.setTime(now);
    c.add(Calendar.DATE, 1);
    Date tomorrow = c.getTime();
    c.add(Calendar.DATE, -2);
    Date yesterday = c.getTime();


    if(garageName != "")
        authenticate(garageName);

    try {
        if (operation.equals("crear y guardar")) {
            r = this.repairService.create(vehicleID);

        } else {
            // else if(operation.equals("BD y guardar")){
            r = this.repairService.findOne(repairID);
        }
        Garage g = this.garageService.findOne(garageID);
        Vehicle v = this.vehicleService.findOne(vehicleID);

        if (entryDate == "Ayer")
            r.setEntryDate(now);
        else if (entryDate == "Mañana")
            r.setEntryDate(tomorrow);
        else
            r.setEntryDate(null);

        if (departureDate == "Hoy")
            r.setDepartureDate(now);
        else if (departureDate == "Ayer")
            r.setDepartureDate(yesterday);

0 个答案:

没有答案