Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop #48

Merged
merged 2 commits into from
Jan 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 55 additions & 56 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -1,67 +1,66 @@
name: Deploy to GCE
# name: Deploy to GCE

on:
push:
branches:
- "main"
# on:
# push:
# branches:
# - "main"

env:
ENV_CONFIGURATION: ${{ secrets.ENV_CONFIGURATION }}
TERRAFORM_VARS: ${{ secrets.TERRAFORM_VARS }}
GCP_CREDENTIALS: ${{ secrets.ENCODED_GCP_CREDENTIALS }}
# env:
# ENV_CONFIGURATION: ${{ secrets.ENV_CONFIGURATION }}
# TERRAFORM_VARS: ${{ secrets.TERRAFORM_VARS }}
# GCP_CREDENTIALS: ${{ secrets.ENCODED_GCP_CREDENTIALS }}

jobs:
deploy-flatter-to-gce:
name: Courses Microservice Deployment to GCE
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
# jobs:
# deploy-flatter-to-gce:
# name: Courses Microservice Deployment to GCE
# runs-on: ubuntu-latest
# steps:
# - name: Checkout code
# uses: actions/checkout@v3

- name: Setup Terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_version: 1.4.6
cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }}
terraform_wrapper: false
# - name: Setup Terraform
# uses: hashicorp/setup-terraform@v2
# with:
# terraform_version: 1.4.6
# cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }}
# terraform_wrapper: false

- name: Populate terraform variables
working-directory: ./terraform
run: |-
mkdir .ssh
ssh-keygen -f .ssh/coursesServiceSsh -t rsa -N ""
echo "$GCP_CREDENTIALS" | base64 --decode > GoogleCloudKey.json
echo "$TERRAFORM_VARS" | base64 --decode > terraform.tfvars
echo "$ENV_CONFIGURATION" | base64 --decode > .env.prod
# working-directory: ./terraform
# run: |-
# mkdir .ssh
# ssh-keygen -f .ssh/coursesServiceSsh -t rsa -N ""
# echo "$GCP_CREDENTIALS" | base64 --decode > GoogleCloudKey.json
# echo "$TERRAFORM_VARS" | base64 --decode > terraform.tfvars
# echo "$ENV_CONFIGURATION" | base64 --decode > .env.prod

- name: Terraform Format
id: fmt
run: terraform fmt
continue-on-error: true
working-directory: ./terraform
# - name: Terraform Format
# id: fmt
# run: terraform fmt
# continue-on-error: true
# working-directory: ./terraform

- name: Terraform Init
id: init
run: terraform init
working-directory: ./terraform
# - name: Terraform Init
# id: init
# run: terraform init
# working-directory: ./terraform

- name: Terraform Validate
id: validate
run: terraform validate -no-color
working-directory: ./terraform
# - name: Terraform Validate
# id: validate
# run: terraform validate -no-color
# working-directory: ./terraform

- name: Terraform Destroy
id: destroy
run: terraform destroy -target=google_compute_instance.courses-service-instance -auto-approve -input=false -no-color
working-directory: ./terraform
continue-on-error: true
# - name: Terraform Destroy
# id: destroy
# run: terraform destroy -target=google_compute_instance.courses-service-instance -auto-approve -input=false -no-color
# working-directory: ./terraform
# continue-on-error: true

- name: Terraform Plan
id: plan
run: |
terraform plan -input=false -no-color
working-directory: ./terraform
# - name: Terraform Plan
# id: plan
# run: |
# terraform plan -input=false -no-color
# working-directory: ./terraform

- name: Terraform Apply
run: terraform apply -auto-approve -input=false -no-color
working-directory: ./terraform
# - name: Terraform Apply
# run: terraform apply -auto-approve -input=false -no-color
# working-directory: ./terraform
35 changes: 34 additions & 1 deletion server/__tests__/courses.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,45 @@ import { MongoMemoryServer } from 'mongodb-memory-server';
import mongoose from 'mongoose';
import { Course } from '../db/models/course'
import index from '../test_index';
import {
IUser,
generateToken,
getPayloadFromToken,
getTokenFromRequest,
} from '../utils/jwtUtils';

