Archive: - docker-compose.yml, Dockerfile.playwright - scripts/ (legacy test scripts) - docs/, .test/ (old documentation and tests) - IMPROVEMENT_PROPOSAL.md (superseded by .kilo/) - BROWSER_VISIBILITY.md, README.Docker.md - cleanup-packages.sh, fix-permissions.sh, install-apaw.sh Keep in root: - .kilo/ (active system) - .claude/ (Claude Code runtime) - AGENTS.md (agent reference) - README.md (main documentation) - src/ (utility code) - package.json, tsconfig.json (project config)
221 lines
8.8 KiB
Bash
221 lines
8.8 KiB
Bash
#!/bin/bash
|
||
# Full Gitea API test: create token, create milestone, create issues with comments
|
||
# Usage: ./scripts/full-gitea-test.sh <username> <password>
|
||
|
||
echo "=== Gitea API Full Test ==="
|
||
echo ""
|
||
|
||
# Check arguments
|
||
if [ -z "$1" ] || [ -z "$2" ]; then
|
||
echo "Usage: $0 <username> <password>"
|
||
echo ""
|
||
echo "Example: $0 NW mypassword"
|
||
exit 1
|
||
fi
|
||
|
||
USERNAME="$1"
|
||
PASSWORD="$2"
|
||
API_URL="https://git.softuniq.eu/api/v1"
|
||
OWNER="UniqueSoft"
|
||
REPO="APAW"
|
||
|
||
echo "👤 Username: $USERNAME"
|
||
echo "📦 Repository: $OWNER/$REPO"
|
||
echo ""
|
||
|
||
# Step 1: Create token
|
||
echo "🔑 Step 1: Creating API token..."
|
||
TOKEN_NAME="Pipeline Test $(date +%Y%m%d%H%M%S)"
|
||
|
||
TOKEN_RESPONSE=$(curl -s -X POST \
|
||
-u "$USERNAME:$PASSWORD" \
|
||
-H "Content-Type: application/json" \
|
||
-d "{\"name\":\"$TOKEN_NAME\",\"scopes\":[\"all\"]}" \
|
||
"$API_URL/users/$USERNAME/tokens")
|
||
|
||
# Check for error
|
||
if echo "$TOKEN_RESPONSE" | grep -q '"message"'; then
|
||
ERROR=$(echo "$TOKEN_RESPONSE" | sed 's/.*"message":"\([^"]*\)".*/\1/')
|
||
echo "❌ Failed to create token: $ERROR"
|
||
echo "Response: $TOKEN_RESPONSE"
|
||
exit 1
|
||
fi
|
||
|
||
GITEA_TOKEN=$(echo "$TOKEN_RESPONSE" | sed 's/.*"sha1":"\([^"]*\)".*/\1/' | head -1)
|
||
|
||
if [ ${#GITEA_TOKEN} -lt 10 ]; then
|
||
echo "❌ Failed to extract token"
|
||
echo "Response: $TOKEN_RESPONSE"
|
||
exit 1
|
||
fi
|
||
|
||
echo "✅ Token created: ${GITEA_TOKEN:0:8}..."
|
||
echo ""
|
||
|
||
# Step 2: Verify authentication
|
||
echo "🔐 Step 2: Verifying authentication..."
|
||
WHOAMI=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$API_URL/user")
|
||
LOGIN=$(echo "$WHOAMI" | sed 's/.*"login":"\([^"]*\)".*/\1/')
|
||
if [ -n "$LOGIN" ]; then
|
||
echo "✅ Authenticated as: $LOGIN"
|
||
else
|
||
echo "❌ Authentication failed"
|
||
echo "Response: $WHOAMI"
|
||
exit 1
|
||
fi
|
||
echo ""
|
||
|
||
# Step 3: Create milestone
|
||
echo "🎯 Step 3: Creating milestone..."
|
||
DUE_DATE=$(date -d "+7 days" -Iseconds 2>/dev/null || date -v+7d -Iseconds 2>/dev/null || date -Iseconds)
|
||
|
||
MILESTONE_RESPONSE=$(curl -s -X POST \
|
||
-H "Authorization: token $GITEA_TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d "{
|
||
\"title\": \"Pipeline Integration Test\",
|
||
\"description\": \"Testing agent-manager integration with Gitea API. Created by automated test script.\",
|
||
\"due_on\": \"$DUE_DATE\"
|
||
}" \
|
||
"$API_URL/repos/$OWNER/$REPO/milestones")
|
||
|
||
MILESTONE_ID=$(echo "$MILESTONE_RESPONSE" | sed 's/.*"id":\([0-9]*\).*/\1/' | head -1)
|
||
if [ -n "$MILESTONE_ID" ] && [ "$MILESTONE_ID" -eq "$MILESTONE_ID" ] 2>/dev/null; then
|
||
echo "✅ Milestone created: ID=$MILESTONE_ID"
|
||
else
|
||
echo "❌ Failed to create milestone"
|
||
echo "Response: $MILESTONE_RESPONSE"
|
||
exit 1
|
||
fi
|
||
echo ""
|
||
|
||
# Step 4: Create issues
|
||
echo "📝 Step 4: Creating issues..."
|
||
|
||
create_issue() {
|
||
local TITLE="$1"
|
||
local BODY="$2"
|
||
|
||
# Escape quotes in body
|
||
local ESCAPED_BODY=$(echo "$BODY" | sed 's/"/\\"/g' | tr '\n' ' ')
|
||
|
||
local RESPONSE=$(curl -s -X POST \
|
||
-H "Authorization: token $GITEA_TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d "{
|
||
\"title\": \"$TITLE\",
|
||
\"body\": \"$ESCAPED_BODY\",
|
||
\"milestone\": $MILESTONE_ID
|
||
}" \
|
||
"$API_URL/repos/$OWNER/$REPO/issues")
|
||
|
||
local NUM=$(echo "$RESPONSE" | sed 's/.*"number":\([0-9]*\).*/\1/' | head -1)
|
||
echo "$NUM"
|
||
}
|
||
|
||
# Issue 1
|
||
ISSUE1_BODY='## Описание
|
||
Настроить Gitea API клиент для работы с репозиторием.
|
||
|
||
## Чеклист
|
||
- [x] Создать GiteaClient класс
|
||
- [x] Добавить методы для Issues API
|
||
- [x] Добавить методы для Labels API
|
||
- [x] Добавить методы для Milestones API
|
||
- [ ] Написать документацию
|
||
|
||
## Примечания
|
||
Базовая функциональность готова, нужно дописать JSDoc комментарии.'
|
||
|
||
ISSUE1_NUM=$(create_issue "Setup Gitea Client (Test)" "$ISSUE1_BODY")
|
||
if [ -n "$ISSUE1_NUM" ] && [ "$ISSUE1_NUM" -eq "$ISSUE1_NUM" ] 2>/dev/null; then
|
||
echo "✅ Issue #$ISSUE1_NUM: Setup Gitea Client"
|
||
fi
|
||
|
||
# Issue 2
|
||
ISSUE2_BODY='## Описание
|
||
Реализовать оркестратор пайплайна для управления workflow.
|
||
|
||
## Чеклист
|
||
- [x] Создать класс PipelineRunner
|
||
- [x] Добавить маршрутизацию по статусам
|
||
- [x] Интегрировать логирование в Gitea
|
||
- [x] Добавить подсчёт эффективности
|
||
- [ ] Добавить обработку ошибок
|
||
- [ ] Добавить retry механизм
|
||
|
||
## Примечания
|
||
Основная логика готова, нужно улучшить обработку edge cases.'
|
||
|
||
ISSUE2_NUM=$(create_issue "Implement Pipeline Runner (Test)" "$ISSUE2_BODY")
|
||
if [ -n "$ISSUE2_NUM" ] && [ "$ISSUE2_NUM" -eq "$ISSUE2_NUM" ] 2>/dev/null; then
|
||
echo "✅ Issue #$ISSUE2_NUM: Implement Pipeline Runner"
|
||
fi
|
||
|
||
# Issue 3
|
||
ISSUE3_BODY='## Описание
|
||
Протестировать интеграцию с Gitea API.
|
||
|
||
## Чеклист
|
||
- [x] Unit тесты для GiteaClient
|
||
- [x] Integration тесты для PipelineRunner
|
||
- [ ] E2E тесты с реальным API
|
||
- [ ] Performance тесты
|
||
|
||
## Примечания
|
||
Требуется настройка CI/CD для автоматического запуска тестов.'
|
||
|
||
ISSUE3_NUM=$(create_issue "Test Integration (Test)" "$ISSUE3_BODY")
|
||
if [ -n "$ISSUE3_NUM" ] && [ "$ISSUE3_NUM" -eq "$ISSUE3_NUM" ] 2>/dev/null; then
|
||
echo "✅ Issue #$ISSUE3_NUM: Test Integration"
|
||
fi
|
||
echo ""
|
||
|
||
# Step 5: Add comments
|
||
echo "💬 Step 5: Adding comments..."
|
||
if [ -n "$ISSUE1_NUM" ] && [ "$ISSUE1_NUM" -eq "$ISSUE1_NUM" ] 2>/dev/null; then
|
||
# Progress comment
|
||
curl -s -X POST \
|
||
-H "Authorization: token $GITEA_TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"body": "## ✅ Прогресс\n\nКод готов и протестирован.\n\n### Выполнено\n- ✅ Базовая структура классов\n- ✅ Интеграция с Gitea API\n- ✅ Обработка ошибок\n\n### В процессе\n- 🔄 Документация\n- 🔄 Тесты"}' \
|
||
"$API_URL/repos/$OWNER/$REPO/issues/$ISSUE1_NUM/comments" > /dev/null
|
||
|
||
# Technical details comment
|
||
curl -s -X POST \
|
||
-H "Authorization: token $GITEA_TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"body": "## 📋 Технические детали\n\n### Используемые API endpoints\n\n```\nPOST /repos/{owner}/{repo}/milestones - Создать milestone\nPOST /repos/{owner}/{repo}/issues - Создать issue\nPOST /repos/{owner}/{repo}/issues/{n}/comments - Добавить комментарий\nGET /repos/{owner}/{repo}/labels - Получить labels\n```\n\n### Структура данных\n\n```typescript\ninterface Milestone {\n id: number\n title: string\n state: \"open\" | \"closed\"\n open_issues: number\n closed_issues: number\n}\n```"}' \
|
||
"$API_URL/repos/$OWNER/$REPO/issues/$ISSUE1_NUM/comments" > /dev/null
|
||
|
||
# Results comment
|
||
curl -s -X POST \
|
||
-H "Authorization: token $GITEA_TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"body": "## ✅ Результаты тестирования\n\n| Компонент | Статус |\n|-----------|--------|\n| GiteaClient | ✅ Работает |\n| PipelineRunner | ✅ Работает |\n| Label API | ✅ Работает |\n| Milestone API | ✅ Работает |\n| Comment API | ✅ Работает |\n\n### Метрики\n\n- **Время создания milestone**: ~150ms\n- **Время создания issue**: ~120ms \n- **Время добавления comment**: ~80ms\n\n### Выводы\n\nИнтеграция с Gitea API 1.21+ работает корректно. Все основные функции протестированы.\n\n✅ Тест успешно завершён!"}' \
|
||
"$API_URL/repos/$OWNER/$REPO/issues/$ISSUE1_NUM/comments" > /dev/null
|
||
|
||
echo "✅ Added 3 comments to issue #$ISSUE1_NUM"
|
||
fi
|
||
echo ""
|
||
|
||
# Step 6: Summary
|
||
echo "=========================================="
|
||
echo "📊 Test Results Summary"
|
||
echo "=========================================="
|
||
echo "✅ Token created (saved in GITEA_TOKEN)"
|
||
echo "✅ Milestone: ID=$MILESTONE_ID"
|
||
echo ""
|
||
echo "✅ Issues created:"
|
||
if [ -n "$ISSUE1_NUM" ]; then echo " - #$ISSUE1_NUM: Setup Gitea Client"; fi
|
||
if [ -n "$ISSUE2_NUM" ]; then echo " - #$ISSUE2_NUM: Implement Pipeline Runner"; fi
|
||
if [ -n "$ISSUE3_NUM" ]; then echo " - #$ISSUE3_NUM: Test Integration"; fi
|
||
echo ""
|
||
echo "💬 Comments: 3 added to first issue"
|
||
echo ""
|
||
echo "🔗 View milestone:"
|
||
echo " https://git.softuniq.eu/$OWNER/$REPO/milestone/$MILESTONE_ID"
|
||
echo ""
|
||
echo "🔑 Token for future use:"
|
||
echo " export GITEA_TOKEN=$GITEA_TOKEN"
|
||
echo "" |