|
7 | 7 | "path/filepath" |
8 | 8 | "strings" |
9 | 9 | "testing" |
| 10 | + |
| 11 | + "github.com/spf13/cobra" |
10 | 12 | ) |
11 | 13 |
|
12 | 14 | func captureStdout(t *testing.T, fn func() error) (string, error) { |
@@ -136,3 +138,71 @@ func TestCreateNewProviderAlreadyExists(t *testing.T) { |
136 | 138 | t.Fatal("expected error when provider file already exists") |
137 | 139 | } |
138 | 140 | } |
| 141 | + |
| 142 | +func TestCreateNewProviderGetwdFailure(t *testing.T) { |
| 143 | + tmp := t.TempDir() |
| 144 | + wd, _ := os.Getwd() |
| 145 | + t.Cleanup(func() { _ = os.Chdir(wd) }) |
| 146 | + |
| 147 | + if err := os.Chdir(tmp); err != nil { |
| 148 | + t.Fatal(err) |
| 149 | + } |
| 150 | + if err := os.RemoveAll(tmp); err != nil { |
| 151 | + t.Fatal(err) |
| 152 | + } |
| 153 | + |
| 154 | + if err := createNewProvider("auth", ""); err == nil { |
| 155 | + t.Fatal("expected error when cwd cannot be resolved") |
| 156 | + } |
| 157 | +} |
| 158 | + |
| 159 | +func TestCreateNewProviderRunE(t *testing.T) { |
| 160 | + tmp := t.TempDir() |
| 161 | + wd, _ := os.Getwd() |
| 162 | + t.Cleanup(func() { _ = os.Chdir(wd) }) |
| 163 | + if err := os.Chdir(tmp); err != nil { |
| 164 | + t.Fatal(err) |
| 165 | + } |
| 166 | + |
| 167 | + moduleDir := filepath.Join(tmp, "internal", "modules", "users") |
| 168 | + if err := os.MkdirAll(moduleDir, 0o750); err != nil { |
| 169 | + t.Fatal(err) |
| 170 | + } |
| 171 | + if err := os.WriteFile(filepath.Join(moduleDir, "module.go"), []byte("package users\n"), 0o600); err != nil { |
| 172 | + t.Fatal(err) |
| 173 | + } |
| 174 | + |
| 175 | + cmd := &cobra.Command{} |
| 176 | + cmd.Flags().String("module", "", "") |
| 177 | + if err := cmd.Flags().Set("module", "users"); err != nil { |
| 178 | + t.Fatal(err) |
| 179 | + } |
| 180 | + if err := newProviderCmd.RunE(cmd, []string{"billing"}); err != nil { |
| 181 | + t.Fatalf("RunE failed: %v", err) |
| 182 | + } |
| 183 | +} |
| 184 | + |
| 185 | +func TestCreateNewProviderCreateFileFailure(t *testing.T) { |
| 186 | + tmp := t.TempDir() |
| 187 | + wd, _ := os.Getwd() |
| 188 | + t.Cleanup(func() { _ = os.Chdir(wd) }) |
| 189 | + if err := os.Chdir(tmp); err != nil { |
| 190 | + t.Fatal(err) |
| 191 | + } |
| 192 | + |
| 193 | + moduleDir := filepath.Join(tmp, "internal", "modules", "users") |
| 194 | + if err := os.MkdirAll(moduleDir, 0o750); err != nil { |
| 195 | + t.Fatal(err) |
| 196 | + } |
| 197 | + if err := os.WriteFile(filepath.Join(moduleDir, "module.go"), []byte("package users\n"), 0o600); err != nil { |
| 198 | + t.Fatal(err) |
| 199 | + } |
| 200 | + if err := os.Chmod(moduleDir, 0o500); err != nil { |
| 201 | + t.Fatal(err) |
| 202 | + } |
| 203 | + t.Cleanup(func() { _ = os.Chmod(moduleDir, 0o750) }) |
| 204 | + |
| 205 | + if err := createNewProvider("auth", "users"); err == nil { |
| 206 | + t.Fatal("expected error when provider file cannot be created") |
| 207 | + } |
| 208 | +} |
0 commit comments