initial public release
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
package scan
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDiscoverer_DirectWorkdayURL(t *testing.T) {
|
||||
d := &Discoverer{}
|
||||
out, err := d.Discover(context.Background(),
|
||||
"https://accenture.wd3.myworkdayjobs.com/en-US/AccentureCareers")
|
||||
if err != nil {
|
||||
t.Fatalf("Discover: %v", err)
|
||||
}
|
||||
if out.Host != "https://accenture.wd3.myworkdayjobs.com" {
|
||||
t.Errorf("host = %q", out.Host)
|
||||
}
|
||||
if out.Tenant != "accenture" {
|
||||
t.Errorf("tenant = %q", out.Tenant)
|
||||
}
|
||||
if out.Site != "AccentureCareers" {
|
||||
t.Errorf("site = %q", out.Site)
|
||||
}
|
||||
if out.Source != "url" {
|
||||
t.Errorf("source = %q, want url", out.Source)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDiscoverer_InvalidInput(t *testing.T) {
|
||||
d := &Discoverer{}
|
||||
if _, err := d.Discover(context.Background(), ""); err == nil {
|
||||
t.Fatal("empty input must error")
|
||||
}
|
||||
if _, err := d.Discover(context.Background(), "not a url"); err == nil {
|
||||
t.Fatal("bad url must error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDiscoverer_NoScript_NoMatch(t *testing.T) {
|
||||
d := &Discoverer{}
|
||||
_, err := d.Discover(context.Background(), "https://careers.example.com/jobs")
|
||||
if !errors.Is(err, ErrNoDiscovery) {
|
||||
t.Fatalf("expected ErrNoDiscovery, got %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseDiscoverOutput_PullsWorkdayFromYAML(t *testing.T) {
|
||||
raw := `...some preamble...
|
||||
- name: KPMG
|
||||
careers_url: https://kpmg.wd5.myworkdayjobs.com/Global
|
||||
workday:
|
||||
host: https://kpmg.wd5.myworkdayjobs.com
|
||||
tenant: kpmg
|
||||
site: Global
|
||||
enabled: true`
|
||||
d := parseDiscoverOutput("https://kpmg.com/careers", raw)
|
||||
if d.Host != "https://kpmg.wd5.myworkdayjobs.com" {
|
||||
t.Errorf("host = %q", d.Host)
|
||||
}
|
||||
if d.Tenant != "kpmg" {
|
||||
t.Errorf("tenant = %q", d.Tenant)
|
||||
}
|
||||
if d.Site != "Global" {
|
||||
t.Errorf("site = %q", d.Site)
|
||||
}
|
||||
}
|
||||
|
||||
func TestYAMLSnippet_IncludesAllFields(t *testing.T) {
|
||||
d := WorkdayDiscovery{
|
||||
Host: "https://acme.wd3.myworkdayjobs.com",
|
||||
Tenant: "acme",
|
||||
Site: "Careers",
|
||||
}
|
||||
snip := d.YAMLSnippet("Acme Corp")
|
||||
for _, want := range []string{
|
||||
"name: Acme Corp",
|
||||
"tenant: acme",
|
||||
"site: Careers",
|
||||
"host: https://acme.wd3.myworkdayjobs.com",
|
||||
"enabled: true",
|
||||
} {
|
||||
if !contains(snip, want) {
|
||||
t.Errorf("snippet missing %q: %s", want, snip)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// contains is a thin wrapper so I don't drag strings.Contains into every test.
|
||||
func contains(haystack, needle string) bool {
|
||||
return len(haystack) >= len(needle) && indexOf(haystack, needle) >= 0
|
||||
}
|
||||
|
||||
func indexOf(haystack, needle string) int {
|
||||
for i := 0; i+len(needle) <= len(haystack); i++ {
|
||||
if haystack[i:i+len(needle)] == needle {
|
||||
return i
|
||||
}
|
||||
}
|
||||
return -1
|
||||
}
|
||||
Reference in New Issue
Block a user