74 lines
1.6 KiB
Go
74 lines
1.6 KiB
Go
package app
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"forge.cadoles.com/Cadoles/emissary/internal/agent/controller/app/spec"
|
|
"forge.cadoles.com/arcad/edge/pkg/app"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func TestCreateResolveAppURL(t *testing.T) {
|
|
specs := &spec.Spec{
|
|
Apps: map[string]spec.AppEntry{
|
|
"app.arcad.test": {
|
|
Address: ":8080",
|
|
},
|
|
"app.arcad.foo": {
|
|
Address: ":8081",
|
|
},
|
|
"app.arcad.bar": {
|
|
Address: ":8082",
|
|
},
|
|
},
|
|
Config: &spec.Config{
|
|
AppURLResolving: &spec.AppURLResolving{
|
|
IfaceMappings: map[string]string{
|
|
"lo": "http://{{ .DeviceIP }}:{{ .AppPort }}",
|
|
"does-not-exists": "http://{{ .DeviceIP }}:{{ .AppPort }}",
|
|
},
|
|
DefaultURLTemplate: `http://{{ last ( splitList "." ( toString .Manifest.ID ) ) }}.arcad.local`,
|
|
},
|
|
},
|
|
}
|
|
|
|
resolveAppURL, err := createResolveAppURL(specs)
|
|
if err != nil {
|
|
t.Fatalf("%+v", errors.WithStack(err))
|
|
}
|
|
|
|
manifest := &app.Manifest{
|
|
ID: "app.arcad.test",
|
|
}
|
|
|
|
ctx := context.Background()
|
|
|
|
url, err := resolveAppURL(ctx, manifest, "127.0.0.2")
|
|
if err != nil {
|
|
t.Fatalf("%+v", errors.WithStack(err))
|
|
}
|
|
|
|
if e, g := "http://127.0.0.1:8080", url; e != g {
|
|
t.Errorf("url: expected '%s', got '%s", e, g)
|
|
}
|
|
|
|
url, err = resolveAppURL(ctx, manifest, "")
|
|
if err != nil {
|
|
t.Fatalf("%+v", errors.WithStack(err))
|
|
}
|
|
|
|
if e, g := "http://test.arcad.local", url; e != g {
|
|
t.Errorf("url: expected '%s', got '%s", e, g)
|
|
}
|
|
|
|
url, err = resolveAppURL(ctx, manifest, "192.168.0.100")
|
|
if err != nil {
|
|
t.Fatalf("%+v", errors.WithStack(err))
|
|
}
|
|
|
|
if e, g := "http://test.arcad.local", url; e != g {
|
|
t.Errorf("url: expected '%s', got '%s", e, g)
|
|
}
|
|
}
|