Debugging

This commit is contained in:
2022-03-13 07:06:39 +13:00
parent 8bc3cee328
commit dc8de8b4b9
31 changed files with 952 additions and 1040 deletions

View File

@@ -1,50 +1,50 @@
package models
// package models
import (
"github.com/jinzhu/gorm"
)
// import (
// "github.com/jinzhu/gorm"
// )
//Group type
type Group struct {
gorm.Model
Name string
Permissions map[string]bool
Admin bool
Users []string
}
// //Group type
// type Group struct {
// gorm.Model
// Name string
// Permissions map[string]bool
// Admin bool
// Users []string
// }
func NewGroup(Name string) Group {
var group Group
group.Permissions = make(map[string]bool)
return group
}
// func NewGroup(Name string) Group {
// var group Group
// group.Permissions = make(map[string]bool)
// return group
// }
//Create group
func (g *Group) Create() error {
return create(&g)
}
// //Create group
// func (g *Group) Create() error {
// return create(&g)
// }
//Read group
func (g *Group) Read() error {
return read(&g)
// //Read group
// func (g *Group) Read() error {
// return read(&g)
}
// }
//ReadAll groups
func (g *Group) ReadAll() ([]Group, error) {
var groups []Group
var err error
err = readAll(&groups)
return groups, err
}
// //ReadAll groups
// func (g *Group) ReadAll() ([]Group, error) {
// var groups []Group
// var err error
// err = readAll(&groups)
// return groups, err
// }
//Update group
func (g *Group) Update() error {
return update(&g)
}
// //Update group
// func (g *Group) Update() error {
// return update(&g)
// }
//Delete group
func (g *Group) Delete() error {
err := delete(&g)
return err
}
// //Delete group
// func (g *Group) Delete() error {
// err := delete(&g)
// return err
// }

View File

@@ -1,25 +1,25 @@
package models
// package models
import (
"testing"
// import (
// "testing"
"github.com/globalsign/mgo/bson"
)
// "github.com/globalsign/mgo/bson"
// )
func TestCreateGroup(t *testing.T) {
group := NewGroup("test")
group.Users = append(group.Users, bson.NewObjectId())
group.Permissions["test"] = true
t.Log(group.Create())
}
// func TestCreateGroup(t *testing.T) {
// group := NewGroup("test")
// group.Users = append(group.Users, bson.NewObjectId())
// group.Permissions["test"] = true
// t.Log(group.Create())
// }
func TestReadGroup(t *testing.T) {
var group Group
group.Read("name", "test")
t.Log(group)
}
// func TestReadGroup(t *testing.T) {
// var group Group
// group.Read("name", "test")
// t.Log(group)
// }
func TestReadAllGroup(t *testing.T) {
var group Group
t.Log(group.ReadAll())
}
// func TestReadAllGroup(t *testing.T) {
// var group Group
// t.Log(group.ReadAll())
// }

View File

