From e9f362fed2ec1641ffd69d5994c1733f75649cfc Mon Sep 17 00:00:00 2001
From: yago yudi <yyvf@pm.me>
Date: Fri, 21 Mar 2025 11:58:28 -0300
Subject: [PATCH] refactor: user_test

---
 cmd/group.go          |   6 ++-
 cmd/root.go           |   8 +--
 cmd/user.go           |  20 +++----
 cmd/user/block.go     |   9 ++--
 extras/create_test.go | 112 --------------------------------------
 go.mod                |   3 ++
 go.sum                |   2 +
 model/user_test.go    | 123 ++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 153 insertions(+), 130 deletions(-)
 delete mode 100644 extras/create_test.go
 create mode 100644 model/user_test.go

diff --git a/cmd/group.go b/cmd/group.go
index d3da7ee..49a7be1 100644
--- a/cmd/group.go
+++ b/cmd/group.go
@@ -11,6 +11,8 @@ var groupCmd = &cobra.Command{
 }
 
 func init() {
-	groupCmd.AddCommand(group.CreateCmd)
-	groupCmd.AddCommand(group.DeleteCmd)
+	groupCmd.AddCommand(
+		group.CreateCmd,
+		group.DeleteCmd,
+	)
 }
diff --git a/cmd/root.go b/cmd/root.go
index 475101c..406a0bc 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -28,7 +28,9 @@ func Execute() {
 }
 
 func init() {
-	rootCmd.AddCommand(userCmd)
-	rootCmd.AddCommand(groupCmd)
-	rootCmd.AddCommand(bulkCmd)
+	rootCmd.AddCommand(
+		userCmd,
+		groupCmd,
+		bulkCmd,
+	)
 }
diff --git a/cmd/user.go b/cmd/user.go
index 83497f4..f43617b 100644
--- a/cmd/user.go
+++ b/cmd/user.go
@@ -12,13 +12,15 @@ var userCmd = &cobra.Command{
 }
 
 func init() {
-	userCmd.AddCommand(user.ModCmd)
-	userCmd.AddCommand(user.ShowCmd)
-	userCmd.AddCommand(user.TempCmd)
-	//userCmd.AddCommand(user.BulkCmd)
-	userCmd.AddCommand(user.ResetCmd)
-	userCmd.AddCommand(user.CreateCmd)
-	userCmd.AddCommand(user.RemoveCmd)
-	userCmd.AddCommand(user.BlockCmd)
-	userCmd.AddCommand(user.UnblockCmd)
+	userCmd.AddCommand(
+		user.ModCmd,
+		user.ShowCmd,
+		user.TempCmd,
+		//user.BulkCmd,
+		user.ResetCmd,
+		user.CreateCmd,
+		user.RemoveCmd,
+		user.BlockCmd,
+		user.UnblockCmd,
+	)
 }
