1// Copyright 2017 The go-github AUTHORS. All rights reserved.
2//
3// Use of this source code is governed by a BSD-style
4// license that can be found in the LICENSE file.
5
6package github
7
8import (
9	"context"
10	"fmt"
11	"net/http"
12	"reflect"
13	"testing"
14)
15
16func TestOrganizationsService_ListBlockedUsers(t *testing.T) {
17	client, mux, _, teardown := setup()
18	defer teardown()
19
20	mux.HandleFunc("/orgs/o/blocks", func(w http.ResponseWriter, r *http.Request) {
21		testMethod(t, r, "GET")
22		testHeader(t, r, "Accept", mediaTypeBlockUsersPreview)
23		testFormValues(t, r, values{"page": "2"})
24		fmt.Fprint(w, `[{
25			"login": "octocat"
26		}]`)
27	})
28
29	opt := &ListOptions{Page: 2}
30	blockedUsers, _, err := client.Organizations.ListBlockedUsers(context.Background(), "o", opt)
31	if err != nil {
32		t.Errorf("Organizations.ListBlockedUsers returned error: %v", err)
33	}
34
35	want := []*User{{Login: String("octocat")}}
36	if !reflect.DeepEqual(blockedUsers, want) {
37		t.Errorf("Organizations.ListBlockedUsers returned %+v, want %+v", blockedUsers, want)
38	}
39}
40
41func TestOrganizationsService_IsBlocked(t *testing.T) {
42	client, mux, _, teardown := setup()
43	defer teardown()
44
45	mux.HandleFunc("/orgs/o/blocks/u", func(w http.ResponseWriter, r *http.Request) {
46		testMethod(t, r, "GET")
47		testHeader(t, r, "Accept", mediaTypeBlockUsersPreview)
48		w.WriteHeader(http.StatusNoContent)
49	})
50
51	isBlocked, _, err := client.Organizations.IsBlocked(context.Background(), "o", "u")
52	if err != nil {
53		t.Errorf("Organizations.IsBlocked returned error: %v", err)
54	}
55	if want := true; isBlocked != want {
56		t.Errorf("Organizations.IsBlocked returned %+v, want %+v", isBlocked, want)
57	}
58}
59
60func TestOrganizationsService_BlockUser(t *testing.T) {
61	client, mux, _, teardown := setup()
62	defer teardown()
63
64	mux.HandleFunc("/orgs/o/blocks/u", func(w http.ResponseWriter, r *http.Request) {
65		testMethod(t, r, "PUT")
66		testHeader(t, r, "Accept", mediaTypeBlockUsersPreview)
67		w.WriteHeader(http.StatusNoContent)
68	})
69
70	_, err := client.Organizations.BlockUser(context.Background(), "o", "u")
71	if err != nil {
72		t.Errorf("Organizations.BlockUser returned error: %v", err)
73	}
74}
75
76func TestOrganizationsService_UnblockUser(t *testing.T) {
77	client, mux, _, teardown := setup()
78	defer teardown()
79
80	mux.HandleFunc("/orgs/o/blocks/u", func(w http.ResponseWriter, r *http.Request) {
81		testMethod(t, r, "DELETE")
82		testHeader(t, r, "Accept", mediaTypeBlockUsersPreview)
83		w.WriteHeader(http.StatusNoContent)
84	})
85
86	_, err := client.Organizations.UnblockUser(context.Background(), "o", "u")
87	if err != nil {
88		t.Errorf("Organizations.UnblockUser returned error: %v", err)
89	}
90}
91