| package main |
| |
| import ( |
| "bytes" |
| "flag" |
| "io/ioutil" |
| "path/filepath" |
| "testing" |
| ) |
| |
| var updateGolden = flag.Bool("update_golden", false, "If true, causes TestAPIs to update golden files") |
| |
| func TestAPIs(t *testing.T) { |
| names := []string{ |
| "arrayofarray-1", |
| "arrayofmapofobjects", |
| "arrayofmapofstrings", |
| "blogger-3", |
| "getwithoutbody", |
| "mapofany", |
| "mapofarrayofobjects", |
| "mapofobjects", |
| "mapofstrings-1", |
| "quotednum", |
| "resource-named-service", // blogger/v3/blogger-api.json + s/BlogUserInfo/Service/ |
| "variants", |
| } |
| for _, name := range names { |
| api, err := apiFromFile(filepath.Join("testdata", name+".json")) |
| if err != nil { |
| t.Errorf("Error loading API testdata/%s.json: %v", name, err) |
| continue |
| } |
| clean, err := api.GenerateCode() |
| if err != nil { |
| t.Errorf("Error generating code for %s: %v", name, err) |
| continue |
| } |
| goldenFile := filepath.Join("testdata", name+".want") |
| if *updateGolden { |
| if err := ioutil.WriteFile(goldenFile, clean, 0644); err != nil { |
| t.Fatal(err) |
| } |
| } |
| want, err := ioutil.ReadFile(goldenFile) |
| if err != nil { |
| t.Error(err) |
| continue |
| } |
| if !bytes.Equal(want, clean) { |
| tf, _ := ioutil.TempFile("", "api-"+name+"-got-json.") |
| tf.Write(clean) |
| tf.Close() |
| t.Errorf("Output for API %s differs: diff -u %s %s", name, goldenFile, tf.Name()) |
| } |
| } |
| } |
| |
| func TestScope(t *testing.T) { |
| tests := [][]string{ |
| { |
| "https://www.googleapis.com/auth/somescope", |
| "SomescopeScope", |
| }, |
| { |
| "https://mail.google.com/somescope", |
| "MailGoogleComSomescopeScope", |
| }, |
| { |
| "https://mail.google.com/", |
| "MailGoogleComScope", |
| }, |
| } |
| for _, test := range tests { |
| if got := scopeIdentifierFromURL(test[0]); got != test[1] { |
| t.Errorf("scopeIdentifierFromURL(%q) got %q, want %q", test[0], got, test[1]) |
| } |
| } |
| } |