github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/builtin/providers/azurerm/resourceid_test.go (about) 1 package azurerm 2 3 import ( 4 "reflect" 5 "testing" 6 ) 7 8 func TestParseAzureResourceID(t *testing.T) { 9 testCases := []struct { 10 id string 11 expectedResourceID *ResourceID 12 expectError bool 13 }{ 14 { 15 "random", 16 nil, 17 true, 18 }, 19 { 20 "/subscriptions/6d74bdd2-9f84-11e5-9bd9-7831c1c4c038", 21 nil, 22 true, 23 }, 24 { 25 "subscriptions/6d74bdd2-9f84-11e5-9bd9-7831c1c4c038", 26 nil, 27 true, 28 }, 29 { 30 "/subscriptions/6d74bdd2-9f84-11e5-9bd9-7831c1c4c038/resourceGroups/testGroup1", 31 &ResourceID{ 32 SubscriptionID: "6d74bdd2-9f84-11e5-9bd9-7831c1c4c038", 33 ResourceGroup: "testGroup1", 34 Provider: "", 35 Path: map[string]string{}, 36 }, 37 false, 38 }, 39 { 40 "/subscriptions/6d74bdd2-9f84-11e5-9bd9-7831c1c4c038/resourceGroups/testGroup1/providers/Microsoft.Network", 41 &ResourceID{ 42 SubscriptionID: "6d74bdd2-9f84-11e5-9bd9-7831c1c4c038", 43 ResourceGroup: "testGroup1", 44 Provider: "Microsoft.Network", 45 Path: map[string]string{}, 46 }, 47 false, 48 }, 49 { 50 // Missing leading / 51 "subscriptions/6d74bdd2-9f84-11e5-9bd9-7831c1c4c038/resourceGroups/testGroup1/providers/Microsoft.Network/virtualNetworks/virtualNetwork1/", 52 nil, 53 true, 54 }, 55 { 56 "/subscriptions/6d74bdd2-9f84-11e5-9bd9-7831c1c4c038/resourceGroups/testGroup1/providers/Microsoft.Network/virtualNetworks/virtualNetwork1", 57 &ResourceID{ 58 SubscriptionID: "6d74bdd2-9f84-11e5-9bd9-7831c1c4c038", 59 ResourceGroup: "testGroup1", 60 Provider: "Microsoft.Network", 61 Path: map[string]string{ 62 "virtualNetworks": "virtualNetwork1", 63 }, 64 }, 65 false, 66 }, 67 { 68 "/subscriptions/6d74bdd2-9f84-11e5-9bd9-7831c1c4c038/resourceGroups/testGroup1/providers/Microsoft.Network/virtualNetworks/virtualNetwork1?api-version=2006-01-02-preview", 69 &ResourceID{ 70 SubscriptionID: "6d74bdd2-9f84-11e5-9bd9-7831c1c4c038", 71 ResourceGroup: "testGroup1", 72 Provider: "Microsoft.Network", 73 Path: map[string]string{ 74 "virtualNetworks": "virtualNetwork1", 75 }, 76 }, 77 false, 78 }, 79 { 80 "/subscriptions/6d74bdd2-9f84-11e5-9bd9-7831c1c4c038/resourceGroups/testGroup1/providers/Microsoft.Network/virtualNetworks/virtualNetwork1/subnets/publicInstances1?api-version=2006-01-02-preview", 81 &ResourceID{ 82 SubscriptionID: "6d74bdd2-9f84-11e5-9bd9-7831c1c4c038", 83 ResourceGroup: "testGroup1", 84 Provider: "Microsoft.Network", 85 Path: map[string]string{ 86 "virtualNetworks": "virtualNetwork1", 87 "subnets": "publicInstances1", 88 }, 89 }, 90 false, 91 }, 92 { 93 "/subscriptions/34ca515c-4629-458e-bf7c-738d77e0d0ea/resourcegroups/acceptanceTestResourceGroup1/providers/Microsoft.Cdn/profiles/acceptanceTestCdnProfile1", 94 &ResourceID{ 95 SubscriptionID: "34ca515c-4629-458e-bf7c-738d77e0d0ea", 96 ResourceGroup: "acceptanceTestResourceGroup1", 97 Provider: "Microsoft.Cdn", 98 Path: map[string]string{ 99 "profiles": "acceptanceTestCdnProfile1", 100 }, 101 }, 102 false, 103 }, 104 { 105 "/subscriptions/34ca515c-4629-458e-bf7c-738d77e0d0ea/resourceGroups/testGroup1/providers/Microsoft.ServiceBus/namespaces/testNamespace1/topics/testTopic1/subscriptions/testSubscription1", 106 &ResourceID{ 107 SubscriptionID: "34ca515c-4629-458e-bf7c-738d77e0d0ea", 108 ResourceGroup: "testGroup1", 109 Provider: "Microsoft.ServiceBus", 110 Path: map[string]string{ 111 "namespaces": "testNamespace1", 112 "topics": "testTopic1", 113 "subscriptions": "testSubscription1", 114 }, 115 }, 116 false, 117 }, 118 } 119 120 for _, test := range testCases { 121 parsed, err := parseAzureResourceID(test.id) 122 if test.expectError && err != nil { 123 continue 124 } 125 if err != nil { 126 t.Fatalf("Unexpected error: %s", err) 127 } 128 129 if !reflect.DeepEqual(test.expectedResourceID, parsed) { 130 t.Fatalf("Unexpected resource ID:\nExpected: %+v\nGot: %+v\n", test.expectedResourceID, parsed) 131 } 132 } 133 }