diff --git a/cmd/user/block.go b/cmd/user/block.go
index 6255f13..e148992 100644
--- a/cmd/user/block.go
+++ b/cmd/user/block.go
@@ -9,10 +9,11 @@ import (
 )
 
 var BlockCmd = &cobra.Command{
-	Use:   "block [username]",
-	Short: "Block a user",
-	Args:  cobra.ExactArgs(1),
-	RunE:  BlockUserCmd,
+	Use:     "block [username]",
+	Short:   "Block a user",
+	Example: "  useradm block bpt22",
+	Args:    cobra.ExactArgs(1),
+	RunE:    BlockUserCmd,
 }
 
 func BlockUserCmd(cmd *cobra.Command, args []string) error {
diff --git a/extras/create_test.go b/extras/create_test.go
deleted file mode 100644
index 61899cf..0000000
--- a/extras/create_test.go
+++ /dev/null
@@ -1,112 +0,0 @@
-package extras
-
-import (
-	"reflect"
-	"testing"
-
-	"gitlab.c3sl.ufpr.br/tss24/useradm/model"
-)
-
-func assertEqual(t *testing.T, a any, b any) {
-	if !reflect.DeepEqual(a, b) {
-		t.Fatalf("%s != %s", a, b)
-	}
-}
-
-func TestGenLogin(t *testing.T) {
-	assertEqual(t, genLogin("", "20241982", model.Initials, 0), "_")
-	assertEqual(t, genLogin("", "20241982", model.Initials, 1), "_")
-	assertEqual(t, genLogin("", "20241982", model.Initials, 2), "_")
-	assertEqual(t, genLogin("", "20241982", model.Initials, 3), "_")
-
-	assertEqual(t, genLogin("", "20241982", model.FirstName, 0), "_")
-	assertEqual(t, genLogin("", "20241982", model.FirstName, 1), "_")
-	assertEqual(t, genLogin("", "20241982", model.FirstName, 2), "_")
-	assertEqual(t, genLogin("", "20241982", model.FirstName, 3), "_")
-
-	assertEqual(t, genLogin("", "20241982", model.LastName, 0), "_")
-	assertEqual(t, genLogin("", "20241982", model.LastName, 1), "_")
-	assertEqual(t, genLogin("", "20241982", model.LastName, 2), "_")
-	assertEqual(t, genLogin("", "20241982", model.LastName, 3), "_")
-
-	assertEqual(t, genLogin("de", "20241982", model.Initials, 0), "_")
-	assertEqual(t, genLogin("de", "20241982", model.Initials, 1), "_")
-	assertEqual(t, genLogin("de", "20241982", model.Initials, 2), "_")
-	assertEqual(t, genLogin("de", "20241982", model.Initials, 3), "_")
-
-	assertEqual(t, genLogin("de", "20241982", model.FirstName, 0), "_")
-	assertEqual(t, genLogin("de", "20241982", model.FirstName, 1), "_")
-	assertEqual(t, genLogin("de", "20241982", model.FirstName, 2), "_")
-	assertEqual(t, genLogin("de", "20241982", model.FirstName, 3), "_")
-
-	assertEqual(t, genLogin("de", "20241982", model.LastName, 0), "_")
-	assertEqual(t, genLogin("de", "20241982", model.LastName, 1), "_")
-	assertEqual(t, genLogin("de", "20241982", model.LastName, 2), "_")
-	assertEqual(t, genLogin("de", "20241982", model.LastName, 3), "_")
-
-	assertEqual(t, genLogin("da de", "20241982", model.Initials, 0), "_")
-	assertEqual(t, genLogin("da de", "20241982", model.Initials, 1), "_")
-	assertEqual(t, genLogin("da de", "20241982", model.Initials, 2), "_")
-	assertEqual(t, genLogin("da de", "20241982", model.Initials, 3), "_")
-
-	assertEqual(t, genLogin("da de", "20241982", model.FirstName, 0), "_")
-	assertEqual(t, genLogin("da de", "20241982", model.FirstName, 1), "_")
-	assertEqual(t, genLogin("da de", "20241982", model.FirstName, 2), "_")
-	assertEqual(t, genLogin("da de", "20241982", model.FirstName, 3), "_")
-
-	assertEqual(t, genLogin("da de", "20241982", model.LastName, 0), "_")
-	assertEqual(t, genLogin("da de", "20241982", model.LastName, 1), "_")
-	assertEqual(t, genLogin("da de", "20241982", model.LastName, 2), "_")
-	assertEqual(t, genLogin("da de", "20241982", model.LastName, 3), "_")
-
-	assertEqual(t, genLogin("Fabiano", "20241982", model.Initials, 0), "f24")
-	assertEqual(t, genLogin("Fabiano", "20241982", model.Initials, 1), "fa24")
-	assertEqual(t, genLogin("Fabiano", "20241982", model.Initials, 2), "fab24")
-	assertEqual(t, genLogin("Fabiano", "20241982", model.Initials, 3), "fabi24")
-
-	assertEqual(t, genLogin("Fabiano", "20241982", model.FirstName, 0), "fabiano")
-	assertEqual(t, genLogin("Fabiano", "20241982", model.FirstName, 1), "fabiano")
-	assertEqual(t, genLogin("Fabiano", "20241982", model.FirstName, 2), "fabiano")
-	assertEqual(t, genLogin("Fabiano", "20241982", model.FirstName, 3), "fabiano")
-
-	assertEqual(t, genLogin("Fabiano", "20241982", model.LastName, 0), "fabiano")
-	assertEqual(t, genLogin("Fabiano", "20241982", model.LastName, 1), "fabiano")
-	assertEqual(t, genLogin("Fabiano", "20241982", model.LastName, 2), "fabiano")
-	assertEqual(t, genLogin("Fabiano", "20241982", model.LastName, 3), "fabiano")
-
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 0), "faps24")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 1), "faaps24")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 2), "faanps24")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 3), "faanpes24")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 14), "fabiaantunperesouz24")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 18), "fabianantunepereisouza24")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 19), "fabianantunepereirsouza24")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 20), "fabianoantunepereirsouza24")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 21), "fabianoantunespereirsouza24")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 22), "fabianoantunespereirasouza24")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 40), "fabianoantunespereirasouza24")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.Initials, 50), "fabianoantunespereirasouza24")
-
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.FirstName, 0), "fabiano")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.FirstName, 1), "fabianoa")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.FirstName, 2), "fabianoap")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.FirstName, 3), "fabianoaps")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.FirstName, 4), "fabianoanps")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.FirstName, 16), "fabianoantunepereisouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.FirstName, 17), "fabianoantunepereirsouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.FirstName, 18), "fabianoantunespereirsouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.FirstName, 19), "fabianoantunespereirasouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.FirstName, 20), "fabianoantunespereirasouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.FirstName, 50), "fabianoantunespereirasouza")
-
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.LastName, 0), "fapsouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.LastName, 1), "faapsouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.LastName, 2), "faanpsouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.LastName, 3), "faanpesouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.LastName, 15), "fabianantunepereirsouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.LastName, 16), "fabianoantunepereirsouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.LastName, 17), "fabianoantunespereirsouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.LastName, 18), "fabianoantunespereirasouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.LastName, 19), "fabianoantunespereirasouza")
-	assertEqual(t, genLogin("Fabiano Antunes Pereira de Souza", "20241982", model.LastName, 100), "fabianoantunespereirasouza")
-}
diff --git a/go.mod b/go.mod
index 0b1c8cb..eb36d63 100644
--- a/go.mod
+++ b/go.mod
@@ -9,10 +9,13 @@ require (
 
 require (
 	github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect
+	github.com/davecgh/go-spew v1.1.1 // indirect
 	github.com/go-asn1-ber/asn1-ber v1.5.7 // indirect
 	github.com/google/uuid v1.6.0 // indirect
 	github.com/inconshreveable/mousetrap v1.1.0 // indirect
+	github.com/pmezard/go-difflib v1.0.0 // indirect
 	github.com/spf13/pflag v1.0.5 // indirect
+	github.com/stretchr/testify v1.10.0 // indirect
 	golang.org/x/crypto v0.31.0 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 )
diff --git a/go.sum b/go.sum
index 6681d94..5bf2c33 100644
--- a/go.sum
+++ b/go.sum
@@ -47,6 +47,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
 github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
+github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
diff --git a/model/user_test.go b/model/user_test.go
new file mode 100644
index 0000000..a7d4b4a
--- /dev/null
+++ b/model/user_test.go
@@ -0,0 +1,123 @@
+package model
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestGenLogin(t *testing.T) {
+	userTable := []struct {
+		name     string
+		grr      string
+		ltype    LoginType
+		variance int
+		expected string
+	}{
+		{"", "20241982", Initials, 0, "_"},
+		{"", "20241982", Initials, 1, "_"},
+		{"", "20241982", Initials, 2, "_"},
+		{"", "20241982", Initials, 3, "_"},
+
+		{"", "20241982", FirstName, 0, "_"},
+		{"", "20241982", FirstName, 1, "_"},
+		{"", "20241982", FirstName, 2, "_"},
+		{"", "20241982", FirstName, 3, "_"},
+
+		{"", "20241982", LastName, 0, "_"},
+		{"", "20241982", LastName, 1, "_"},
+		{"", "20241982", LastName, 2, "_"},
+		{"", "20241982", LastName, 3, "_"},
+
+		{"de", "20241982", Initials, 0, "_"},
+		{"de", "20241982", Initials, 1, "_"},
+		{"de", "20241982", Initials, 2, "_"},
+		{"de", "20241982", Initials, 3, "_"},
+
+		{"de", "20241982", FirstName, 0, "_"},
+		{"de", "20241982", FirstName, 1, "_"},
+		{"de", "20241982", FirstName, 2, "_"},
+		{"de", "20241982", FirstName, 3, "_"},
+
+		{"de", "20241982", LastName, 0, "_"},
+		{"de", "20241982", LastName, 1, "_"},
+		{"de", "20241982", LastName, 2, "_"},
+		{"de", "20241982", LastName, 3, "_"},
+
+		{"da de", "20241982", Initials, 0, "_"},
+		{"da de", "20241982", Initials, 1, "_"},
+		{"da de", "20241982", Initials, 2, "_"},
+		{"da de", "20241982", Initials, 3, "_"},
+
+		{"da de", "20241982", FirstName, 0, "_"},
+		{"da de", "20241982", FirstName, 1, "_"},
+		{"da de", "20241982", FirstName, 2, "_"},
+		{"da de", "20241982", FirstName, 3, "_"},
+
+		{"da de", "20241982", LastName, 0, "_"},
+		{"da de", "20241982", LastName, 1, "_"},
+		{"da de", "20241982", LastName, 2, "_"},
+		{"da de", "20241982", LastName, 3, "_"},
+
+		{"Fabiano", "20241982", Initials, 0, "f24"},
+		{"Fabiano", "20241982", Initials, 1, "fa24"},
+		{"Fabiano", "20241982", Initials, 2, "fab24"},
+		{"Fabiano", "20241982", Initials, 3, "fabi24"},
+
+		{"Fabiano", "20241982", FirstName, 0, "fabiano"},
+		{"Fabiano", "20241982", FirstName, 1, "fabiano"},
+		{"Fabiano", "20241982", FirstName, 2, "fabiano"},
+		{"Fabiano", "20241982", FirstName, 3, "fabiano"},
+
+		{"Fabiano", "20241982", LastName, 0, "fabiano"},
+		{"Fabiano", "20241982", LastName, 1, "fabiano"},
+		{"Fabiano", "20241982", LastName, 2, "fabiano"},
+		{"Fabiano", "20241982", LastName, 3, "fabiano"},
+
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 0, "faps24"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 1, "faaps24"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 2, "faanps24"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 3, "faanpes24"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 14, "fabiaantunperesouz24"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 18, "fabianantunepereisouza24"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 19, "fabianantunepereirsouza24"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 20, "fabianoantunepereirsouza24"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 21, "fabianoantunespereirsouza24"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 22, "fabianoantunespereirasouza24"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 40, "fabianoantunespereirasouza24"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", Initials, 50, "fabianoantunespereirasouza24"},
+
+		{"Fabiano Antunes Pereira de Souza", "20241982", FirstName, 0, "fabiano"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", FirstName, 1, "fabianoa"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", FirstName, 2, "fabianoap"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", FirstName, 3, "fabianoaps"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", FirstName, 4, "fabianoanps"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", FirstName, 16, "fabianoantunepereisouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", FirstName, 17, "fabianoantunepereirsouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", FirstName, 18, "fabianoantunespereirsouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", FirstName, 19, "fabianoantunespereirasouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", FirstName, 20, "fabianoantunespereirasouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", FirstName, 50, "fabianoantunespereirasouza"},
+
+		{"Fabiano Antunes Pereira de Souza", "20241982", LastName, 0, "fapsouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", LastName, 1, "faapsouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", LastName, 2, "faanpsouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", LastName, 3, "faanpesouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", LastName, 15, "fabianantunepereirsouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", LastName, 16, "fabianoantunepereirsouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", LastName, 17, "fabianoantunespereirsouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", LastName, 18, "fabianoantunespereirasouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", LastName, 19, "fabianoantunespereirasouza"},
+		{"Fabiano Antunes Pereira de Souza", "20241982", LastName, 100, "fabianoantunespereirasouza"},
+	}
+
+	for _, u := range userTable {
+		user := &User{
+			Name:  u.name,
+			GRR:   u.grr,
+			Ltype: u.ltype,
+		}
+		login := user.genLogin(u.variance)
+		assert.Equal(t, u.expected, login)
+	}
+}
-- 
GitLab