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