@@ -1,33 +1,27 @@
package models
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/postgres" //
_ "github.com/jinzhu/gorm/dialects/postgres"
"gorm.io/driver/sqlite"
)
const (
host = "localhost"
port = 5432
user = "test"
password = "test"
dbname = "test"
)
// var (
// gormdb, err =
// store = gormstore.New(gormdb, []byte("secret"))
// )
var psqlInfo string
var db *gorm.DB
func init() {
psqlInfo = fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=disable",
host, port, user, password, dbname)
DB()
}
func DB() (*gorm.DB, error) {
if db == nil {
db, err := gorm.Open("postgres", psqlInfo)
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
db.LogMode(true)
return db, err
}

View File

@@ -1,37 +1,42 @@
package models
package models_test
import (
"testing"
"git.technical.kiwi/go/otfe/models"
)
func TestGetSession(t *testing.T) {
GetMongoSession()
func TestGetDB(t *testing.T) {
db, err := models.DB()
if !err || !db {
t.Fail()
}
}
func TestGetCollection(t *testing.T) {
GetCollection("test")
//GetCollection("test")
}
func TestCreate(t *testing.T) {
create("user", &User{Name: "Ale"})
//create("user", &User{Name: "Ale"})
}
func TestReadAll(t *testing.T) {
var u []User
readAll("user", "", nil, &u)
t.Log(u)
//var u []User
//readAll("user", "", nil, &u)
//t.Log(u)
}
func TestRead(t *testing.T) {
var u User
read("user", "name", "Ann", &u)
t.Log(u)
//var u User
//read("user", "name", "Ann", &u)
//t.Log(u)
}
func TestUpdate(t *testing.T) {
update("test", "name", "Ale", &User{Name: "Bob", Email: "z"})
//update("test", "name", "Ale", &User{Name: "Bob", Email: "z"})
}
func TestDelete(t *testing.T) {
t.Log(delete("user", "name", "Ann"))
//t.Log(delete("user", "name", "Ann"))
}

View File

@@ -1,33 +1,33 @@
package models
// package models
import (
"time"
// import (
// "time"
"github.com/jinzhu/gorm"
)
// "github.com/jinzhu/gorm"
// )
//Post model
type Post struct {
gorm.Model
Title string
Author string
Published time.Time
LastEdited time.Time
Content []byte
}
// //Post model
// type Post struct {
// gorm.Model
// Title string
// Author string
// Published time.Time
// LastEdited time.Time
// Content []byte
// }
//Create new post
func (p Post) Create() error {
return create(&p)
}
// //Create new post
// func (p Post) Create() error {
// return create(&p)
// }
func (p *Post) Read() (*Post, error) {
err := read(&p)
return p, err
}
// func (p *Post) Read() (*Post, error) {
// err := read(&p)
// return p, err
// }
func (p Post) ReadAll() ([]Post, error) {
var posts []Post
err := readAll(&posts)
return posts, err
}
// func (p Post) ReadAll() ([]Post, error) {
// var posts []Post
// err := readAll(&posts)
// return posts, err
// }

View File

@@ -4,7 +4,7 @@ import (
"net/http"
"time"
"git.1248.nz/1248/Otfe/misc/cookie"
"git.technical.kiwi/go/otfe/misc/cookie"
"github.com/globalsign/mgo/bson"
"github.com/jinzhu/gorm"
)

View File

@@ -1,51 +1,51 @@
package models
// package models
import (
"net/http"
"testing"
// import (
// "net/http"
// "testing"
"git.1248.nz/1248/Otfe/misc/b64"
"git.1248.nz/1248/Otfe/misc/helpers"
"git.1248.nz/1248/Otfe/misc/rand"
)
// "git.technical.kiwi/go/otfe/misc/b64"
// "git.technical.kiwi/go/otfe/misc/helpers"
// "git.technical.kiwi/go/otfe/misc/rand"
// )
func TestSessionCreate(t *testing.T) {
var s1, s2 Session
s1.ID, _ = rand.B64String(32)
if s1.Create() != nil {
t.Fail()
}
read("session", "_id", s1.ID, &s2)
// func TestSessionCreate(t *testing.T) {
// var s1, s2 Session
// s1.ID, _ = rand.B64String(32)
// if s1.Create() != nil {
// t.Fail()
// }
// read("session", "_id", s1.ID, &s2)
if s1.ID != s2.ID {
t.Fail()
}
}
// if s1.ID != s2.ID {
// t.Fail()
// }
// }
func TestSessionRead(t *testing.T) {
var s1, s2 Session
s1.ID, _ = rand.B64String(32)
if create("session", &s1) != nil {
t.Fatal("Failed to create session")
}
if s2.Read(s1.ID) != nil {
t.Fatal("Failed to read session")
}
if s1.ID != s2.ID {
t.Fatal("Ids don't match")
}
}
// func TestSessionRead(t *testing.T) {
// var s1, s2 Session
// s1.ID, _ = rand.B64String(32)
// if create("session", &s1) != nil {
// t.Fatal("Failed to create session")
// }
// if s2.Read(s1.ID) != nil {
// t.Fatal("Failed to read session")
// }
// if s1.ID != s2.ID {
// t.Fatal("Ids don't match")
// }
// }
func TestGet(t *testing.T) {
DBWipeCollection("session")
var s1, s2 Session
s1.ID, _ = rand.B64String(32)
s1.Create()
c := &http.Cookie{Name: "session",
Value: b64.Encode(s1.ID)}
request, err := http.NewRequest("GET", "/", nil)
helpers.Ok(t, err)
request.AddCookie(c)
s2.Get(request)
helpers.Equals(t, s1, s2)
}
// func TestGet(t *testing.T) {
// DBWipeCollection("session")
// var s1, s2 Session
// s1.ID, _ = rand.B64String(32)
// s1.Create()
// c := &http.Cookie{Name: "session",
// Value: b64.Encode(s1.ID)}
// request, err := http.NewRequest("GET", "/", nil)
// helpers.Ok(t, err)
// request.AddCookie(c)
// s2.Get(request)
// helpers.Equals(t, s1, s2)
// }

View File

@@ -1,80 +1,80 @@
package models
// package models
import (
"errors"
"fmt"
// import (
// "errors"
// "fmt"
"github.com/globalsign/mgo/bson"
)
// "github.com/globalsign/mgo/bson"
// )
//User model
type User struct {
ID bson.ObjectId `bson:"_id,omitempty"`
Email string `bson:"email"`
Name string `bson:"name"`
Username string `bson:"username"`
Password string `bson:"password"`
PrimaryGroup bson.ObjectId `bson:"primarygroup,omitempty"`
Groups []bson.ObjectId `bson:"groups,omitempty"`
Session string
}
// //User model
// type User struct {
// ID bson.ObjectId `bson:"_id,omitempty"`
// Email string `bson:"email"`
// Name string `bson:"name"`
// Username string `bson:"username"`
// Password string `bson:"password"`
// PrimaryGroup bson.ObjectId `bson:"primarygroup,omitempty"`
// Groups []bson.ObjectId `bson:"groups,omitempty"`
// Session string
// }
//Create user
func (u *User) Create() error {
var user User
read("user", "email", u.Email, &user)
if u.Email == user.Email {
return errors.New("Email all ready used")
}
return create("user", &u)
// //Create user
// func (u *User) Create() error {
// var user User
// read("user", "email", u.Email, &user)
// if u.Email == user.Email {
// return errors.New("Email all ready used")
// }
// return create("user", &u)
}
// }
//Read user
func (u *User) Read(key string, value interface{}) error {
err := read("user", key, value, &u)
if err != nil {
return errors.New("User doesn't exist")
}
return nil
}
// //Read user
// func (u *User) Read(key string, value interface{}) error {
// err := read("user", key, value, &u)
// if err != nil {
// return errors.New("User doesn't exist")
// }
// return nil
// }
//ReadAll users
func (u *User) ReadAll() ([]User, error) {
var users []User
var err error
err = readAll("user", "", nil, &users)
return users, err
// //ReadAll users
// func (u *User) ReadAll() ([]User, error) {
// var users []User
// var err error
// err = readAll("user", "", nil, &users)
// return users, err
}
// }
//Update user
func (u *User) Update() error {
return update("user", "_id", u.ID, &u)
}
// //Update user
// func (u *User) Update() error {
// return update("user", "_id", u.ID, &u)
// }
//Delete user
func (u *User) Delete(key string, value string) error {
err := delete("user", key, value)
return err
}
// //Delete user
// func (u *User) Delete(key string, value string) error {
// err := delete("user", key, value)
// return err
// }
//HasPermission check if a given user is admin or has a given permisssion
func (u *User) HasPermission(perm string) bool {
var group Group
//Check primary group
err := group.Read("_id", u.PrimaryGroup)
fmt.Println(group.Admin)
if err == nil && (group.Admin == true || group.Permissions[perm] == true) {
// //HasPermission check if a given user is admin or has a given permisssion
// func (u *User) HasPermission(perm string) bool {
// var group Group
// //Check primary group
// err := group.Read("_id", u.PrimaryGroup)
// fmt.Println(group.Admin)
// if err == nil && (group.Admin == true || group.Permissions[perm] == true) {
return true
}
//Check other groups
for id := range u.Groups {
err = group.Read("_id", id)
if err == nil && (group.Admin || group.Permissions[perm]) {
return true
}
}
return false
}
// return true
// }
// //Check other groups
// for id := range u.Groups {
// err = group.Read("_id", id)
// if err == nil && (group.Admin || group.Permissions[perm]) {
// return true
// }
// }
// return false
// }