github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/lib/project/new_test.go (about) 1 package projectLib_test 2 3 import ( 4 "os" 5 "strings" 6 "testing" 7 8 "github.com/pterm/pterm" 9 projectLib "github.com/taubyte/tau-cli/lib/project" 10 authClient "github.com/taubyte/tau-cli/singletons/auth_client" 11 "github.com/taubyte/tau-cli/singletons/config" 12 "github.com/taubyte/tau-cli/states" 13 httpClient "github.com/taubyte/tau/clients/http/auth" 14 "gotest.tools/v3/assert" 15 ) 16 17 func unregisterAndDeleteRepository(client *httpClient.Client, fullname string) error { 18 nameSplit := strings.Split(fullname, "/") 19 user := nameSplit[0] 20 name := nameSplit[1] 21 22 config, err := client.GetRepositoryByName(fullname) 23 if err != nil { 24 return err 25 } 26 27 err = client.UnregisterRepository(config.Get().ID()) 28 if err != nil { 29 return err 30 } 31 32 githubClient, err := client.Git().GithubTODO() 33 if err != nil { 34 return err 35 } 36 37 response, err := githubClient.Repositories.Delete(states.Context, user, name) 38 if err != nil { 39 if response != nil { 40 pterm.Info.Printfln("Github response: %#v", *response) 41 } 42 return err 43 } 44 45 return nil 46 } 47 48 func TestNew(t *testing.T) { 49 t.Skip("Heavy test, uses current login which needs to have a delete key") 50 var ( 51 projectName = "tau_test_new_project" 52 description = "a test project for tau" 53 cloneDir = "_assets" 54 user *httpClient.UserData 55 project *httpClient.Project 56 repoData *httpClient.RawRepoDataOuter 57 ) 58 59 // Try to remove 60 os.RemoveAll(cloneDir) 61 62 // Cleanup 63 defer func() { 64 _client, err := authClient.Load() 65 assert.NilError(t, err) 66 67 err = unregisterAndDeleteRepository(_client, repoData.Configuration.Fullname) 68 assert.NilError(t, err) 69 70 err = unregisterAndDeleteRepository(_client, repoData.Code.Fullname) 71 assert.NilError(t, err) 72 73 _, err = project.Delete() 74 assert.NilError(t, err) 75 76 err = os.RemoveAll(cloneDir) 77 assert.NilError(t, err) 78 79 err = config.Projects().Delete(projectName) 80 assert.NilError(t, err) 81 }() 82 83 err := projectLib.New(&projectLib.Project{ 84 Name: projectName, 85 Description: description, 86 Public: false, 87 }, cloneDir, false) 88 assert.NilError(t, err) 89 90 client, err := authClient.Load() 91 assert.NilError(t, err) 92 93 user, err = client.User().Get() 94 assert.NilError(t, err) 95 96 projects, err := client.Projects() 97 assert.NilError(t, err) 98 99 for _, _project := range projects { 100 if _project.Name == projectName { 101 project = _project 102 break 103 } 104 } 105 106 repoData, err = project.Repositories() 107 assert.NilError(t, err) 108 109 // Confirm config read from github is accurate 110 config, err := client.Git().ReadConfig(user.Login, repoData.Configuration.Name) 111 assert.NilError(t, err) 112 113 assert.Equal(t, config.Name, projectName) 114 assert.Equal(t, config.Description, description) 115 assert.Equal(t, config.Notification.Email, user.Email) 116 }