Contributing
We're so excited you're interested in helping with Authorizer. We are happy to help you get started, even if you don't have any previous open-source experience :blush:
New to Open Source?
- Take a look at How to Contribute to an Open Source Project on GitHub (opens in a new tab)
- Go through the Authorizer Code of Conduct (opens in a new tab)
Where to ask questions?
- Check our Github Issues (opens in a new tab) to see if someone has already answered your question.
- Join our community on Discord (opens in a new tab) and feel free to ask us your questions
As you gain experience with Authorizer, please help answer other people's questions :pray:
What to work on?
You can get started by taking a look at our Github issues (opens in a new tab)
If you find one that looks interesting and no one else is already working on it, comment on that issue and start contributing 🙂.
Please ask as many questions as you need, either directly in the issue or on Discord (opens in a new tab). We're happy to help. :raised_hands:
Contributions that are ALWAYS welcome
- More tests
- Improved Docs
- Improved error messages
- Educational content like blogs, videos, courses
Development Setup
Prerequisites
- OS: Linux or macOS or windows
- Go: Golang (opens in a new tab) >= v1.15
Project Setup for Authorizer core
- Fork the authorizer (opens in a new tab) repository (Skip this step if you have access to repo)
git clone https://github.com/authorizerdev/authorizer.git
cd authorizer
cp .env.sample .env
. Check all the supported env here- Build the code
make clean && make
Note: if you don't have
make
(opens in a new tab), you cancd
intoserver
dir and build using thego build
command - Run binary
./build/server
Testing
Make sure you test before creating PR.
If you want to test for all the databases that authorizer supports you will have to run mongodb
& arangodb
instances locally.
Setup mongodb & arangodb using Docker
docker run --name mongodb -d -p 27017:27017 mongo
docker run --name arangodb -d -p 8529:8529 -e ARANGO_ROOT_PASSWORD=root arangodb/arangodb:3.8.4
Note: If you are not making any changes in db schema / db operations, you can disable those db tests here (opens in a new tab)
If you are adding new resolver,
- create new resolver test file here (opens in a new tab)
Naming convention filename:
resolver_name_test.go
function name:resolverNameTest(s TestSetup, t *testing.T)
- Add your tests here (opens in a new tab)
Command to run tests:
make test
Manual Testing:
For manually testing using graphql playground, you can paste following queries and mutations in your playground and test it
mutation Signup {
signup(
params: {
email: "lakhan@yopmail.com"
password: "test"
confirm_password: "test"
given_name: "lakhan"
}
) {
message
user {
id
family_name
given_name
email
email_verified
}
}
}
mutation ResendEamil {
resend_verify_email(
params: { email: "lakhan@yopmail.com", identifier: "basic_auth_signup" }
) {
message
}
}
query GetVerifyRequests {
_verification_requests {
id
token
expires
identifier
}
}
mutation VerifyEmail {
verify_email(params: { token: "" }) {
access_token
expires_in
user {
id
email
given_name
email_verified
}
}
}
mutation Login {
login(params: { email: "lakhan@yopmail.com", password: "test" }) {
access_token
expires_in
user {
id
family_name
given_name
email
}
}
}
query GetSession {
session {
access_token
expires_in
user {
id
given_name
family_name
email
email_verified
signup_methods
created_at
updated_at
}
}
}
mutation ForgotPassword {
forgot_password(params: { email: "lakhan@yopmail.com" }) {
message
}
}
mutation ResetPassword {
reset_password(
params: { token: "", password: "test", confirm_password: "test" }
) {
message
}
}
mutation UpdateProfile {
update_profile(params: { family_name: "samani" }) {
message
}
}
query GetUsers {
_users {
id
email
email_verified
given_name
family_name
picture
signup_methods
phone_number
}
}
mutation MagicLinkLogin {
magic_link_login(params: { email: "test@yopmail.com" }) {
message
}
}
mutation Logout {
logout {
message
}
}
mutation UpdateUser {
_update_user(
params: {
id: "dafc9400-d603-4ade-997c-83fcd54bbd67"
roles: ["user", "admin"]
}
) {
email
roles
}
}
mutation DeleteUser {
_delete_user(params: { email: "signup.test134523@yopmail.com" }) {
message
}
}