Package com.github.ebnew.ki4so.core.authentication

Source Code of com.github.ebnew.ki4so.core.authentication.DefaultAuthenticationPostHandlerTest

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.github.ebnew.ki4so.core.authentication;

import com.github.ebnew.ki4so.core.app.App;
import com.github.ebnew.ki4so.core.app.AppService;
import com.github.ebnew.ki4so.core.authentication.status.UserLoggedStatusStore;
import com.github.ebnew.ki4so.core.exception.NoKi4soKeyException;
import com.github.ebnew.ki4so.core.key.KeyService;
import com.github.ebnew.ki4so.core.key.Ki4soKey;
import com.github.ebnew.ki4so.core.model.EncryCredentialInfo;
import com.github.ebnew.ki4so.web.utils.WebConstants;
import java.util.HashMap;
import java.util.Map;
import junit.framework.Assert;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import org.mockito.Mockito;

/**
*
* @author bidlink
*/
public class DefaultAuthenticationPostHandlerTest {

    private DefaultAuthenticationPostHandler handler;

    public DefaultAuthenticationPostHandlerTest() {
    }

    @BeforeClass
    public static void setUpClass() {

    }

    @AfterClass
    public static void tearDownClass() {
    }

    @Before
    public void setUp() {
        handler = new DefaultAuthenticationPostHandler();
    }

    @After
    public void tearDown() {
    }

    // TODO add test methods here.
    // The methods must be annotated with annotation @Test. For example:
    //
    @Test
    public void testPostAuthentication() {

        /**
         * 测试传入错误参数的情况。
         */
        Authentication authentication = this.handler.postAuthentication(null, null);
        assertNotNull(authentication);
        Assert.assertNull(authentication.getPrincipal());

        /**
         * 测试参数正确的情况,但是ki4so 服务器的app对象为空的情况。
         */
        String username = "test";
        String password = "pwdsssss";
        UsernamePasswordCredential credential = new UsernamePasswordCredential(username, password);
        DefaultUserPrincipal principal = new DefaultUserPrincipal();
        principal.setId(username);
        //设置模拟服务。
        AppService appService = Mockito.mock(AppService.class);
        Mockito.when(appService.findKi4soServerApp()).thenReturn(null);
        this.handler.setAppService(appService);
        try {
            this.handler.postAuthentication(credential, principal);
            fail("应该抛出异常");
        } catch (NoKi4soKeyException e) {

        }

         /**
         * 测试参数正确的情况,但是ki4so 服务器的app对象不为空的情况。
         * 服务对应的key信息不为的正常情况。
         */
        String appId = "1000";
        String app2Id = "1001";
        String keyId = "1000000";
        String encStringValue = "ssssdafdsafdsafdsafdasfdsafdsa";
        String service = "http://loacahost:8080/ki4so-app/home.do";
        Map<String, Object> parameters = new HashMap<String, Object>();
        parameters.put(WebConstants.SERVICE_PARAM_NAME, service);
        credential.setParameters(parameters);
        App app = new App();
        app.setAppId(appId);
       
        App clientApp = new App();
        clientApp.setAppId(app2Id);
       
        Ki4soKey key = new Ki4soKey();
        key.setKeyId(keyId);
       
        Mockito.when(appService.findKi4soServerApp()).thenReturn(app);
        Mockito.when(appService.findAppByHost(service)).thenReturn(clientApp);
        
        KeyService keyService = Mockito.mock(KeyService.class);
        Mockito.when(keyService.findKeyByAppId(appId)).thenReturn(key);
        Mockito.when(keyService.findKeyByAppId(app2Id)).thenReturn(key);
       
        this.handler.setKeyService(keyService);
        EncryCredentialManager encryCredentialManager = Mockito.mock(EncryCredentialManager.class);
        Mockito.when(encryCredentialManager.encrypt(Mockito.any(EncryCredentialInfo.class))).thenReturn(encStringValue);
        this.handler.setEncryCredentialManager(encryCredentialManager);
       
        UserLoggedStatusStore userLoggedStatusStore = Mockito.mock(UserLoggedStatusStore.class);
        this.handler.setUserLoggedStatusStore(userLoggedStatusStore);
       
        authentication = this.handler.postAuthentication(credential, principal);
        assertNotNull(authentication);
    }
}
TOP

Related Classes of com.github.ebnew.ki4so.core.authentication.DefaultAuthenticationPostHandlerTest

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.