package com.aliyun.odps.account; import org.junit.Assert; import org.junit.Test; import com.aliyun.odps.Column; import com.aliyun.odps.Instance; import com.aliyun.odps.Odps; import com.aliyun.odps.OdpsException; import com.aliyun.odps.OdpsType; import com.aliyun.odps.TableSchema; import com.aliyun.odps.TestBase; import com.aliyun.odps.commons.transport.OdpsTestUtils; import com.aliyun.odps.task.SQLTask; /** * Created by zhenhong.gzh on 16/7/22. */ public class BearerTokenAccountTest extends TestBase { private static String tableName = OdpsTestUtils.getRandomTableName(); private static TableSchema schema = new TableSchema(); private void createTable() throws OdpsException { if (!odps.tables().exists(tableName)) { schema.addColumn(new Column("c1", OdpsType.BIGINT)); schema.addColumn(new Column("c2", OdpsType.BOOLEAN)); schema.addColumn(new Column("c3", OdpsType.DATETIME)); schema.addColumn(new Column("c4", OdpsType.STRING)); tableName = OdpsTestUtils.getRandomTableName(); odps.tables().create(tableName, schema); } } @Test public void testPositive() throws OdpsException { createTable(); String sql = String.format("select count(*) from %s;", tableName); String taskName = "test_sql"; SQLTask task = new SQLTask(); task.setQuery(sql); task.setName(taskName); Instance instance = odps.instances().create(task); instance.waitForSuccess(); String token = odps.logview().generateInstanceToken(instance, 7*24); Odps bearerTokenOdps = new Odps(new BearerTokenAccount(token)); bearerTokenOdps.setDefaultProject(odps.getDefaultProject()); bearerTokenOdps.setEndpoint(odps.getEndpoint()); Instance bearRequestIns = bearerTokenOdps.instances().get(instance.getId()); Assert.assertEquals(instance.getTaskSummary(taskName), bearRequestIns.getTaskSummary(taskName)); Assert.assertEquals(instance.getTaskResults().get(taskName), bearRequestIns.getTaskResults().get(taskName)); odps.tables().delete(taskName, true); } @Test(expected = IllegalArgumentException.class) public void testNegative() throws OdpsException { Account account = new BearerTokenAccount(null); Odps tokenOdps = new Odps(odps); tokenOdps.setAccount(account); tokenOdps.tables().create("test_null", schema); } @Test(expected = OdpsException.class) public void testErrorToken() throws OdpsException { Account account = new BearerTokenAccount("test_error"); Odps tokenOdps = new Odps(odps); tokenOdps.setAccount(account); tokenOdps.tables().create(OdpsTestUtils.getRandomTableName(), schema); } }