mirror of
https://github.com/google/go-github.git
synced 2026-10-29 00:44:52 +08:00
270 lines
7.3 KiB
Go
270 lines
7.3 KiB
Go
// Copyright 2016 The go-github AUTHORS. All rights reserved.
|
|
//
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package github
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
)
|
|
|
|
func TestAdminService_UpdateUserLDAPMapping(t *testing.T) {
|
|
client, mux, _, teardown := setup()
|
|
defer teardown()
|
|
|
|
input := &UserLDAPMapping{
|
|
LDAPDN: String("uid=asdf,ou=users,dc=github,dc=com"),
|
|
}
|
|
|
|
mux.HandleFunc("/admin/ldap/users/u/mapping", func(w http.ResponseWriter, r *http.Request) {
|
|
v := new(UserLDAPMapping)
|
|
json.NewDecoder(r.Body).Decode(v)
|
|
|
|
testMethod(t, r, "PATCH")
|
|
if !cmp.Equal(v, input) {
|
|
t.Errorf("Request body = %+v, want %+v", v, input)
|
|
}
|
|
fmt.Fprint(w, `{"id":1,"ldap_dn":"uid=asdf,ou=users,dc=github,dc=com"}`)
|
|
})
|
|
|
|
ctx := context.Background()
|
|
mapping, _, err := client.Admin.UpdateUserLDAPMapping(ctx, "u", input)
|
|
if err != nil {
|
|
t.Errorf("Admin.UpdateUserLDAPMapping returned error: %v", err)
|
|
}
|
|
|
|
want := &UserLDAPMapping{
|
|
ID: Int64(1),
|
|
LDAPDN: String("uid=asdf,ou=users,dc=github,dc=com"),
|
|
}
|
|
if !cmp.Equal(mapping, want) {
|
|
t.Errorf("Admin.UpdateUserLDAPMapping returned %+v, want %+v", mapping, want)
|
|
}
|
|
|
|
const methodName = "UpdateUserLDAPMapping"
|
|
testBadOptions(t, methodName, func() (err error) {
|
|
_, _, err = client.Admin.UpdateUserLDAPMapping(ctx, "\n", input)
|
|
return err
|
|
})
|
|
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Admin.UpdateUserLDAPMapping(ctx, "u", input)
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestAdminService_UpdateTeamLDAPMapping(t *testing.T) {
|
|
client, mux, _, teardown := setup()
|
|
defer teardown()
|
|
|
|
input := &TeamLDAPMapping{
|
|
LDAPDN: String("cn=Enterprise Ops,ou=teams,dc=github,dc=com"),
|
|
}
|
|
|
|
mux.HandleFunc("/admin/ldap/teams/1/mapping", func(w http.ResponseWriter, r *http.Request) {
|
|
v := new(TeamLDAPMapping)
|
|
json.NewDecoder(r.Body).Decode(v)
|
|
|
|
testMethod(t, r, "PATCH")
|
|
if !cmp.Equal(v, input) {
|
|
t.Errorf("Request body = %+v, want %+v", v, input)
|
|
}
|
|
fmt.Fprint(w, `{"id":1,"ldap_dn":"cn=Enterprise Ops,ou=teams,dc=github,dc=com"}`)
|
|
})
|
|
|
|
ctx := context.Background()
|
|
mapping, _, err := client.Admin.UpdateTeamLDAPMapping(ctx, 1, input)
|
|
if err != nil {
|
|
t.Errorf("Admin.UpdateTeamLDAPMapping returned error: %v", err)
|
|
}
|
|
|
|
want := &TeamLDAPMapping{
|
|
ID: Int64(1),
|
|
LDAPDN: String("cn=Enterprise Ops,ou=teams,dc=github,dc=com"),
|
|
}
|
|
if !cmp.Equal(mapping, want) {
|
|
t.Errorf("Admin.UpdateTeamLDAPMapping returned %+v, want %+v", mapping, want)
|
|
}
|
|
|
|
const methodName = "UpdateTeamLDAPMapping"
|
|
testBadOptions(t, methodName, func() (err error) {
|
|
_, _, err = client.Admin.UpdateTeamLDAPMapping(ctx, -1, input)
|
|
return err
|
|
})
|
|
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Admin.UpdateTeamLDAPMapping(ctx, 1, input)
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestAdminService_TeamLDAPMapping_String(t *testing.T) {
|
|
v := &TeamLDAPMapping{
|
|
ID: Int64(1),
|
|
LDAPDN: String("a"),
|
|
URL: String("b"),
|
|
Name: String("c"),
|
|
Slug: String("d"),
|
|
Description: String("e"),
|
|
Privacy: String("f"),
|
|
Permission: String("g"),
|
|
MembersURL: String("h"),
|
|
RepositoriesURL: String("i"),
|
|
}
|
|
|
|
want := `github.TeamLDAPMapping{ID:1, LDAPDN:"a", URL:"b", Name:"c", Slug:"d", Description:"e", Privacy:"f", Permission:"g", MembersURL:"h", RepositoriesURL:"i"}`
|
|
if got := v.String(); got != want {
|
|
t.Errorf("TeamLDAPMapping.String = `%v`, want `%v`", got, want)
|
|
}
|
|
}
|
|
|
|
func TestAdminService_UserLDAPMapping_String(t *testing.T) {
|
|
v := &UserLDAPMapping{
|
|
ID: Int64(1),
|
|
LDAPDN: String("a"),
|
|
Login: String("b"),
|
|
AvatarURL: String("c"),
|
|
GravatarID: String("d"),
|
|
Type: String("e"),
|
|
SiteAdmin: Bool(true),
|
|
URL: String("f"),
|
|
EventsURL: String("g"),
|
|
FollowingURL: String("h"),
|
|
FollowersURL: String("i"),
|
|
GistsURL: String("j"),
|
|
OrganizationsURL: String("k"),
|
|
ReceivedEventsURL: String("l"),
|
|
ReposURL: String("m"),
|
|
StarredURL: String("n"),
|
|
SubscriptionsURL: String("o"),
|
|
}
|
|
|
|
want := `github.UserLDAPMapping{ID:1, LDAPDN:"a", Login:"b", AvatarURL:"c", GravatarID:"d", Type:"e", SiteAdmin:true, URL:"f", EventsURL:"g", FollowingURL:"h", FollowersURL:"i", GistsURL:"j", OrganizationsURL:"k", ReceivedEventsURL:"l", ReposURL:"m", StarredURL:"n", SubscriptionsURL:"o"}`
|
|
if got := v.String(); got != want {
|
|
t.Errorf("UserLDAPMapping.String = `%v`, want `%v`", got, want)
|
|
}
|
|
}
|
|
|
|
func TestTeamLDAPMapping_Marshal(t *testing.T) {
|
|
testJSONMarshal(t, &TeamLDAPMapping{}, "{}")
|
|
|
|
u := &TeamLDAPMapping{
|
|
ID: Int64(1),
|
|
LDAPDN: String("ldapdn"),
|
|
URL: String("u"),
|
|
Name: String("n"),
|
|
Slug: String("s"),
|
|
Description: String("d"),
|
|
Privacy: String("p"),
|
|
Permission: String("per"),
|
|
MembersURL: String("mu"),
|
|
RepositoriesURL: String("ru"),
|
|
}
|
|
|
|
want := `{
|
|
"id": 1,
|
|
"ldap_dn": "ldapdn",
|
|
"url": "u",
|
|
"name": "n",
|
|
"slug": "s",
|
|
"description": "d",
|
|
"privacy": "p",
|
|
"permission": "per",
|
|
"members_url": "mu",
|
|
"repositories_url": "ru"
|
|
}`
|
|
|
|
testJSONMarshal(t, u, want)
|
|
}
|
|
|
|
func TestUserLDAPMapping_Marshal(t *testing.T) {
|
|
testJSONMarshal(t, &UserLDAPMapping{}, "{}")
|
|
|
|
u := &UserLDAPMapping{
|
|
ID: Int64(1),
|
|
LDAPDN: String("ldapdn"),
|
|
Login: String("l"),
|
|
AvatarURL: String("au"),
|
|
GravatarID: String("gi"),
|
|
Type: String("t"),
|
|
SiteAdmin: Bool(true),
|
|
URL: String("u"),
|
|
EventsURL: String("eu"),
|
|
FollowingURL: String("fu"),
|
|
FollowersURL: String("fu"),
|
|
GistsURL: String("gu"),
|
|
OrganizationsURL: String("ou"),
|
|
ReceivedEventsURL: String("reu"),
|
|
ReposURL: String("ru"),
|
|
StarredURL: String("su"),
|
|
SubscriptionsURL: String("subu"),
|
|
}
|
|
|
|
want := `{
|
|
"id": 1,
|
|
"ldap_dn": "ldapdn",
|
|
"login": "l",
|
|
"avatar_url": "au",
|
|
"gravatar_id": "gi",
|
|
"type": "t",
|
|
"site_admin": true,
|
|
"url": "u",
|
|
"events_url": "eu",
|
|
"following_url": "fu",
|
|
"followers_url": "fu",
|
|
"gists_url": "gu",
|
|
"organizations_url": "ou",
|
|
"received_events_url": "reu",
|
|
"repos_url": "ru",
|
|
"starred_url": "su",
|
|
"subscriptions_url": "subu"
|
|
}`
|
|
|
|
testJSONMarshal(t, u, want)
|
|
}
|
|
|
|
func TestEnterprise_Marshal(t *testing.T) {
|
|
testJSONMarshal(t, &Enterprise{}, "{}")
|
|
|
|
u := &Enterprise{
|
|
ID: Int(1),
|
|
Slug: String("s"),
|
|
Name: String("n"),
|
|
NodeID: String("nid"),
|
|
AvatarURL: String("au"),
|
|
Description: String("d"),
|
|
WebsiteURL: String("wu"),
|
|
HTMLURL: String("hu"),
|
|
CreatedAt: &Timestamp{referenceTime},
|
|
UpdatedAt: &Timestamp{referenceTime},
|
|
}
|
|
|
|
want := `{
|
|
"id": 1,
|
|
"slug": "s",
|
|
"name": "n",
|
|
"node_id": "nid",
|
|
"avatar_url": "au",
|
|
"description": "d",
|
|
"website_url": "wu",
|
|
"html_url": "hu",
|
|
"created_at": ` + referenceTimeStr + `,
|
|
"updated_at": ` + referenceTimeStr + `
|
|
}`
|
|
|
|
testJSONMarshal(t, u, want)
|
|
}
|