You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: rtbs_test.go
    path of file: ./repos/rancher/pkg/agent/clean/adunmigration
    
    the code of the file until where you have to start completion: package adunmigration

import (
	"testing"

	v3 "github.com/rancher/rancher/pkg/apis/management.cattle.io/v3"
	"github.com/stretchr/testify/assert"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

const (
	testGuid                        = "953d82a03d47a5498330293e386dfce1"
	testDn                          = "CN=testuser1,CN=Users,DC=qa,DC=rancher,DC=space"
	testDnLocalName                 = "user-vhhxd"
	testGuidLocalName               = "u-fydcaomakf"
	testDuplicateGuidLocalName      = "u-quuknbiweg"
	testGuidPrincip
    
func TestIdentifyPRTBs(t *testing.T) {
	t.Parallel()

	tests := []struct {
		name                    string
		workunit                migrateUserWorkUnit
		prtbs                   []v3.ProjectRoleTemplateBinding
		wantAdPrtbs             int
		wantDuplicateLocalPrtbs int
	}{
		{
			name:     "Guid-based PRTB referencing Original GUID-based user will be migrated",
			workunit: guidOriginalWorkunit(),
			prtbs: []v3.ProjectRoleTemplateBinding{
				{UserName: testGuidLocalName, UserPrincipalName: testGuidPrincipal},
			},
			wantAdPrtbs:             1,
			wantDuplicateLocalPrtbs: 0,
		},
		{
			name:     "Local-based PRTB referencing Original GUID-based user will not be migrated",
			workunit: guidOriginalWorkunit(),
			prtbs: []v3.ProjectRoleTemplateBinding{
				{UserName: testGuidLocalName, UserPrincipalName: testGuidLocalPrincipal},
			},
			wantAdPrtbs:             0,
			wantDuplicateLocalPrtbs: 0,
		},
		{
			name:     "Guid-based PRTB referencing Duplicate GUID-based user will be migrated",
			workunit: guidOriginalGuidDuplicateWorkunit(),
			prtbs: []v3.ProjectRoleTemplateBinding{
				{UserName: testDuplicateGuidLocalName, UserPrincipalName: testGuidPrincipal},
			},
			wantAdPrtbs:             1,
			wantDuplicateLocalPrtbs: 0,
		},
		{
			name:     "Local-based PRTB referencing Duplicate GUID-based user will be migrated",
			workunit: guidOriginalGuidDuplicateWorkunit(),
			prtbs: []v3.ProjectRoleTemplateBinding{
				{UserName: testDuplicateGuidLocalName, UserPrincipalName: testDuplicateGuidLocalPrincipal},
			},
			wantAdPrtbs:             0,
			wantDuplicateLocalPrtbs: 1,
		},
		{
			name:     "DN-based PRTB referencing Original DN-based user will not be migrated",
			workunit: dnOriginalGuidDuplicateWorkunit(),
			prtbs: []v3.ProjectRoleTemplateBinding{
				{UserName: testDnLocalName, UserPrincipalName: testDnLocalPrincipal},
			},
			wantAdPrtbs:             0,
			wantDuplicateLocalPrtbs: 0,
		},
	}

	for _, test := range tests {
		test := test
		t.Run(test.name, func(t *testing.T) {
			t.Parallel()
			prtbList := v3.ProjectRoleTemplateBindingList{Items: test.prtbs}
			workunitList := []migrateUserWorkUnit{test.workunit}
			identifyPRTBs(&workunitList, &prtbList)

			assert.Equal(t, test.wantAdPrtbs, len(workunitList[0].activeDirectoryPRTBs), "expected AD-based PRTBs must match")
			assert.Equal(t, test.wantDuplicateLocalPrtbs, len(workunitList[0].duplicateLocalPRTBs), "expected duplicate Local-based PRTBs must match")
		})
	}
}