/**
 * ============================================================
 * 认证测试脚本 — 验证 API 凭证是否正确
 * ============================================================
 * 
 * 使用方法: node test-auth.js
 * 
 * 仅测试获取 access_token，不执行任何表格操作。
 * 用于快速验证 APP_ID 和 APP_SECRET 是否配置正确。
 */

const { getAccessToken, getSchemas, log, logError } = require("./api-client");
const CONFIG = require("./config");

async function testAuth() {
  console.log("🔐 测试认证配置...\n");
  console.log(`   APP_ID:     ${CONFIG.APP_ID.substring(0, 8)}...`);
  console.log(`   FILE_ID:    ${CONFIG.FILE_ID.substring(0, 8)}...`);
  console.log(`   BASE_URL:   ${CONFIG.BASE_URL}`);
  console.log();

  // Step 1: 测试获取 token
  try {
    const token = await getAccessToken();
    console.log(`✅ Token 获取成功: ${token.substring(0, 20)}...`);
  } catch (err) {
    logError("Token 获取失败", err);
    console.log(
      "\n💡 请检查:\n" +
        "   1. config.js 中的 APP_ID 和 APP_SECRET 是否正确\n" +
        "   2. 应用是否已申请 kso.dbsheet.readwrite 权限\n" +
        "   3. 网络是否可以访问 openapi.wps.cn"
    );
    process.exit(1);
  }

  // Step 2: 测试获取 Schema
  try {
    console.log("\n📄 测试获取文档 Schema...");
    const schemas = await getSchemas();
    console.log(`✅ Schema 获取成功!`);
    console.log(`   文档中已有的工作表:`);

    const sheets = schemas?.data?.sheets || schemas?.sheets || [];
    if (sheets.length === 0) {
      console.log("   (空文档，尚无工作表)");
    } else {
      sheets.forEach((s) => {
        console.log(
          `   - ${s.name} (sheet_id: ${s.sheet_id || s.id}, 字段数: ${
            s.fields?.length || "?"
          })`
        );
      });
    }
  } catch (err) {
    logError("Schema 获取失败", err);
    console.log(
      "\n💡 请检查:\n" +
        "   1. config.js 中的 FILE_ID 是否正确\n" +
        "   2. 应用是否对该文档有读权限\n" +
        "   3. 文档是否已经共享给该应用"
    );
    process.exit(1);
  }

  console.log("\n✅ 认证测试全部通过! 可以安全执行 create-tables.js");
}

testAuth().catch(console.error);