let mongod: any;

const app = index.app

const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjp7ImZpcnN0TmFtZSI6IkpvaG4iLCJsYXN0TmFtZSI6IkRvZSIsInVzZXJuYW1lIjoiam9obmRvZTEyMyIsImVtYWlsIjoiam9obi5kb2VAZXhhbXBsZS5jb20iLCJwcm9maWxlUGljdHVyZSI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9maXNnNC11c2VyLWltYWdlcy1idWNrZXQvZGVmYXVsdC11c2VyLmpwZyIsImNvaW5zQW1vdW50IjowLCJyb2xlIjoiVVNFUiIsInBsYW4iOiJQUk8ifSwiaWF0IjoxNzA2MDk1OTU1LCJleHAiOjE3MDYxODIzNTV9.uy7VYlJpQ66ZowMRjx0LpKPpn9G2EV8ezRsh3ktIdGY";
enum PlanType {
FREE = 'FREE',
PREMIUM = 'PREMIUM',
PRO = 'PRO',
}

enum UserRole {
USER = 'USER',
ADMIN = 'ADMIN',

}
const user : IUser = {
firstName: 'John',
lastName: 'Doe',
username : "johndoe123",
password : "securepassword",
email: "[email protected]",
role: UserRole.USER,
plan: PlanType.PRO,
}
let token : string;
generateToken(user)
.then((obtained_token) => {
token = obtained_token as string
})
.catch((error) => {
console.error('Error generating token:', error);
});

const setupCourses = async () => {
const sampleCourses = [
Expand Down
54 changes: 32 additions & 22 deletions server/__tests__/reviews.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,44 @@ import mongoose from 'mongoose';
import { Course } from '../db/models/course'
import { Review } from '../db/models/review'
import index from '../test_index';
import axios from 'axios';
import {
IUser,
generateToken,
getPayloadFromToken,
getTokenFromRequest,
} from '../utils/jwtUtils';

async function obtainToken(username: string, password: string): Promise<string> {
const apiUrl = 'https://api.javiercavlop.com/v1/users/login';

const loginCredentials = {
username: username,
password: password,
};

try {
const response = await axios.post(apiUrl, loginCredentials)

const token = response.data.token;
let mongod: any;

return token;
} catch (error) {
return '';
}
enum PlanType {
FREE = 'FREE',
PREMIUM = 'PREMIUM',
PRO = 'PRO',
}

let mongod: any;
enum UserRole {
USER = 'USER',
ADMIN = 'ADMIN',

let token: string;
}
const user : IUser = {
firstName: 'John',
lastName: 'Doe',
username : "johndoe123",
password : "securepassword",
email: "[email protected]",
role: UserRole.USER,
plan: PlanType.PRO,
}

token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjp7ImZpcnN0TmFtZSI6IkpvaG4iLCJsYXN0TmFtZSI6IkRvZSIsInVzZXJuYW1lIjoiam9obmRvZTEyMyIsImVtYWlsIjoiam9obi5kb2VAZXhhbXBsZS5jb20iLCJwcm9maWxlUGljdHVyZSI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9maXNnNC11c2VyLWltYWdlcy1idWNrZXQvZGVmYXVsdC11c2VyLmpwZyIsImNvaW5zQW1vdW50IjowLCJyb2xlIjoiVVNFUiIsInBsYW4iOiJQUk8ifSwiaWF0IjoxNzA2MDk1OTU1LCJleHAiOjE3MDYxODIzNTV9.uy7VYlJpQ66ZowMRjx0LpKPpn9G2EV8ezRsh3ktIdGY";
let token : string;
generateToken(user)
.then((obtained_token) => {
token = obtained_token as string
})
.catch((error) => {
console.error('Error generating token:', error);
});

const app = index.app

Expand Down Expand Up @@ -99,8 +111,6 @@ beforeAll(async () => {

await setupCourses();
await setupReviews();

//token = await obtainToken("johndoe123", "securepassword");
});

afterAll(async () => {
Expand Down