Files
APAW/archive/scripts/full-gitea-test.sh
¨NW¨ 5a77528b23 refactor: clean up root directory - move deprecated files to archive
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)
2026-04-05 03:52:10 +01:00

221 lines
8.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 ""