Skip to main content
Glama

mcp-google-sheets

authentication.test.ts6.19 kB
import { FastifyInstance } from 'fastify' import { StatusCodes } from 'http-status-codes' import { initializeDatabase } from '../../../../src/app/database' import { databaseConnection } from '../../../../src/app/database/database-connection' import { setupServer } from '../../../../src/app/server' import { createMockSignInRequest, createMockSignUpRequest, } from '../../../helpers/mocks/authn' let app: FastifyInstance | null = null beforeAll(async () => { await initializeDatabase({ runMigrations: false }) app = await setupServer() }) beforeEach(async () => { await databaseConnection().getRepository('flag').delete({}) await databaseConnection().getRepository('project').delete({}) await databaseConnection().getRepository('platform').delete({}) await databaseConnection().getRepository('user').delete({}) }) afterAll(async () => { await databaseConnection().destroy() await app?.close() }) describe('Authentication API', () => { describe('Sign up Endpoint', () => { it('Adds new user', async () => { // arrange const mockSignUpRequest = createMockSignUpRequest() // act const response = await app?.inject({ method: 'POST', url: '/v1/authentication/sign-up', body: mockSignUpRequest, }) // assert const responseBody = response?.json() expect(response?.statusCode).toBe(StatusCodes.OK) expect(responseBody?.id).toHaveLength(21) expect(responseBody?.created).toBeDefined() expect(responseBody?.updated).toBeDefined() expect(responseBody?.verified).toBe(true) expect(responseBody?.email).toBe(mockSignUpRequest.email.toLocaleLowerCase().trim()) expect(responseBody?.firstName).toBe(mockSignUpRequest.firstName) expect(responseBody?.lastName).toBe(mockSignUpRequest.lastName) expect(responseBody?.trackEvents).toBe(mockSignUpRequest.trackEvents) expect(responseBody?.newsLetter).toBe(mockSignUpRequest.newsLetter) expect(responseBody?.status).toBe('ACTIVE') expect(responseBody?.platformId).toBeDefined() expect(responseBody?.externalId).toBe(null) expect(responseBody?.projectId).toHaveLength(21) expect(responseBody?.token).toBeDefined() }) it('Creates new project for user', async () => { // arrange const mockSignUpRequest = createMockSignUpRequest() // act const response = await app?.inject({ method: 'POST', url: '/v1/authentication/sign-up', body: mockSignUpRequest, }) const responseBody = response?.json() // assert expect(response?.statusCode).toBe(StatusCodes.OK) const project = await databaseConnection() .getRepository('project') .findOneBy({ id: responseBody.projectId, }) expect(project?.ownerId).toBe(responseBody.id) expect(project?.displayName).toBeDefined() expect(project?.platformId).toBeDefined() }) }) describe('Sign in Endpoint', () => { it('Logs in existing users', async () => { // arrange const mockSignUpRequest = createMockSignUpRequest() // First sign up the user const signUpResponse = await app?.inject({ method: 'POST', url: '/v1/authentication/sign-up', body: mockSignUpRequest, }) const signUpBody = signUpResponse?.json() // Then try to sign in const mockSignInRequest = createMockSignInRequest({ email: mockSignUpRequest.email, password: mockSignUpRequest.password, }) // act const response = await app?.inject({ method: 'POST', url: '/v1/authentication/sign-in', body: mockSignInRequest, }) // assert const responseBody = response?.json() expect(response?.statusCode).toBe(StatusCodes.OK) expect(responseBody?.id).toBe(signUpBody.id) expect(responseBody?.email).toBe(mockSignUpRequest.email.toLowerCase().trim()) expect(responseBody?.firstName).toBe(mockSignUpRequest.firstName) expect(responseBody?.lastName).toBe(mockSignUpRequest.lastName) expect(responseBody?.trackEvents).toBe(mockSignUpRequest.trackEvents) expect(responseBody?.newsLetter).toBe(mockSignUpRequest.newsLetter) expect(responseBody?.password).toBeUndefined() expect(responseBody?.status).toBe('ACTIVE') expect(responseBody?.verified).toBe(true) expect(responseBody?.platformId).toBe(signUpBody.platformId) expect(responseBody?.externalId).toBe(null) expect(responseBody?.projectId).toBe(signUpBody.projectId) expect(responseBody?.token).toBeDefined() }) it('Fails if password doesn\'t match', async () => { // arrange const mockSignUpRequest = createMockSignUpRequest() // First sign up the user await app?.inject({ method: 'POST', url: '/v1/authentication/sign-up', body: mockSignUpRequest, }) const mockSignInRequest = createMockSignInRequest({ email: mockSignUpRequest.email, password: 'wrong password', }) // act const response = await app?.inject({ method: 'POST', url: '/v1/authentication/sign-in', body: mockSignInRequest, }) // assert expect(response?.statusCode).toBe(StatusCodes.UNAUTHORIZED) const responseBody = response?.json() expect(responseBody?.code).toBe('INVALID_CREDENTIALS') }) }) })

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server