1// +build integration
2
3package iam
4
5import (
6	"context"
7	"errors"
8	"testing"
9	"time"
10
11	"github.com/aws/aws-sdk-go-v2/aws"
12	"github.com/aws/aws-sdk-go-v2/service/iam"
13
14	"github.com/aws/aws-sdk-go-v2/service/internal/integrationtest"
15	"github.com/aws/smithy-go"
16)
17
18func TestInteg_00_ListUsers(t *testing.T) {
19	ctx, cancelFn := context.WithTimeout(context.Background(), 5*time.Second)
20	defer cancelFn()
21
22	cfg, err := integrationtest.LoadConfigWithDefaultRegion("us-east-1")
23	if err != nil {
24		t.Fatalf("failed to load config, %v", err)
25	}
26
27	client := iam.NewFromConfig(cfg)
28	params := &iam.ListUsersInput{}
29	_, err = client.ListUsers(ctx, params)
30	if err != nil {
31		t.Errorf("expect no error, got %v", err)
32	}
33}
34
35func TestInteg_01_GetUser(t *testing.T) {
36	ctx, cancelFn := context.WithTimeout(context.Background(), 5*time.Second)
37	defer cancelFn()
38
39	cfg, err := integrationtest.LoadConfigWithDefaultRegion("us-east-1")
40	if err != nil {
41		t.Fatalf("failed to load config, %v", err)
42	}
43
44	client := iam.NewFromConfig(cfg)
45	params := &iam.GetUserInput{
46		UserName: aws.String("fake_user"),
47	}
48	_, err = client.GetUser(ctx, params)
49	if err == nil {
50		t.Fatalf("expect request to fail")
51	}
52
53	var apiErr smithy.APIError
54	if !errors.As(err, &apiErr) {
55		t.Fatalf("expect error to be API error, was not, %v", err)
56	}
57	if len(apiErr.ErrorCode()) == 0 {
58		t.Errorf("expect non-empty error code")
59	}
60	if len(apiErr.ErrorMessage()) == 0 {
61		t.Errorf("expect non-empty error message")
62	}
63}
64