npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

supabase-rls-ai-tester

v0.0.1

Published

AI test case generation for RLS policies

Downloads

64

Readme

SupaRAT

Overview

SupaRAT (Supabase Row-Level Security Automated Tester) is a tool that automates the generation and execution of pgTAP test cases for your Supabase Row-Level Security (RLS) policies using AI. It parses existing RLS policies from your Supabase database and generates comprehensive test files to ensure your policies are functioning as intended.

Prerequisites

  • pgTAP - Unit testing framework for PostgreSQL
  • dbdev - Development environment for database projects
  • supabase-test-helpers - Helper functions for testing Supabase policies
  • Claude API Key - Required for AI-generated test cases
  • Bun - A fast all-in-one JavaScript runtime
  • Supabase CLI - Tooling for managing Supabase projects
  • Docker - Containerization platform. Docker must be running to use supabase db test

Environment Variables

Copy the .env.example file to .env and fill in the values from the Supabase dashboard and add your Claude API Key:

cp .env.example .env

Update the .env file with your Supabase database credentials and Claude API Key.

Note: Do not commit your .env file or any secrets to version control.

Dependency Installation

Install the project dependencies using Bun:

bun install

Getting Started

To run the application and generate the automated test cases, cd into the project directory and run:

bun start

This command will:

  1. Connect to your Supabase database using the provided credentials.
  2. Fetch all existing RLS policies.
  3. Generate pgTAP test files for each policy using Claude AI.
  4. Save the test files in the supabase/tests directory.

Running the Tests

After generating the test cases, you can execute them using the Supabase CLI:

npx supabase db test --linked

The --linked flag runs the tests against your remote Supabase project instead of a local database. Make sure you have linked your project first using:

supabase link

Note:

  • You'll need your project's reference ID (or name) and database password from the Supabase dashboard to link your project successfully.

  • This command runs all SQL test files located in the supabase/tests directory.

Contributing

Contributions are welcome! Please open an issue or submit a pull request with your improvements.

License

This project is licensed under the MIT License.