mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-10-28 07:41:27 +00:00
--token (or RAILWAY_TOKEN) reads the Railway project via backboard GraphQL: services resolve to git-repo or image services with command + replicas, variables and service/custom domains follow. --dry-run prints the plan; --into targets an existing project. Both account (Bearer) and project tokens (Project-Access-Token header) work. Generated with [Devin](https://devin.ai) Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package commands
|
|
|
|
import "testing"
|
|
|
|
func TestRailwayRepoURL(t *testing.T) {
|
|
cases := map[string]string{
|
|
"owner/repo": "https://github.com/owner/repo",
|
|
"https://gitlab.com/a/b": "https://gitlab.com/a/b",
|
|
"[email protected]:a/b.git": "[email protected]:a/b.git",
|
|
"": "",
|
|
"-": "",
|
|
" spaced/x ": "https://github.com/spaced/x",
|
|
}
|
|
for in, want := range cases {
|
|
if got := railwayRepoURL(in); got != want {
|
|
t.Errorf("railwayRepoURL(%q) = %q, want %q", in, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestEdgesOf(t *testing.T) {
|
|
obj := map[string]interface{}{
|
|
"services": map[string]interface{}{
|
|
"edges": []interface{}{
|
|
map[string]interface{}{"node": map[string]interface{}{"id": "a", "name": "web"}},
|
|
map[string]interface{}{"node": map[string]interface{}{"id": "b", "name": "api"}},
|
|
},
|
|
},
|
|
}
|
|
nodes := edgesOf(obj, "services")
|
|
if len(nodes) != 2 || str(nodes[0], "name") != "web" {
|
|
t.Fatalf("edgesOf returned %+v", nodes)
|
|
}
|
|
if got := edgesOf(obj, "missing"); len(got) != 0 {
|
|
t.Fatalf("edgesOf(missing) = %+v, want empty", got)
|
|
}
|
|
if got := edgesOf(map[string]interface{}{"services": nil}, "services"); len(got) != 0 {
|
|
t.Fatalf("edgesOf(nil conn) = %+v, want empty", got)
|
|
}
|
|
}
|