OverviewFilesCommitsIssuesDocsReleasesPeers

pear-git / test / test-auth.js

49 lines · javascript ref:
#!/usr/bin/env bare

await import('bare-node-runtime/global')

import Corestore from 'corestore'
import Hyperbee from 'hyperbee'
import { AuthManager } from './lib/auth.js'

const userId = process.argv[2] || 'e6be384768f2b183dccc5e163a5daec6'

console.log(`Testing authentication for user: ${userId}`)

const storage = './pear-git-storage'
const store = new Corestore(storage)
const registryCore = store.get({ name: 'registry' })
const registry = new Hyperbee(registryCore, {
  keyEncoding: 'utf-8',
  valueEncoding: 'json'
})

await registry.ready()

// Get user directly
const userEntry = await registry.get(`user:${userId}`)
if (!userEntry) {
  console.error('User not found')
  process.exit(1)
}

const user = userEntry.value
console.log('\nUser from database:')
console.log('  userId:', user.userId)
console.log('  globalPermissions:', user.globalPermissions)
console.log('  repos:', JSON.stringify(user.repos, null, 2))

// Test formatUserPermissions
const authManager = new AuthManager({ registry })

const permissions = authManager.formatUserPermissions(user, null)
console.log('\nFormatted permissions (repoName=null):')
console.log('  ', JSON.stringify(permissions, null, 2))

console.log('\nChecks:')
console.log('  permissions.admin:', permissions.admin)
console.log('  !permissions.admin:', !permissions.admin)
console.log('  Should allow admin access:', permissions.admin === true)

process.exit(0)